blob: bf841953805d5fd5e533832386d7415da41a7d21 [file] [log] [blame]
/**
* Windows API header module
*
* Translated from MinGW API for MS-Windows 4.0
*
* Authors: Stewart Gordon
* License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
* Source: $(DRUNTIMESRC core/sys/windows/_w32api.d)
*/
module core.sys.windows.w32api;
version (Windows):
import core.sys.windows.sdkddkver;
version (ANSI) {} else version = Unicode;
enum __W32API_VERSION = 3.17;
enum __W32API_MAJOR_VERSION = 3;
enum __W32API_MINOR_VERSION = 17;
enum Windows95 = 0x0400;
enum Windows98 = 0x0410;
enum WindowsME = 0x0500;
enum WindowsNT4 = 0x0400;
enum Windows2000 = 0x0500;
enum WindowsXP = 0x0501;
enum Windows2003 = 0x0502;
enum WindowsVista = 0x0600;
enum Windows7 = 0x0601;
enum Windows8 = 0x0602;
enum IE3 = 0x0300;
enum IE301 = 0x0300;
enum IE302 = 0x0300;
enum IE4 = 0x0400;
enum IE401 = 0x0401;
enum IE5 = 0x0500;
enum IE5a = 0x0500;
enum IE5b = 0x0500;
enum IE501 = 0x0501;
enum IE55 = 0x0501;
enum IE56 = 0x0560;
enum IE6 = 0x0600;
enum IE601 = 0x0601;
enum IE602 = 0x0603;
enum IE7 = 0x0700;
enum IE8 = 0x0800;
enum IE9 = 0x0900;
enum IE10 = 0x0A00;
/* These version identifiers are used to specify the minimum version of Windows that an
* application will support.
*
* Previously the minimum Windows 9x and Windows NT versions could be specified. However, since
* Windows 9x is no longer supported, either by Microsoft or by DMD, this distinction has been
* removed in order to simplify the bindings.
*/
version (Windows11) {
enum uint _WIN32_WINNT = _WIN32_WINNT_WIN10;
} else version (Windows10) {
enum uint _WIN32_WINNT = _WIN32_WINNT_WIN10;
} else version (Windows8_1) { // also Windows2012R2
enum uint _WIN32_WINNT = _WIN32_WINNT_WINBLUE;
} else version (Windows8) { // also Windows2012
enum uint _WIN32_WINNT = _WIN32_WINNT_WIN8;
} else version (Windows7) { // also Windows2008R2
enum uint _WIN32_WINNT = _WIN32_WINNT_WIN7;
} else version (WindowsVista) { // also Windows2008
enum uint _WIN32_WINNT = _WIN32_WINNT_VISTA;
} else version (Windows2003) { // also WindowsHomeServer, WindowsXP64
enum uint _WIN32_WINNT = _WIN32_WINNT_WS03;
} else version (WindowsXP) {
enum uint _WIN32_WINNT = _WIN32_WINNT_WINXP;
} else version (Windows2000) {
// Current DMD doesn't support any version of Windows older than XP,
// but third-party compilers could use this
enum uint _WIN32_WINNT = _WIN32_WINNT_WIN2K;
} else {
enum uint _WIN32_WINNT = _WIN32_WINNT_WIN7;
}
version (IE11) {
enum uint _WIN32_IE = _WIN32_IE_IE110;
} else version (IE10) {
enum uint _WIN32_IE = _WIN32_IE_IE100;
} else version (IE9) {
enum uint _WIN32_IE = _WIN32_IE_IE90;
} else version (IE8) {
enum uint _WIN32_IE = _WIN32_IE_IE80;
} else version (IE7) {
enum uint _WIN32_IE = _WIN32_IE_IE70;
} else version (IE602) {
enum uint _WIN32_IE = _WIN32_IE_IE60SP2;
} else version (IE601) {
enum uint _WIN32_IE = _WIN32_IE_IE60SP1;
} else version (IE6) {
enum uint _WIN32_IE = _WIN32_IE_IE60;
} else version (IE56) {
enum uint _WIN32_IE = _WIN32_IE_IE60;
} else version (IE55) {
enum uint _WIN32_IE = _WIN32_IE_IE55;
} else version (IE501) {
enum uint _WIN32_IE = _WIN32_IE_IE501;
} else version (IE5) {
enum uint _WIN32_IE = _WIN32_IE_IE50;
} else version (IE401) {
enum uint _WIN32_IE = _WIN32_IE_IE401;
} else version (IE4) {
enum uint _WIN32_IE = _WIN32_IE_IE40;
} else version (IE3) {
enum uint _WIN32_IE = _WIN32_IE_IE30;
} else static if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K) {
enum uint _WIN32_IE = _WIN32_IE_IE60;
} else static if (_WIN32_WINNT >= Windows98) { //NOTE: _WIN32_WINNT will never be set this low
enum uint _WIN32_IE = _WIN32_IE_IE40;
} else {
enum uint _WIN32_IE = 0;
}
debug (WindowsUnitTest) {
unittest {
printf("Windows NT version: %03x\n", _WIN32_WINNT);
printf("IE version: %03x\n", _WIN32_IE);
}
}
version (Unicode) {
enum bool _WIN32_UNICODE = true;
package template DECLARE_AW(string name) {
mixin("alias " ~ name ~ "W " ~ name ~ ";");
}
} else {
enum bool _WIN32_UNICODE = false;
package template DECLARE_AW(string name) {
mixin("alias " ~ name ~ "A " ~ name ~ ";");
}
}