github.com/kbinani/win@v0.3.0/version.go (about)

     1  // This file was automatically generated by https://github.com/kbinani/win/blob/generator/internal/cmd/gen/gen.go
     2  // go run internal/cmd/gen/gen.go
     3  
     4  // +build windows
     5  
     6  package win
     7  
     8  import (
     9  	"unsafe"
    10  )
    11  
    12  var (
    13  	// Library
    14  	libversion uintptr
    15  
    16  	// Functions
    17  	getFileVersionInfoSize uintptr
    18  	getFileVersionInfo     uintptr
    19  	verFindFile            uintptr
    20  	verInstallFile         uintptr
    21  	verQueryValue          uintptr
    22  )
    23  
    24  func init() {
    25  	// Library
    26  	libversion = doLoadLibrary("version.dll")
    27  
    28  	// Functions
    29  	getFileVersionInfoSize = doGetProcAddress(libversion, "GetFileVersionInfoSizeW")
    30  	getFileVersionInfo = doGetProcAddress(libversion, "GetFileVersionInfoW")
    31  	verFindFile = doGetProcAddress(libversion, "VerFindFileW")
    32  	verInstallFile = doGetProcAddress(libversion, "VerInstallFileW")
    33  	verQueryValue = doGetProcAddress(libversion, "VerQueryValueW")
    34  }
    35  
    36  func GetFileVersionInfoSize(lptstrFilename string, lpdwHandle *uint32) DWORD {
    37  	lptstrFilenameStr := unicode16FromString(lptstrFilename)
    38  	ret1 := syscall3(getFileVersionInfoSize, 2,
    39  		uintptr(unsafe.Pointer(&lptstrFilenameStr[0])),
    40  		uintptr(unsafe.Pointer(lpdwHandle)),
    41  		0)
    42  	return DWORD(ret1)
    43  }
    44  
    45  func GetFileVersionInfo(lptstrFilename string, dwHandle DWORD, dwLen DWORD, lpData LPVOID) bool {
    46  	lptstrFilenameStr := unicode16FromString(lptstrFilename)
    47  	ret1 := syscall6(getFileVersionInfo, 4,
    48  		uintptr(unsafe.Pointer(&lptstrFilenameStr[0])),
    49  		uintptr(dwHandle),
    50  		uintptr(dwLen),
    51  		uintptr(unsafe.Pointer(lpData)),
    52  		0,
    53  		0)
    54  	return ret1 != 0
    55  }
    56  
    57  func VerFindFile(uFlags DWORD, szFileName LPWSTR, szWinDir LPWSTR, szAppDir LPWSTR, szCurDir LPWSTR, lpuCurDirLen *uint32, szDestDir LPWSTR, lpuDestDirLen *uint32) DWORD {
    58  	ret1 := syscall9(verFindFile, 8,
    59  		uintptr(uFlags),
    60  		uintptr(unsafe.Pointer(szFileName)),
    61  		uintptr(unsafe.Pointer(szWinDir)),
    62  		uintptr(unsafe.Pointer(szAppDir)),
    63  		uintptr(unsafe.Pointer(szCurDir)),
    64  		uintptr(unsafe.Pointer(lpuCurDirLen)),
    65  		uintptr(unsafe.Pointer(szDestDir)),
    66  		uintptr(unsafe.Pointer(lpuDestDirLen)),
    67  		0)
    68  	return DWORD(ret1)
    69  }
    70  
    71  func VerInstallFile(uFlags DWORD, szSrcFileName LPWSTR, szDestFileName LPWSTR, szSrcDir LPWSTR, szDestDir LPWSTR, szCurDir LPWSTR, szTmpFile LPWSTR, lpuTmpFileLen *uint32) DWORD {
    72  	ret1 := syscall9(verInstallFile, 8,
    73  		uintptr(uFlags),
    74  		uintptr(unsafe.Pointer(szSrcFileName)),
    75  		uintptr(unsafe.Pointer(szDestFileName)),
    76  		uintptr(unsafe.Pointer(szSrcDir)),
    77  		uintptr(unsafe.Pointer(szDestDir)),
    78  		uintptr(unsafe.Pointer(szCurDir)),
    79  		uintptr(unsafe.Pointer(szTmpFile)),
    80  		uintptr(unsafe.Pointer(lpuTmpFileLen)),
    81  		0)
    82  	return DWORD(ret1)
    83  }
    84  
    85  func VerQueryValue(pBlock /*const*/ LPVOID, lpSubBlock string, lplpBuffer *LPVOID, puLen *uint32) bool {
    86  	lpSubBlockStr := unicode16FromString(lpSubBlock)
    87  	ret1 := syscall6(verQueryValue, 4,
    88  		uintptr(unsafe.Pointer(pBlock)),
    89  		uintptr(unsafe.Pointer(&lpSubBlockStr[0])),
    90  		uintptr(unsafe.Pointer(lplpBuffer)),
    91  		uintptr(unsafe.Pointer(puLen)),
    92  		0,
    93  		0)
    94  	return ret1 != 0
    95  }