Differences From Artifact [217222ad3190ccc6]:
- File
src/win32/winnt.d
- 2015-04-21 10:46:55 - part of checkin [4e2933c620] on branch trunk - Rebased to the latest verson dmd 2.067. Not yet verified the outcome. (user: kinaba) [annotate]
To Artifact [0db4dca1f0f739a5]:
- File
src/win32/winnt.d
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate]
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
40 40 alias long* PLONGLONG;
41 41 alias ulong* PDWORDLONG, PULONGLONG;
42 42
43 43 // FIXME(MinGW) for __WIN64
44 44 alias void* PVOID64;
45 45
46 46 // const versions
47 -alias CPtr!(char) LPCCH, PCSTR, LPCSTR;
48 -alias CPtr!(wchar) LPCWCH, PCWCH, LPCWSTR, PCWSTR;
47 +alias const(char)* LPCCH, PCSTR, LPCSTR;
48 +alias const(wchar)* LPCWCH, PCWCH, LPCWSTR, PCWSTR;
49 49
50 50 version (Unicode) {
51 51 alias WCHAR TCHAR, _TCHAR;
52 52 } else {
53 53 alias CHAR TCHAR, _TCHAR;
54 54 }
55 55
56 -alias TCHAR TBYTE;
57 -alias TCHAR* PTCH, PTBYTE, LPTCH, PTSTR, LPTSTR, LP, PTCHAR;
58 -alias CPtr!(TCHAR) LPCTSTR;
56 +alias TCHAR TBYTE;
57 +alias TCHAR* PTCH, PTBYTE, LPTCH, PTSTR, LPTSTR, LP, PTCHAR;
58 +alias const(TCHAR)* LPCTSTR;
59 59
60 60 const char ANSI_NULL = '\0';
61 61 const wchar UNICODE_NULL = '\0';
62 62
63 63 const APPLICATION_ERROR_MASK = 0x20000000;
64 64 const ERROR_SEVERITY_SUCCESS = 0x00000000;
65 65 const ERROR_SEVERITY_INFORMATIONAL = 0x40000000;
................................................................................
982 982 KEY_NOTIFY = 0x000010,
983 983 KEY_CREATE_LINK = 0x000020,
984 984 KEY_WRITE = 0x020006,
985 985 KEY_EXECUTE = 0x020019,
986 986 KEY_READ = 0x020019,
987 987 KEY_ALL_ACCESS = 0x0F003F;
988 988
989 -static if (WINVER >= 0x502) {
989 +static if (_WIN32_WINNT >= 0x502) {
990 990 const ACCESS_MASK
991 991 KEY_WOW64_64KEY = 0x000100,
992 992 KEY_WOW64_32KEY = 0x000200;
993 993 }
994 994
995 995 const DWORD
996 996 REG_WHOLE_HIVE_VOLATILE = 1,
................................................................................
1871 1871 WT_EXECUTEINWAITTHREAD = 0x00000004,
1872 1872 WT_EXECUTEONLYONCE = 0x00000008,
1873 1873 WT_EXECUTELONGFUNCTION = 0x00000010,
1874 1874 WT_EXECUTEINTIMERTHREAD = 0x00000020,
1875 1875 WT_EXECUTEINPERSISTENTTHREAD = 0x00000080,
1876 1876 WT_TRANSFER_IMPERSONATION = 0x00000100;
1877 1877
1878 -static if (_WIN32_WINNT_ONLY) {
1879 - static if (_WIN32_WINNT >= 0x500) {
1880 - const DWORD
1881 - VER_MINORVERSION = 0x01,
1882 - VER_MAJORVERSION = 0x02,
1883 - VER_BUILDNUMBER = 0x04,
1884 - VER_PLATFORMID = 0x08,
1885 - VER_SERVICEPACKMINOR = 0x10,
1886 - VER_SERVICEPACKMAJOR = 0x20,
1887 - VER_SUITENAME = 0x40,
1888 - VER_PRODUCT_TYPE = 0x80;
1889 -
1890 - enum : DWORD {
1891 - VER_EQUAL = 1,
1892 - VER_GREATER,
1893 - VER_GREATER_EQUAL,
1894 - VER_LESS,
1895 - VER_LESS_EQUAL,
1896 - VER_AND,
1897 - VER_OR // = 7
1898 - }
1899 - }
1900 -
1901 - static if (_WIN32_WINNT >= 0x501) {
1902 - enum : ULONG {
1903 - ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION = 1,
1904 - ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION,
1905 - ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION,
1906 - ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION,
1907 - ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION,
1908 - ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION,
1909 - ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION, // = 7
1910 - ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES = 9
1911 - }
1878 +static if (_WIN32_WINNT >= 0x500) {
1879 + const DWORD
1880 + VER_MINORVERSION = 0x01,
1881 + VER_MAJORVERSION = 0x02,
1882 + VER_BUILDNUMBER = 0x04,
1883 + VER_PLATFORMID = 0x08,
1884 + VER_SERVICEPACKMINOR = 0x10,
1885 + VER_SERVICEPACKMAJOR = 0x20,
1886 + VER_SUITENAME = 0x40,
1887 + VER_PRODUCT_TYPE = 0x80;
1888 +
1889 + enum : DWORD {
1890 + VER_EQUAL = 1,
1891 + VER_GREATER,
1892 + VER_GREATER_EQUAL,
1893 + VER_LESS,
1894 + VER_LESS_EQUAL,
1895 + VER_AND,
1896 + VER_OR // = 7
1897 + }
1898 +}
1899 +
1900 +static if (_WIN32_WINNT >= 0x501) {
1901 + enum : ULONG {
1902 + ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION = 1,
1903 + ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION,
1904 + ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION,
1905 + ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION,
1906 + ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION,
1907 + ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION,
1908 + ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION, // = 7
1909 + ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES = 9
1912 1910 }
1913 1911 }
1914 1912
1915 1913 // Macros
1916 1914 BYTE BTYPE(BYTE x) { return cast(BYTE) (x & N_BTMASK); }
1917 1915 bool ISPTR(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_POINTER << N_BTSHFT); }
1918 1916 bool ISFCN(uint x) { return (x & N_TMASK) == (IMAGE_SYM_DTYPE_FUNCTION << N_BTSHFT); }
................................................................................
2117 2115 DWORD Eip;
2118 2116 DWORD SegCs;
2119 2117 DWORD EFlags;
2120 2118 DWORD Esp;
2121 2119 DWORD SegSs;
2122 2120 BYTE[MAXIMUM_SUPPORTED_EXTENSION] ExtendedRegisters;
2123 2121 }
2122 +
2123 +} else version(X86_64)
2124 +{
2125 + const CONTEXT_AMD64 = 0x100000;
2126 +
2127 + const CONTEXT_CONTROL = (CONTEXT_AMD64 | 0x1L);
2128 + const CONTEXT_INTEGER = (CONTEXT_AMD64 | 0x2L);
2129 + const CONTEXT_SEGMENTS = (CONTEXT_AMD64 | 0x4L);
2130 + const CONTEXT_FLOATING_POINT = (CONTEXT_AMD64 | 0x8L);
2131 + const CONTEXT_DEBUG_REGISTERS = (CONTEXT_AMD64 | 0x10L);
2132 +
2133 + const CONTEXT_FULL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT);
2134 + const CONTEXT_ALL = (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS);
2135 +
2136 + const CONTEXT_EXCEPTION_ACTIVE = 0x8000000;
2137 + const CONTEXT_SERVICE_ACTIVE = 0x10000000;
2138 + const CONTEXT_EXCEPTION_REQUEST = 0x40000000;
2139 + const CONTEXT_EXCEPTION_REPORTING = 0x80000000;
2140 +
2141 + const INITIAL_MXCSR = 0x1f80;
2142 + const INITIAL_FPCSR = 0x027f;
2143 +
2144 + align(16) struct M128A
2145 + {
2146 + ULONGLONG Low;
2147 + LONGLONG High;
2148 + }
2149 + alias M128A* PM128A;
2150 +
2151 + struct XMM_SAVE_AREA32
2152 + {
2153 + WORD ControlWord;
2154 + WORD StatusWord;
2155 + BYTE TagWord;
2156 + BYTE Reserved1;
2157 + WORD ErrorOpcode;
2158 + DWORD ErrorOffset;
2159 + WORD ErrorSelector;
2160 + WORD Reserved2;
2161 + DWORD DataOffset;
2162 + WORD DataSelector;
2163 + WORD Reserved3;
2164 + DWORD MxCsr;
2165 + DWORD MxCsr_Mask;
2166 + M128A[8] FloatRegisters;
2167 + M128A[16] XmmRegisters;
2168 + BYTE[96] Reserved4;
2169 + }
2170 + alias XMM_SAVE_AREA32 PXMM_SAVE_AREA32;
2171 + const LEGACY_SAVE_AREA_LENGTH = XMM_SAVE_AREA32.sizeof;
2172 +
2173 + align(16) struct CONTEXT
2174 + {
2175 + DWORD64 P1Home;
2176 + DWORD64 P2Home;
2177 + DWORD64 P3Home;
2178 + DWORD64 P4Home;
2179 + DWORD64 P5Home;
2180 + DWORD64 P6Home;
2181 + DWORD ContextFlags;
2182 + DWORD MxCsr;
2183 + WORD SegCs;
2184 + WORD SegDs;
2185 + WORD SegEs;
2186 + WORD SegFs;
2187 + WORD SegGs;
2188 + WORD SegSs;
2189 + DWORD EFlags;
2190 + DWORD64 Dr0;
2191 + DWORD64 Dr1;
2192 + DWORD64 Dr2;
2193 + DWORD64 Dr3;
2194 + DWORD64 Dr6;
2195 + DWORD64 Dr7;
2196 + DWORD64 Rax;
2197 + DWORD64 Rcx;
2198 + DWORD64 Rdx;
2199 + DWORD64 Rbx;
2200 + DWORD64 Rsp;
2201 + DWORD64 Rbp;
2202 + DWORD64 Rsi;
2203 + DWORD64 Rdi;
2204 + DWORD64 R8;
2205 + DWORD64 R9;
2206 + DWORD64 R10;
2207 + DWORD64 R11;
2208 + DWORD64 R12;
2209 + DWORD64 R13;
2210 + DWORD64 R14;
2211 + DWORD64 R15;
2212 + DWORD64 Rip;
2213 + union
2214 + {
2215 + XMM_SAVE_AREA32 FltSave;
2216 + XMM_SAVE_AREA32 FloatSave;
2217 + struct
2218 + {
2219 + M128A[2] Header;
2220 + M128A[8] Legacy;
2221 + M128A Xmm0;
2222 + M128A Xmm1;
2223 + M128A Xmm2;
2224 + M128A Xmm3;
2225 + M128A Xmm4;
2226 + M128A Xmm5;
2227 + M128A Xmm6;
2228 + M128A Xmm7;
2229 + M128A Xmm8;
2230 + M128A Xmm9;
2231 + M128A Xmm10;
2232 + M128A Xmm11;
2233 + M128A Xmm12;
2234 + M128A Xmm13;
2235 + M128A Xmm14;
2236 + M128A Xmm15;
2237 + };
2238 + };
2239 + M128A[26] VectorRegister;
2240 + DWORD64 VectorControl;
2241 + DWORD64 DebugControl;
2242 + DWORD64 LastBranchToRip;
2243 + DWORD64 LastBranchFromRip;
2244 + DWORD64 LastExceptionToRip;
2245 + DWORD64 LastExceptionFromRip;
2246 + }
2124 2247
2125 2248 } else {
2126 2249 static assert(false, "Unsupported CPU");
2127 2250 // Versions for PowerPC, Alpha, SHX, and MIPS removed.
2128 2251 }
2129 2252
2130 2253 alias CONTEXT* PCONTEXT, LPCONTEXT;
................................................................................
3568 3691 alias JOBOBJECT_EXTENDED_LIMIT_INFORMATION* PJOBOBJECT_EXTENDED_LIMIT_INFORMATION;
3569 3692
3570 3693 struct JOBOBJECT_JOBSET_INFORMATION {
3571 3694 DWORD MemberLevel;
3572 3695 }
3573 3696 alias JOBOBJECT_JOBSET_INFORMATION* PJOBOBJECT_JOBSET_INFORMATION;
3574 3697
3575 -// MinGW: Making these defines conditional on WINVER will break ddk includes
3576 -//static if (WINVER >= 0x0500) {
3698 +// MinGW: Making these defines conditional on _WIN32_WINNT will break ddk includes
3699 +//static if (_WIN32_WINNT >= 0x500) {
3577 3700
3578 3701 const DWORD
3579 3702 ES_SYSTEM_REQUIRED = 0x00000001,
3580 3703 ES_DISPLAY_REQUIRED = 0x00000002,
3581 3704 ES_USER_PRESENT = 0x00000004,
3582 3705 ES_CONTINUOUS = 0x80000000;
3583 3706
................................................................................
3609 3732 PowerActionShutdown,
3610 3733 PowerActionShutdownReset,
3611 3734 PowerActionShutdownOff,
3612 3735 PowerActionWarmEject
3613 3736 }
3614 3737 alias POWER_ACTION* PPOWER_ACTION;
3615 3738
3616 -static if (WINVER >= 0x600) {
3739 +static if (_WIN32_WINNT >= 0x600) {
3617 3740 enum SYSTEM_POWER_CONDITION {
3618 3741 PoAc,
3619 3742 PoDc,
3620 3743 PoHot,
3621 3744 PoConditionMaximum
3622 3745 }
3623 3746 alias SYSTEM_POWER_CONDITION* PSYSTEM_POWER_CONDITION;
................................................................................
3841 3964 ULONG MinVideoTimeout;
3842 3965 ULONG MaxVideoTimeout;
3843 3966 ULONG MinSpindownTimeout;
3844 3967 ULONG MaxSpindownTimeout;
3845 3968 }
3846 3969 alias ADMINISTRATOR_POWER_POLICY* PADMINISTRATOR_POWER_POLICY;
3847 3970
3848 -//}//#endif /* WINVER >= 0x0500 */
3971 +//}//#endif /* _WIN32_WINNT >= 0x500 */
3849 3972
3850 3973 extern (Windows) {
3851 3974 alias void function(PVOID, DWORD, PVOID) PIMAGE_TLS_CALLBACK;
3852 3975
3853 - static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) {
3976 + static if (_WIN32_WINNT >= 0x500) {
3854 3977 alias LONG function(PEXCEPTION_POINTERS) PVECTORED_EXCEPTION_HANDLER;
3855 3978 alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACKFUNC;
3856 3979 }
3857 3980 }
3858 3981
3859 -static if (WINVER >= 0x501) {
3982 +static if (_WIN32_WINNT >= 0x501) {
3860 3983 enum HEAP_INFORMATION_CLASS {
3861 3984 HeapCompatibilityInformation
3862 3985 }
3863 3986
3864 3987 enum ACTIVATION_CONTEXT_INFO_CLASS {
3865 3988 ActivationContextBasicInformation = 1,
3866 3989 ActivationContextDetailedInformation,
................................................................................
3886 4009 PCWSTR lpAssemblyEncodedAssemblyIdentity;
3887 4010 PCWSTR lpAssemblyManifestPath;
3888 4011 PCWSTR lpAssemblyPolicyPath;
3889 4012 PCWSTR lpAssemblyDirectoryName;
3890 4013 }
3891 4014 alias ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION*
3892 4015 PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
3893 - alias CPtr!(ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION)
4016 + alias const(ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION)*
3894 4017 PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
3895 4018
3896 4019 struct ACTIVATION_CONTEXT_DETAILED_INFORMATION {
3897 4020 DWORD dwFlags;
3898 4021 DWORD ulFormatVersion;
3899 4022 DWORD ulAssemblyCount;
3900 4023 DWORD ulRootManifestPathType;
................................................................................
3905 4028 DWORD ulAppDirPathChars;
3906 4029 PCWSTR lpRootManifestPath;
3907 4030 PCWSTR lpRootConfigurationPath;
3908 4031 PCWSTR lpAppDirPath;
3909 4032 }
3910 4033 alias ACTIVATION_CONTEXT_DETAILED_INFORMATION*
3911 4034 PACTIVATION_CONTEXT_DETAILED_INFORMATION;
3912 - alias CPtr!(ACTIVATION_CONTEXT_DETAILED_INFORMATION)
4035 + alias const(ACTIVATION_CONTEXT_DETAILED_INFORMATION)*
3913 4036 PCACTIVATION_CONTEXT_DETAILED_INFORMATION;
3914 4037
3915 4038 struct ACTIVATION_CONTEXT_QUERY_INDEX {
3916 4039 ULONG ulAssemblyIndex;
3917 4040 ULONG ulFileIndexInAssembly;
3918 4041 }
3919 - alias ACTIVATION_CONTEXT_QUERY_INDEX* PACTIVATION_CONTEXT_QUERY_INDEX;
3920 - alias CPtr!(ACTIVATION_CONTEXT_QUERY_INDEX) PCACTIVATION_CONTEXT_QUERY_INDEX;
4042 + alias ACTIVATION_CONTEXT_QUERY_INDEX* PACTIVATION_CONTEXT_QUERY_INDEX;
4043 + alias const(ACTIVATION_CONTEXT_QUERY_INDEX)* PCACTIVATION_CONTEXT_QUERY_INDEX;
3921 4044
3922 4045 struct ASSEMBLY_FILE_DETAILED_INFORMATION {
3923 4046 DWORD ulFlags;
3924 4047 DWORD ulFilenameLength;
3925 4048 DWORD ulPathLength;
3926 4049 PCWSTR lpFileName;
3927 4050 PCWSTR lpFilePath;
3928 4051 }
3929 4052 alias ASSEMBLY_FILE_DETAILED_INFORMATION*
3930 4053 PASSEMBLY_FILE_DETAILED_INFORMATION;
3931 - alias CPtr!(ASSEMBLY_FILE_DETAILED_INFORMATION)
4054 + alias const(ASSEMBLY_FILE_DETAILED_INFORMATION)*
3932 4055 PCASSEMBLY_FILE_DETAILED_INFORMATION;
3933 4056 }
3934 4057
3935 4058 version (Unicode) {
3936 4059 alias OSVERSIONINFOW OSVERSIONINFO;
3937 4060 alias OSVERSIONINFOEXW OSVERSIONINFOEX;
3938 4061 } else {
................................................................................
3940 4063 alias OSVERSIONINFOEXA OSVERSIONINFOEX;
3941 4064 }
3942 4065
3943 4066 alias OSVERSIONINFO* POSVERSIONINFO, LPOSVERSIONINFO;
3944 4067 alias OSVERSIONINFOEX* POSVERSIONINFOEX, LPOSVERSIONINFOEX;
3945 4068
3946 4069
3947 -static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) {
4070 +static if (_WIN32_WINNT >= 0x500) {
3948 4071 extern (Windows) ULONGLONG VerSetConditionMask(ULONGLONG, DWORD, BYTE);
3949 4072 }
3950 4073
3951 4074 version (Win64) {
3952 4075 const WORD IMAGE_NT_OPTIONAL_HDR_MAGIC = IMAGE_NT_OPTIONAL_HDR64_MAGIC;
3953 4076
3954 4077 alias IMAGE_ORDINAL_FLAG64 IMAGE_ORDINAL_FLAG;