!
! ********************************************************************
! *                                                                  *
! *  Copyright 2001 Compaq Computer Corporation                      *
! *                                                                  *
! *  COMPAQ Registered in U.S. Patent and Trademark Office.          *
! *                                                                  *
! *  Confidential computer software. Valid license from Compaq or    *
! *  authorized sublicensor required for possession, use or copying. *
! *  Consistent with FAR 12.211 and 12.212, Commercial Computer      *
! *  Software, Computer Software Documentation, and Technical Data   *
! *  for Commercial Items are licensed to the U.S. Government under  *
! *  vendor's standard commercial license.                           *
! *                                                                  *
! ********************************************************************
!
!DEC$ IF .NOT. DEFINED (SHELL32_ )
!DEC$ DEFINE xSHELL32_  
!
!
!
!         *****SHELL32.LIB Interfaces*****
! 
!     This module defines routine interfaces to the Windows APIs
!     for both the 32-bit (_M_IX86) and 64-bit (_M_IA64) versions of the
!     NT4 and WIN2000 operating systems.  
!
!     The base for this version is: 
!
!           Microsoft Platform Software Development Kit (SDK)
!                Win64 Pre-alpha February 2000
!
!     As with the C header files distributed with the SDK, there
!     is only one common set of files for both 64-bit and 32-bit
!     operating systems.
!   
!     Within the Fortran versions of the header files, the
!     following symbols are used to control the compilation.
! 
!     _M_IA64 conditionally compiles items for 64 bit systems.
!     _M_IX86 conditionally compiles items for 32 bit systesm.
!
!     Known problems: 
!
!07-12-00
!
module shell32
use dfwinty
!DEC$OBJCOMMENT LIB:"SHELL32.LIB"
!
INTERFACE 
FUNCTION DragQueryFile( &
        arg1, &
        arg2, &
        arg3, &
        arg4)
USE DFWINTY
  integer(UINT) :: DragQueryFile ! UINT
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'DragQueryFileA' :: DragQueryFile
  integer(HANDLE) arg1 ! HDROP arg1
  integer(UINT) arg2 ! UINT arg2
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: arg3
  character*(*) arg3 ! LPSTR arg3
  integer(UINT) arg4 ! UINT arg4
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION DragQueryPoint( &
        arg1, &
        arg2)
USE DFWINTY
  integer(BOOL) :: DragQueryPoint ! BOOL
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'DragQueryPoint' :: DragQueryPoint
  integer(HANDLE) arg1 ! HDROP arg1
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: arg2
  TYPE (T_POINT) arg2 ! LPPOINT arg2
 END FUNCTION
END INTERFACE
INTERFACE 
   SUBROUTINE DragFinish( &
        arg1)
USE DFWINTY
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'DragFinish' :: DragFinish
  integer(HANDLE) arg1 ! HDROP arg1
 END SUBROUTINE
END INTERFACE
INTERFACE 
   SUBROUTINE DragAcceptFiles( &
        arg1, &
        arg2)
USE DFWINTY
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'DragAcceptFiles' :: DragAcceptFiles
  integer(HANDLE) arg1 ! HWND arg1
  integer(BOOL) arg2 ! BOOL arg2
 END SUBROUTINE
END INTERFACE
INTERFACE 
FUNCTION ShellExecute( &
        hwnd, &
        lpOperation, &
        lpFile, &
        lpParameters, &
        lpDirectory, &
        nShowCmd)
USE DFWINTY
  integer(HANDLE) :: ShellExecute ! HINSTANCE
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'ShellExecuteA' :: ShellExecute
  integer(HANDLE) hwnd ! HWND hwnd
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpOperation
  character*(*) lpOperation ! LPCSTR lpOperation
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpFile
  character*(*) lpFile ! LPCSTR lpFile
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpParameters
  character*(*) lpParameters ! LPCSTR lpParameters
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpDirectory
  character*(*) lpDirectory ! LPCSTR lpDirectory
  integer(SINT) nShowCmd ! INT nShowCmd
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION FindExecutable( &
        lpFile, &
        lpDirectory, &
        lpResult)
USE DFWINTY
  integer(HANDLE) :: FindExecutable ! HINSTANCE
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'FindExecutableA' :: FindExecutable
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpFile
  character*(*) lpFile ! LPCSTR lpFile
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpDirectory
  character*(*) lpDirectory ! LPCSTR lpDirectory
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpResult
  character*(*) lpResult ! LPSTR lpResult
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION ShellAbout( &
        hWnd, &
        szApp, &
        szOtherStuff, &
        hIcon)
USE DFWINTY
  integer(SINT) :: ShellAbout ! INT
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'ShellAboutA' :: ShellAbout
  integer(HANDLE) hWnd ! HWND hWnd
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: szApp
  character*(*) szApp ! LPCSTR szApp
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: szOtherStuff
  character*(*) szOtherStuff ! LPCSTR szOtherStuff
  integer(HANDLE) hIcon ! HICON hIcon
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION DuplicateIcon( &
        hInst, &
        hIcon)
USE DFWINTY
  integer(HANDLE) :: DuplicateIcon ! HICON
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'DuplicateIcon' :: DuplicateIcon
  integer(HANDLE) hInst ! HINSTANCE hInst
  integer(HANDLE) hIcon ! HICON hIcon
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION ExtractAssociatedIcon( &
        hInst, &
        lpIconPath, &
        lpiIcon)
USE DFWINTY
  integer(HANDLE) :: ExtractAssociatedIcon ! HICON
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'ExtractAssociatedIconA' :: ExtractAssociatedIcon
  integer(HANDLE) hInst ! HINSTANCE hInst
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpIconPath
  character*(*) lpIconPath ! LPSTR lpIconPath
  integer(LPWORD) lpiIcon ! LPWORD lpiIcon
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION ExtractIcon( &
        hInst, &
        lpszExeFileName, &
        nIconIndex)
USE DFWINTY
  integer(HANDLE) :: ExtractIcon ! HICON
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'ExtractIconA' :: ExtractIcon
  integer(HANDLE) hInst ! HINSTANCE hInst
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpszExeFileName
  character*(*) lpszExeFileName ! LPCSTR lpszExeFileName
  integer(UINT) nIconIndex ! UINT nIconIndex
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION SHAppBarMessage( &
        dwMessage, &
        pData)
USE DFWINTY
  integer(UINT) :: SHAppBarMessage ! UINT
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'SHAppBarMessage' :: SHAppBarMessage
  integer(DWORD) dwMessage ! DWORD dwMessage
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: pData
  TYPE (T_APPBARDATA) pData ! PAPPBARDATA pData
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION DoEnvironmentSubst( &
        szString, &
        cchString)
USE DFWINTY
  integer(DWORD) :: DoEnvironmentSubst ! DWORD
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'DoEnvironmentSubstA' :: DoEnvironmentSubst
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: szString
  character*(*) szString ! LPSTR szString
  integer(UINT) cchString ! UINT cchString
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION ExtractIconEx( &
        lpszFile, &
        nIconIndex, &
        phiconLarge, &
        phiconSmall, &
        nIcons)
USE DFWINTY
  integer(UINT) :: ExtractIconEx ! UINT
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'ExtractIconExA' :: ExtractIconEx
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpszFile
  character*(*) lpszFile ! LPCSTR lpszFile
  integer(SINT) nIconIndex ! int nIconIndex
  integer(PHANDLE) phiconLarge ! HICON* phiconLarge
  integer(PHANDLE) phiconSmall ! HICON* phiconSmall
  integer(UINT) nIcons ! UINT nIcons
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION SHFileOperation( &
        lpFileOp)
USE DFWINTY
  integer(SINT) :: SHFileOperation ! int
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'SHFileOperationA' :: SHFileOperation
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpFileOp
  TYPE (T_SHFILEOPSTRUCT) lpFileOp ! LPSHFILEOPSTRUCTA lpFileOp
 END FUNCTION
END INTERFACE
INTERFACE 
   SUBROUTINE SHFreeNameMappings( &
        hNameMappings)
USE DFWINTY
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'SHFreeNameMappings' :: SHFreeNameMappings
  integer(HANDLE) hNameMappings ! HANDLE hNameMappings
 END SUBROUTINE
END INTERFACE
INTERFACE 
FUNCTION ShellExecuteEx( &
        lpExecInfo)
USE DFWINTY
  integer(BOOL) :: ShellExecuteEx ! BOOL
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'ShellExecuteExA' :: ShellExecuteEx
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpExecInfo
  TYPE (T_SHELLEXECUTEINFO) lpExecInfo ! LPSHELLEXECUTEINFOA lpExecInfo
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION SHQueryRecycleBin( &
        pszRootPath, &
        pSHQueryRBInfo)
USE DFWINTY
  integer(LONG) :: SHQueryRecycleBin ! HRESULT
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'SHQueryRecycleBinA' :: SHQueryRecycleBin
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: pszRootPath
  character*(*) pszRootPath ! LPCSTR pszRootPath
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: pSHQueryRBInfo
  TYPE (T_SHQUERYRBINFO) pSHQueryRBInfo ! LPSHQUERYRBINFO pSHQueryRBInfo
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION SHEmptyRecycleBin( &
        hwnd, &
        pszRootPath, &
        dwFlags)
USE DFWINTY
  integer(LONG) :: SHEmptyRecycleBin ! HRESULT
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'SHEmptyRecycleBinA' :: SHEmptyRecycleBin
  integer(HANDLE) hwnd ! HWND hwnd
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: pszRootPath
  character*(*) pszRootPath ! LPCSTR pszRootPath
  integer(DWORD) dwFlags ! DWORD dwFlags
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION Shell_NotifyIcon( &
        dwMessage, &
        lpData)
USE DFWINTY
  integer(BOOL) :: Shell_NotifyIcon ! BOOL
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'Shell_NotifyIconA' :: Shell_NotifyIcon
  integer(DWORD) dwMessage ! DWORD dwMessage
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpData
  TYPE (T_NOTIFYICONDATA) lpData ! PNOTIFYICONDATAA lpData
 END FUNCTION
END INTERFACE
INTERFACE SHGetFileInfo
FUNCTION SHGetFileInfo_G1( &
        pszPath, &
        dwFileAttributes, &
        psfi, &
        cbFileInfo, &
        uFlags)
USE DFWINTY
  integer(DWORD_PTR) :: SHGetFileInfo_G1 ! DWORD_PTR
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'SHGetFileInfoA' :: SHGetFileInfo_G1
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: pszPath
  character*(*) pszPath ! LPCSTR pszPath
  integer(DWORD) dwFileAttributes ! DWORD dwFileAttributes
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: psfi
  TYPE (T_SHFILEINFO) psfi ! SHFILEINFOA* psfi
  integer(UINT) cbFileInfo ! UINT cbFileInfo
  integer(UINT) uFlags ! UINT uFlags
 END FUNCTION
FUNCTION SHGetFileInfo_G2( &
        pszPath, &
        dwFileAttributes, &
        psfi, &
        cbFileInfo, &
        uFlags)
USE DFWINTY
  integer(DWORD_PTR) :: SHGetFileInfo_G2 ! DWORD_PTR
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'SHGetFileInfoA' :: SHGetFileInfo_G2
  integer(LPVOID) pszPath ! LPCSTR pszPath
  integer(DWORD) dwFileAttributes ! DWORD dwFileAttributes
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: psfi
  TYPE (T_SHFILEINFO) psfi ! SHFILEINFOA* psfi
  integer(UINT) cbFileInfo ! UINT cbFileInfo
  integer(UINT) uFlags ! UINT uFlags
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION SHGetDiskFreeSpaceEx( &
        pszDirectoryName, &
        pulFreeBytesAvailableToCaller, &
        pulTotalNumberOfBytes, &
        pulTotalNumberOfFreeBytes)
USE DFWINTY
  integer(BOOL) :: SHGetDiskFreeSpaceEx ! BOOL
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'SHGetDiskFreeSpaceExA' :: SHGetDiskFreeSpaceEx
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: pszDirectoryName
  character*(*) pszDirectoryName ! LPCSTR pszDirectoryName
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: pulFreeBytesAvailableToCaller
  TYPE (T_ULARGE_INTEGER)  pulFreeBytesAvailableToCaller ! ULARGE_INTEGER*  pulFreeBytesAvailableToCaller
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: pulTotalNumberOfBytes
  TYPE (T_ULARGE_INTEGER)  pulTotalNumberOfBytes ! ULARGE_INTEGER*  pulTotalNumberOfBytes
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: pulTotalNumberOfFreeBytes
  TYPE (T_ULARGE_INTEGER)  pulTotalNumberOfFreeBytes ! ULARGE_INTEGER*  pulTotalNumberOfFreeBytes
 END FUNCTION
END INTERFACE
INTERFACE SHGetNewLinkInfo
FUNCTION SHGetNewLinkInfo_G1( &
        pszLinkTo, &
        pszDir, &
        pszName, &
        pfMustCopy, &
        uFlags)
USE DFWINTY
  integer(BOOL) :: SHGetNewLinkInfo_G1 ! BOOL
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'SHGetNewLinkInfoA' :: SHGetNewLinkInfo_G1
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: pszLinkTo
  character*(*) pszLinkTo ! LPCSTR pszLinkTo
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: pszDir
  character*(*) pszDir ! LPCSTR pszDir
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: pszName
  character*(*) pszName ! LPSTR pszName
!DEC$ ATTRIBUTES REFERENCE :: pfMustCopy
  integer(BOOL) pfMustCopy ! BOOL* pfMustCopy
  integer(UINT) uFlags ! UINT uFlags
 END FUNCTION
FUNCTION SHGetNewLinkInfo_G2( &
        pszLinkTo, &
        pszDir, &
        pszName, &
        pfMustCopy, &
        uFlags)
USE DFWINTY
  integer(BOOL) :: SHGetNewLinkInfo_G2 ! BOOL
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'SHGetNewLinkInfoA' :: SHGetNewLinkInfo_G2
  integer(LPVOID) pszLinkTo ! LPCSTR pszLinkTo
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: pszDir
  character*(*) pszDir ! LPCSTR pszDir
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: pszName
  character*(*) pszName ! LPSTR pszName
!DEC$ ATTRIBUTES REFERENCE :: pfMustCopy
  integer(BOOL) pfMustCopy ! BOOL* pfMustCopy
  integer(UINT) uFlags ! UINT uFlags
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION SHInvokePrinterCommand( &
        hwnd, &
        uAction, &
        lpBuf1, &
        lpBuf2, &
        fModal)
USE DFWINTY
  integer(BOOL) :: SHInvokePrinterCommand ! BOOL
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'SHInvokePrinterCommandA' :: SHInvokePrinterCommand
  integer(HANDLE) hwnd ! HWND hwnd
  integer(UINT) uAction ! UINT uAction
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpBuf1
  character*(*) lpBuf1 ! LPCSTR lpBuf1
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lpBuf2
  character*(*) lpBuf2 ! LPCSTR lpBuf2
  integer(BOOL) fModal ! BOOL fModal
 END FUNCTION
END INTERFACE
!
end module shell32
!
!DEC$ ENDIF ! /* SHELL32_ */
