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 }