4e2933c620 2015-04-21 kinaba: /***********************************************************************\ 4e2933c620 2015-04-21 kinaba: * winver.d * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Windows API header module * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Translated from MinGW Windows headers * 4e2933c620 2015-04-21 kinaba: * by Stewart Gordon * 4e2933c620 2015-04-21 kinaba: * * 4e2933c620 2015-04-21 kinaba: * Placed into public domain * 4e2933c620 2015-04-21 kinaba: \***********************************************************************/ c2b7a98c21 2011-02-23 kinaba: module win32.winver; c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: private import win32.windef; 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: // FIXME: type weirdness 4e2933c620 2015-04-21 kinaba: enum { 4e2933c620 2015-04-21 kinaba: VS_FILE_INFO = 16, 4e2933c620 2015-04-21 kinaba: VS_VERSION_INFO = 1, 4e2933c620 2015-04-21 kinaba: VS_USER_DEFINED = 100 4e2933c620 2015-04-21 kinaba: } 4e2933c620 2015-04-21 kinaba: 4e2933c620 2015-04-21 kinaba: enum { 4e2933c620 2015-04-21 kinaba: VS_FFI_SIGNATURE = 0xFEEF04BD, 4e2933c620 2015-04-21 kinaba: VS_FFI_STRUCVERSION = 0x10000, 4e2933c620 2015-04-21 kinaba: VS_FFI_FILEFLAGSMASK = 0x3F 4e2933c620 2015-04-21 kinaba: } c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: enum { 4e2933c620 2015-04-21 kinaba: VS_FF_DEBUG = 1, 4e2933c620 2015-04-21 kinaba: VS_FF_PRERELEASE = 2, 4e2933c620 2015-04-21 kinaba: VS_FF_PATCHED = 4, 4e2933c620 2015-04-21 kinaba: VS_FF_PRIVATEBUILD = 8, 4e2933c620 2015-04-21 kinaba: VS_FF_INFOINFERRED = 16, 4e2933c620 2015-04-21 kinaba: VS_FF_SPECIALBUILD = 32 4e2933c620 2015-04-21 kinaba: } c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: enum { 4e2933c620 2015-04-21 kinaba: VOS_UNKNOWN = 0, 4e2933c620 2015-04-21 kinaba: VOS_DOS = 0x10000, 4e2933c620 2015-04-21 kinaba: VOS_OS216 = 0x20000, 4e2933c620 2015-04-21 kinaba: VOS_OS232 = 0x30000, 4e2933c620 2015-04-21 kinaba: VOS_NT = 0x40000, 4e2933c620 2015-04-21 kinaba: VOS__BASE = 0, 4e2933c620 2015-04-21 kinaba: VOS__WINDOWS16 = 1, 4e2933c620 2015-04-21 kinaba: VOS__PM16 = 2, 4e2933c620 2015-04-21 kinaba: VOS__PM32 = 3, 4e2933c620 2015-04-21 kinaba: VOS__WINDOWS32 = 4, 4e2933c620 2015-04-21 kinaba: VOS_DOS_WINDOWS16 = 0x10001, 4e2933c620 2015-04-21 kinaba: VOS_DOS_WINDOWS32 = 0x10004, 4e2933c620 2015-04-21 kinaba: VOS_OS216_PM16 = 0x20002, 4e2933c620 2015-04-21 kinaba: VOS_OS232_PM32 = 0x30003, 4e2933c620 2015-04-21 kinaba: VOS_NT_WINDOWS32 = 0x40004 4e2933c620 2015-04-21 kinaba: } c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: enum { 4e2933c620 2015-04-21 kinaba: VFT_UNKNOWN = 0, 4e2933c620 2015-04-21 kinaba: VFT_APP = 1, 4e2933c620 2015-04-21 kinaba: VFT_DLL = 2, 4e2933c620 2015-04-21 kinaba: VFT_DRV = 3, 4e2933c620 2015-04-21 kinaba: VFT_FONT = 4, 4e2933c620 2015-04-21 kinaba: VFT_VXD = 5, 4e2933c620 2015-04-21 kinaba: VFT_STATIC_LIB = 7 4e2933c620 2015-04-21 kinaba: } c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: enum { 4e2933c620 2015-04-21 kinaba: VFT2_UNKNOWN = 0, 4e2933c620 2015-04-21 kinaba: VFT2_DRV_PRINTER = 1, 4e2933c620 2015-04-21 kinaba: VFT2_DRV_KEYBOARD = 2, 4e2933c620 2015-04-21 kinaba: VFT2_DRV_LANGUAGE = 3, 4e2933c620 2015-04-21 kinaba: VFT2_DRV_DISPLAY = 4, 4e2933c620 2015-04-21 kinaba: VFT2_DRV_MOUSE = 5, 4e2933c620 2015-04-21 kinaba: VFT2_DRV_NETWORK = 6, 4e2933c620 2015-04-21 kinaba: VFT2_DRV_SYSTEM = 7, 4e2933c620 2015-04-21 kinaba: VFT2_DRV_INSTALLABLE = 8, 4e2933c620 2015-04-21 kinaba: VFT2_DRV_SOUND = 9, 4e2933c620 2015-04-21 kinaba: VFT2_DRV_COMM = 10, 4e2933c620 2015-04-21 kinaba: VFT2_DRV_INPUTMETHOD = 11, 4e2933c620 2015-04-21 kinaba: VFT2_FONT_RASTER = 1, 4e2933c620 2015-04-21 kinaba: VFT2_FONT_VECTOR = 2, 4e2933c620 2015-04-21 kinaba: VFT2_FONT_TRUETYPE = 3 4e2933c620 2015-04-21 kinaba: } c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: VFFF_ISSHAREDFILE = 1 4e2933c620 2015-04-21 kinaba: } c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: VFF_CURNEDEST = 1, 4e2933c620 2015-04-21 kinaba: VFF_FILEINUSE = 2, 4e2933c620 2015-04-21 kinaba: VFF_BUFFTOOSMALL = 4 4e2933c620 2015-04-21 kinaba: } c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: enum : DWORD { 4e2933c620 2015-04-21 kinaba: VIFF_FORCEINSTALL = 1, 4e2933c620 2015-04-21 kinaba: VIFF_DONTDELETEOLD 4e2933c620 2015-04-21 kinaba: } c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: enum { 4e2933c620 2015-04-21 kinaba: VIF_TEMPFILE = 0x00001, 4e2933c620 2015-04-21 kinaba: VIF_MISMATCH = 0x00002, 4e2933c620 2015-04-21 kinaba: VIF_SRCOLD = 0x00004, 4e2933c620 2015-04-21 kinaba: VIF_DIFFLANG = 0x00008, 4e2933c620 2015-04-21 kinaba: VIF_DIFFCODEPG = 0x00010, 4e2933c620 2015-04-21 kinaba: VIF_DIFFTYPE = 0x00020, 4e2933c620 2015-04-21 kinaba: VIF_WRITEPROT = 0x00040, 4e2933c620 2015-04-21 kinaba: VIF_FILEINUSE = 0x00080, 4e2933c620 2015-04-21 kinaba: VIF_OUTOFSPACE = 0x00100, 4e2933c620 2015-04-21 kinaba: VIF_ACCESSVIOLATION = 0x00200, 4e2933c620 2015-04-21 kinaba: VIF_SHARINGVIOLATION = 0x00400, 4e2933c620 2015-04-21 kinaba: VIF_CANNOTCREATE = 0x00800, 4e2933c620 2015-04-21 kinaba: VIF_CANNOTDELETE = 0x01000, 4e2933c620 2015-04-21 kinaba: VIF_CANNOTRENAME = 0x02000, 4e2933c620 2015-04-21 kinaba: VIF_CANNOTDELETECUR = 0x04000, 4e2933c620 2015-04-21 kinaba: VIF_OUTOFMEMORY = 0x08000, 4e2933c620 2015-04-21 kinaba: VIF_CANNOTREADSRC = 0x10000, 4e2933c620 2015-04-21 kinaba: VIF_CANNOTREADDST = 0x20000, 4e2933c620 2015-04-21 kinaba: VIF_BUFFTOOSMALL = 0x40000 4e2933c620 2015-04-21 kinaba: } c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: struct VS_FIXEDFILEINFO { 4e2933c620 2015-04-21 kinaba: DWORD dwSignature; 4e2933c620 2015-04-21 kinaba: DWORD dwStrucVersion; 4e2933c620 2015-04-21 kinaba: DWORD dwFileVersionMS; 4e2933c620 2015-04-21 kinaba: DWORD dwFileVersionLS; 4e2933c620 2015-04-21 kinaba: DWORD dwProductVersionMS; 4e2933c620 2015-04-21 kinaba: DWORD dwProductVersionLS; 4e2933c620 2015-04-21 kinaba: DWORD dwFileFlagsMask; 4e2933c620 2015-04-21 kinaba: DWORD dwFileFlags; 4e2933c620 2015-04-21 kinaba: DWORD dwFileOS; 4e2933c620 2015-04-21 kinaba: DWORD dwFileType; 4e2933c620 2015-04-21 kinaba: DWORD dwFileSubtype; 4e2933c620 2015-04-21 kinaba: DWORD dwFileDateMS; 4e2933c620 2015-04-21 kinaba: DWORD dwFileDateLS; 4e2933c620 2015-04-21 kinaba: } c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: extern (Windows) { 4e2933c620 2015-04-21 kinaba: DWORD VerFindFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPSTR, PUINT, LPSTR, 4e2933c620 2015-04-21 kinaba: PUINT); 4e2933c620 2015-04-21 kinaba: DWORD VerFindFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, PUINT, LPWSTR, 4e2933c620 2015-04-21 kinaba: PUINT); 4e2933c620 2015-04-21 kinaba: DWORD VerInstallFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPSTR, 4e2933c620 2015-04-21 kinaba: PUINT); 4e2933c620 2015-04-21 kinaba: DWORD VerInstallFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, 4e2933c620 2015-04-21 kinaba: LPWSTR, PUINT); 4e2933c620 2015-04-21 kinaba: DWORD GetFileVersionInfoSizeA(LPCSTR, PDWORD); 4e2933c620 2015-04-21 kinaba: DWORD GetFileVersionInfoSizeW(LPCWSTR, PDWORD); 4e2933c620 2015-04-21 kinaba: BOOL GetFileVersionInfoA(LPCSTR, DWORD, DWORD, PVOID); 4e2933c620 2015-04-21 kinaba: BOOL GetFileVersionInfoW(LPCWSTR, DWORD, DWORD, PVOID); 4e2933c620 2015-04-21 kinaba: DWORD VerLanguageNameA(DWORD, LPSTR, DWORD); 4e2933c620 2015-04-21 kinaba: DWORD VerLanguageNameW(DWORD, LPWSTR, DWORD); 4e2933c620 2015-04-21 kinaba: BOOL VerQueryValueA(LPCVOID, LPCSTR, LPVOID*, PUINT); 4e2933c620 2015-04-21 kinaba: BOOL VerQueryValueW(LPCVOID, LPCWSTR, LPVOID*, PUINT); c2b7a98c21 2011-02-23 kinaba: } c2b7a98c21 2011-02-23 kinaba: 4e2933c620 2015-04-21 kinaba: version (Unicode) { 4e2933c620 2015-04-21 kinaba: alias VerFindFileW VerFindFile; 4e2933c620 2015-04-21 kinaba: alias VerQueryValueW VerQueryValue; 4e2933c620 2015-04-21 kinaba: alias VerInstallFileW VerInstallFile; 4e2933c620 2015-04-21 kinaba: alias GetFileVersionInfoSizeW GetFileVersionInfoSize; 4e2933c620 2015-04-21 kinaba: alias GetFileVersionInfoW GetFileVersionInfo; 4e2933c620 2015-04-21 kinaba: alias VerLanguageNameW VerLanguageName; 4e2933c620 2015-04-21 kinaba: alias VerQueryValueW VerQueryValue; 4e2933c620 2015-04-21 kinaba: } else { 4e2933c620 2015-04-21 kinaba: alias VerQueryValueA VerQueryValue; 4e2933c620 2015-04-21 kinaba: alias VerFindFileA VerFindFile; 4e2933c620 2015-04-21 kinaba: alias VerInstallFileA VerInstallFile; 4e2933c620 2015-04-21 kinaba: alias GetFileVersionInfoSizeA GetFileVersionInfoSize; 4e2933c620 2015-04-21 kinaba: alias GetFileVersionInfoA GetFileVersionInfo; 4e2933c620 2015-04-21 kinaba: alias VerLanguageNameA VerLanguageName; 4e2933c620 2015-04-21 kinaba: alias VerQueryValueA VerQueryValue; 4e2933c620 2015-04-21 kinaba: }