!
! ********************************************************************
! *                                                                  *
! *  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 (VERSION_ )
!DEC$ DEFINE xVERSION_  
!
!
!
!         *****VERSION.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 version
use dfwinty
!DEC$OBJCOMMENT LIB:"VERSION.LIB"
!
INTERFACE 
FUNCTION VerFindFile( &
        uFlags, &
        szFileName, &
        szWinDir, &
        szAppDir, &
        szCurDir, &
        lpuCurDirLen, &
        szDestDir, &
        lpuDestDirLen)
USE DFWINTY
  integer(DWORD) :: VerFindFile ! DWORD
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'VerFindFileA' :: VerFindFile
  integer(DWORD) uFlags ! DWORD uFlags
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: szFileName
  character*(*) szFileName ! LPSTR szFileName
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: szWinDir
  character*(*) szWinDir ! LPSTR szWinDir
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: szAppDir
  character*(*) szAppDir ! LPSTR szAppDir
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: szCurDir
  character*(*) szCurDir ! LPSTR szCurDir
  integer(LPUINT) lpuCurDirLen ! PUINT lpuCurDirLen
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: szDestDir
  character*(*) szDestDir ! LPSTR szDestDir
  integer(LPUINT) lpuDestDirLen ! PUINT lpuDestDirLen
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION VerInstallFile( &
        uFlags, &
        szSrcFileName, &
        szDestFileName, &
        szSrcDir, &
        szDestDir, &
        szCurDir, &
        szTmpFile, &
        lpuTmpFileLen)
USE DFWINTY
  integer(DWORD) :: VerInstallFile ! DWORD
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'VerInstallFileA' :: VerInstallFile
  integer(DWORD) uFlags ! DWORD uFlags
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: szSrcFileName
  character*(*) szSrcFileName ! LPSTR szSrcFileName
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: szDestFileName
  character*(*) szDestFileName ! LPSTR szDestFileName
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: szSrcDir
  character*(*) szSrcDir ! LPSTR szSrcDir
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: szDestDir
  character*(*) szDestDir ! LPSTR szDestDir
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: szCurDir
  character*(*) szCurDir ! LPSTR szCurDir
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: szTmpFile
  character*(*) szTmpFile ! LPSTR szTmpFile
  integer(LPUINT) lpuTmpFileLen ! PUINT lpuTmpFileLen
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION GetFileVersionInfoSize( &
        lptstrFilename, &
        lpdwHandle)
USE DFWINTY
  integer(DWORD) :: GetFileVersionInfoSize ! DWORD
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'GetFileVersionInfoSizeA' :: GetFileVersionInfoSize
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lptstrFilename
  character*(*) lptstrFilename ! LPSTR lptstrFilename
  integer(LPDWORD) lpdwHandle ! LPDWORD lpdwHandle
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION GetFileVersionInfo( &
        lptstrFilename, &
        dwHandle, &
        dwLen, &
        lpData)
USE DFWINTY
  integer(BOOL) :: GetFileVersionInfo ! BOOL
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'GetFileVersionInfoA' :: GetFileVersionInfo
!DEC$ ATTRIBUTES REFERENCE, ALLOW_NULL :: lptstrFilename
  character*(*) lptstrFilename ! LPSTR lptstrFilename
  integer(DWORD) dwHandle ! DWORD dwHandle
  integer(DWORD) dwLen ! DWORD dwLen
  integer(LPVOID) lpData ! LPVOID lpData
 END FUNCTION
END INTERFACE
INTERFACE 
FUNCTION VerQueryValue( &
        pBlock, &
        lpSubBlock, &
        lplpBuffer, &
        puLen)
USE DFWINTY
  integer(BOOL) :: VerQueryValue ! BOOL
    !DEC$ ATTRIBUTES DEFAULT, STDCALL, DECORATE, ALIAS:'VerQueryValueA' :: VerQueryValue
  integer(LPVOID) pBlock ! LPVOID pBlock
!DEC$ ATTRIBUTES REFERENCE, IGNORE_LOC, ALLOW_NULL :: lpSubBlock
  character*(*) lpSubBlock ! LPSTR lpSubBlock
!DEC$ ATTRIBUTES REFERENCE, IGNORE_LOC :: lplpBuffer
  integer(LPVOID)  lplpBuffer ! LPVOID*  lplpBuffer
  integer(LPUINT) puLen ! PUINT puLen
 END FUNCTION
END INTERFACE
!
end module version
!
!DEC$ ENDIF ! /* VERSION_ */
