1 /***********************************************************************\ 2 * winver.d * 3 * * 4 * Windows API header module * 5 * * 6 * Translated from MinGW Windows headers * 7 * by Stewart Gordon * 8 * * 9 * Placed into public domain * 10 \***********************************************************************/ 11 module win32.winver; 12 pragma(lib, "version"); 13 14 private import win32.windef; 15 16 // FIXME: type weirdness 17 enum { 18 VS_FILE_INFO = 16, 19 VS_VERSION_INFO = 1, 20 VS_USER_DEFINED = 100 21 } 22 23 enum { 24 VS_FFI_SIGNATURE = 0xFEEF04BD, 25 VS_FFI_STRUCVERSION = 0x10000, 26 VS_FFI_FILEFLAGSMASK = 0x3F 27 } 28 29 enum { 30 VS_FF_DEBUG = 1, 31 VS_FF_PRERELEASE = 2, 32 VS_FF_PATCHED = 4, 33 VS_FF_PRIVATEBUILD = 8, 34 VS_FF_INFOINFERRED = 16, 35 VS_FF_SPECIALBUILD = 32 36 } 37 38 enum { 39 VOS_UNKNOWN = 0, 40 VOS_DOS = 0x10000, 41 VOS_OS216 = 0x20000, 42 VOS_OS232 = 0x30000, 43 VOS_NT = 0x40000, 44 VOS__BASE = 0, 45 VOS__WINDOWS16 = 1, 46 VOS__PM16 = 2, 47 VOS__PM32 = 3, 48 VOS__WINDOWS32 = 4, 49 VOS_DOS_WINDOWS16 = 0x10001, 50 VOS_DOS_WINDOWS32 = 0x10004, 51 VOS_OS216_PM16 = 0x20002, 52 VOS_OS232_PM32 = 0x30003, 53 VOS_NT_WINDOWS32 = 0x40004 54 } 55 56 enum { 57 VFT_UNKNOWN = 0, 58 VFT_APP = 1, 59 VFT_DLL = 2, 60 VFT_DRV = 3, 61 VFT_FONT = 4, 62 VFT_VXD = 5, 63 VFT_STATIC_LIB = 7 64 } 65 66 enum { 67 VFT2_UNKNOWN = 0, 68 VFT2_DRV_PRINTER = 1, 69 VFT2_DRV_KEYBOARD = 2, 70 VFT2_DRV_LANGUAGE = 3, 71 VFT2_DRV_DISPLAY = 4, 72 VFT2_DRV_MOUSE = 5, 73 VFT2_DRV_NETWORK = 6, 74 VFT2_DRV_SYSTEM = 7, 75 VFT2_DRV_INSTALLABLE = 8, 76 VFT2_DRV_SOUND = 9, 77 VFT2_DRV_COMM = 10, 78 VFT2_DRV_INPUTMETHOD = 11, 79 VFT2_FONT_RASTER = 1, 80 VFT2_FONT_VECTOR = 2, 81 VFT2_FONT_TRUETYPE = 3 82 } 83 84 enum : DWORD { 85 VFFF_ISSHAREDFILE = 1 86 } 87 88 enum : DWORD { 89 VFF_CURNEDEST = 1, 90 VFF_FILEINUSE = 2, 91 VFF_BUFFTOOSMALL = 4 92 } 93 94 enum : DWORD { 95 VIFF_FORCEINSTALL = 1, 96 VIFF_DONTDELETEOLD 97 } 98 99 enum { 100 VIF_TEMPFILE = 0x00001, 101 VIF_MISMATCH = 0x00002, 102 VIF_SRCOLD = 0x00004, 103 VIF_DIFFLANG = 0x00008, 104 VIF_DIFFCODEPG = 0x00010, 105 VIF_DIFFTYPE = 0x00020, 106 VIF_WRITEPROT = 0x00040, 107 VIF_FILEINUSE = 0x00080, 108 VIF_OUTOFSPACE = 0x00100, 109 VIF_ACCESSVIOLATION = 0x00200, 110 VIF_SHARINGVIOLATION = 0x00400, 111 VIF_CANNOTCREATE = 0x00800, 112 VIF_CANNOTDELETE = 0x01000, 113 VIF_CANNOTRENAME = 0x02000, 114 VIF_CANNOTDELETECUR = 0x04000, 115 VIF_OUTOFMEMORY = 0x08000, 116 VIF_CANNOTREADSRC = 0x10000, 117 VIF_CANNOTREADDST = 0x20000, 118 VIF_BUFFTOOSMALL = 0x40000 119 } 120 121 struct VS_FIXEDFILEINFO { 122 DWORD dwSignature; 123 DWORD dwStrucVersion; 124 DWORD dwFileVersionMS; 125 DWORD dwFileVersionLS; 126 DWORD dwProductVersionMS; 127 DWORD dwProductVersionLS; 128 DWORD dwFileFlagsMask; 129 DWORD dwFileFlags; 130 DWORD dwFileOS; 131 DWORD dwFileType; 132 DWORD dwFileSubtype; 133 DWORD dwFileDateMS; 134 DWORD dwFileDateLS; 135 } 136 137 extern (Windows) { 138 DWORD VerFindFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPSTR, PUINT, LPSTR, 139 PUINT); 140 DWORD VerFindFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, PUINT, LPWSTR, 141 PUINT); 142 DWORD VerInstallFileA(DWORD, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPCSTR, LPSTR, 143 PUINT); 144 DWORD VerInstallFileW(DWORD, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR, 145 LPWSTR, PUINT); 146 DWORD GetFileVersionInfoSizeA(LPCSTR, PDWORD); 147 DWORD GetFileVersionInfoSizeW(LPCWSTR, PDWORD); 148 BOOL GetFileVersionInfoA(LPCSTR, DWORD, DWORD, PVOID); 149 BOOL GetFileVersionInfoW(LPCWSTR, DWORD, DWORD, PVOID); 150 DWORD VerLanguageNameA(DWORD, LPSTR, DWORD); 151 DWORD VerLanguageNameW(DWORD, LPWSTR, DWORD); 152 BOOL VerQueryValueA(LPCVOID, LPCSTR, LPVOID*, PUINT); 153 BOOL VerQueryValueW(LPCVOID, LPCWSTR, LPVOID*, PUINT); 154 } 155 156 version (Unicode) { 157 alias VerFindFileW VerFindFile; 158 alias VerQueryValueW VerQueryValue; 159 alias VerInstallFileW VerInstallFile; 160 alias GetFileVersionInfoSizeW GetFileVersionInfoSize; 161 alias GetFileVersionInfoW GetFileVersionInfo; 162 alias VerLanguageNameW VerLanguageName; 163 alias VerQueryValueW VerQueryValue; 164 } else { 165 alias VerQueryValueA VerQueryValue; 166 alias VerFindFileA VerFindFile; 167 alias VerInstallFileA VerInstallFile; 168 alias GetFileVersionInfoSizeA GetFileVersionInfoSize; 169 alias GetFileVersionInfoA GetFileVersionInfo; 170 alias VerLanguageNameA VerLanguageName; 171 alias VerQueryValueA VerQueryValue; 172 }