1 /** 2 * Windows API header module 3 * 4 * Translated from MinGW API for MS-Windows 4.0 5 * 6 * Authors: Stewart Gordon 7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 8 * Source: $(DRUNTIMESRC core/sys/windows/_w32api.d) 9 */ 10 module core.sys.windows.w32api; 11 version (Windows): 12 13 version (ANSI) {} else version = Unicode; 14 15 enum __W32API_VERSION = 3.17; 16 enum __W32API_MAJOR_VERSION = 3; 17 enum __W32API_MINOR_VERSION = 17; 18 19 /* These version identifiers are used to specify the minimum version of Windows that an 20 * application will support. 21 * 22 * Previously the minimum Windows 9x and Windows NT versions could be specified. However, since 23 * Windows 9x is no longer supported, either by Microsoft or by DMD, this distinction has been 24 * removed in order to simplify the bindings. 25 */ 26 version (Windows10) { 27 enum uint _WIN32_WINNT = 0xA00; 28 } else version (Windows8_1) { // also Windows2012R2 29 enum uint _WIN32_WINNT = 0x603; 30 } else version (Windows8) { // also Windows2012 31 enum uint _WIN32_WINNT = 0x602; 32 } else version (Windows7) { // also Windows2008R2 33 enum uint _WIN32_WINNT = 0x601; 34 } else version (WindowsVista) { // also Windows2008 35 enum uint _WIN32_WINNT = 0x600; 36 } else version (Windows2003) { // also WindowsHomeServer, WindowsXP64 37 enum uint _WIN32_WINNT = 0x502; 38 } else version (WindowsXP) { 39 enum uint _WIN32_WINNT = 0x501; 40 } else version (Windows2000) { 41 // Current DMD doesn't support any version of Windows older than XP, 42 // but third-party compilers could use this 43 enum uint _WIN32_WINNT = 0x500; 44 } else { 45 enum uint _WIN32_WINNT = 0x501; 46 } 47 48 version (IE11) { 49 enum uint _WIN32_IE = 0xA00; 50 } else version (IE10) { 51 enum uint _WIN32_IE = 0xA00; 52 } else version (IE9) { 53 enum uint _WIN32_IE = 0x900; 54 } else version (IE8) { 55 enum uint _WIN32_IE = 0x800; 56 } else version (IE7) { 57 enum uint _WIN32_IE = 0x700; 58 } else version (IE602) { 59 enum uint _WIN32_IE = 0x603; 60 } else version (IE601) { 61 enum uint _WIN32_IE = 0x601; 62 } else version (IE6) { 63 enum uint _WIN32_IE = 0x600; 64 } else version (IE56) { 65 enum uint _WIN32_IE = 0x560; 66 } else version (IE55) { 67 enum uint _WIN32_IE = 0x550; 68 } else version (IE501) { 69 enum uint _WIN32_IE = 0x501; 70 } else version (IE5) { 71 enum uint _WIN32_IE = 0x500; 72 } else version (IE401) { 73 enum uint _WIN32_IE = 0x401; 74 } else version (IE4) { 75 enum uint _WIN32_IE = 0x400; 76 } else version (IE3) { 77 enum uint _WIN32_IE = 0x300; 78 } else static if (_WIN32_WINNT >= 0x500) { 79 enum uint _WIN32_IE = 0x600; 80 } else static if (_WIN32_WINNT >= 0x410) { 81 enum uint _WIN32_IE = 0x400; 82 } else { 83 enum uint _WIN32_IE = 0; 84 } 85 86 debug (WindowsUnitTest) { 87 unittest { 88 printf("Windows NT version: %03x\n", _WIN32_WINNT); 89 printf("IE version: %03x\n", _WIN32_IE); 90 } 91 } 92 93 version (Unicode) { 94 enum bool _WIN32_UNICODE = true; 95 package template DECLARE_AW(string name) { 96 mixin("alias " ~ name ~ "W " ~ name ~ ";"); 97 } 98 } else { 99 enum bool _WIN32_UNICODE = false; 100 package template DECLARE_AW(string name) { 101 mixin("alias " ~ name ~ "A " ~ name ~ ";"); 102 } 103 }