| 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.lib"); |
|---|
| 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 |
} |
|---|