Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenwinnt.h
Go to the documentation of this file.
00001 #ifndef _WINNT_H 00002 #define _WINNT_H 00003 00004 #if !defined(__ROS_LONG64__) 00005 #ifdef __WINESRC__ 00006 #define __ROS_LONG64__ 00007 #endif 00008 #endif 00009 00010 #ifdef __GNUC__ 00011 #include <msvctarget.h> 00012 #endif 00013 00014 #ifndef __ANONYMOUS_DEFINED 00015 #define __ANONYMOUS_DEFINED 00016 #ifndef NONAMELESSUNION 00017 #ifdef __GNUC__ 00018 #define _ANONYMOUS_UNION __extension__ 00019 #define _ANONYMOUS_STRUCT __extension__ 00020 #elif defined(__WATCOMC__) || defined(_MSC_VER) 00021 #define _ANONYMOUS_UNION 00022 #define _ANONYMOUS_STRUCT 00023 #endif /* __GNUC__/__WATCOMC__ */ 00024 #endif /* NONAMELESSUNION */ 00025 #ifndef _ANONYMOUS_UNION 00026 #define _ANONYMOUS_UNION 00027 #define _UNION_NAME(x) x 00028 #define DUMMYUNIONNAME u 00029 #define DUMMYUNIONNAME1 u1 00030 #define DUMMYUNIONNAME2 u2 00031 #define DUMMYUNIONNAME3 u3 00032 #define DUMMYUNIONNAME4 u4 00033 #define DUMMYUNIONNAME5 u5 00034 #define DUMMYUNIONNAME6 u6 00035 #define DUMMYUNIONNAME7 u7 00036 #define DUMMYUNIONNAME8 u8 00037 #else 00038 #define _UNION_NAME(x) 00039 #define DUMMYUNIONNAME 00040 #define DUMMYUNIONNAME1 00041 #define DUMMYUNIONNAME2 00042 #define DUMMYUNIONNAME3 00043 #define DUMMYUNIONNAME4 00044 #define DUMMYUNIONNAME5 00045 #define DUMMYUNIONNAME6 00046 #define DUMMYUNIONNAME7 00047 #define DUMMYUNIONNAME8 00048 #endif 00049 #ifndef _ANONYMOUS_STRUCT 00050 #define _ANONYMOUS_STRUCT 00051 #define _STRUCT_NAME(x) x 00052 #define DUMMYSTRUCTNAME s 00053 #define DUMMYSTRUCTNAME1 s1 00054 #define DUMMYSTRUCTNAME2 s2 00055 #define DUMMYSTRUCTNAME3 s3 00056 #define DUMMYSTRUCTNAME4 s4 00057 #define DUMMYSTRUCTNAME5 s5 00058 #else 00059 #define _STRUCT_NAME(x) 00060 #define DUMMYSTRUCTNAME 00061 #define DUMMYSTRUCTNAME1 00062 #define DUMMYSTRUCTNAME2 00063 #define DUMMYSTRUCTNAME3 00064 #define DUMMYSTRUCTNAME4 00065 #define DUMMYSTRUCTNAME5 00066 #endif 00067 #endif /* __ANONYMOUS_DEFINED */ 00068 00069 #define UNREFERENCED_PARAMETER(P) {(P)=(P);} 00070 #define UNREFERENCED_LOCAL_VARIABLE(L) {(L)=(L);} 00071 #define DBG_UNREFERENCED_PARAMETER(P) 00072 #define DBG_UNREFERENCED_LOCAL_VARIABLE(L) 00073 00074 #ifndef DECLSPEC_ALIGN 00075 # if defined(_MSC_VER) && (_MSC_VER >= 1300) && !defined(MIDL_PASS) 00076 # define DECLSPEC_ALIGN(x) __declspec(align(x)) 00077 # elif defined(__GNUC__) 00078 # define DECLSPEC_ALIGN(x) __attribute__((aligned(x))) 00079 # else 00080 # define DECLSPEC_ALIGN(x) 00081 # endif 00082 #endif 00083 00084 #ifndef NOP_FUNCTION 00085 #if (_MSC_VER >= 1210) 00086 #define NOP_FUNCTION __noop 00087 #else 00088 #define NOP_FUNCTION (void)0 00089 #endif 00090 #endif 00091 00092 # define DECLSPEC_HIDDEN 00093 00094 #ifdef __cplusplus 00095 extern "C" { 00096 #endif 00097 00098 #include <excpt.h> 00099 #include <basetsd.h> 00100 #include <guiddef.h> 00101 00102 #include <ctype.h> 00103 #undef __need_wchar_t 00104 00105 #include <winerror.h> 00106 #include <stddef.h> 00107 #include <sdkddkver.h> 00108 00109 #ifndef RC_INVOKED 00110 #include <string.h> 00111 00112 /* FIXME: add more architectures. Is there a way to specify this in GCC? */ 00113 #if defined(_M_AMD64) 00114 #undef UNALIGNED 00115 #define UNALIGNED __unaligned 00116 #else 00117 #define UNALIGNED 00118 #endif 00119 00120 #ifndef DECLSPEC_NOVTABLE 00121 # if defined(_MSC_VER) && (_MSC_VER >= 1100) && defined(__cplusplus) 00122 # define DECLSPEC_NOVTABLE __declspec(novtable) 00123 # else 00124 # define DECLSPEC_NOVTABLE 00125 # endif 00126 #endif 00127 00128 #ifndef DECLSPEC_ADDRSAFE 00129 #if (_MSC_VER >= 1200) && (defined(_M_ALPHA) || defined(_M_AXP64)) 00130 #define DECLSPEC_ADDRSAFE __declspec(address_safe) 00131 #else 00132 #define DECLSPEC_ADDRSAFE 00133 #endif 00134 #endif 00135 00136 /*#ifdef _WINE*/ 00137 #if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3))) 00138 #define __WINE_ALLOC_SIZE(x) __attribute__((__alloc_size__(x))) 00139 #else 00140 #define __WINE_ALLOC_SIZE(x) 00141 #endif 00142 /*#endif*/ 00143 00144 #ifndef FORCEINLINE 00145 #if (_MSC_VER >= 1200) 00146 #define FORCEINLINE __forceinline 00147 #elif (_MSC_VER) 00148 #define FORCEINLINE __inline 00149 #else 00150 #define FORCEINLINE extern __inline__ __attribute__((always_inline)) 00151 #endif 00152 #endif 00153 00154 #if !defined(_NTSYSTEM_) 00155 #define NTSYSAPI DECLSPEC_IMPORT 00156 #define NTSYSCALLAPI DECLSPEC_IMPORT 00157 #else 00158 #define NTSYSAPI 00159 #if defined(_NTDLLBUILD_) 00160 #define NTSYSCALLAPI 00161 #else 00162 #define NTSYSCALLAPI DECLSPEC_ADDRSAFE 00163 #endif 00164 #endif 00165 00166 #ifndef VOID 00167 #define VOID void 00168 #endif 00169 typedef char CHAR; 00170 typedef short SHORT; 00171 #if !defined(__ROS_LONG64__) || defined(_M_AMD64) 00172 typedef long LONG; 00173 #else 00174 typedef int LONG; 00175 #endif 00176 typedef char CCHAR, *PCCHAR; 00177 typedef void *PVOID; 00178 00179 /* FIXME for __WIN64 */ 00180 #ifndef __ptr64 00181 #define __ptr64 00182 #endif 00183 typedef void* __ptr64 PVOID64; 00184 00185 #ifdef __cplusplus 00186 # define EXTERN_C extern "C" 00187 #else 00188 # define EXTERN_C extern 00189 #endif 00190 00191 #define STDMETHODCALLTYPE __stdcall 00192 #define STDMETHODVCALLTYPE __cdecl 00193 #define STDAPICALLTYPE __stdcall 00194 #define STDAPIVCALLTYPE __cdecl 00195 00196 #define STDAPI EXTERN_C HRESULT STDAPICALLTYPE 00197 #define STDAPI_(type) EXTERN_C type STDAPICALLTYPE 00198 #define STDMETHODIMP HRESULT STDMETHODCALLTYPE 00199 #define STDMETHODIMP_(type) type STDMETHODCALLTYPE 00200 #define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE 00201 #define STDAPIV_(type) EXTERN_C type STDAPIVCALLTYPE 00202 #define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE 00203 #define STDMETHODIMPV_(type) type STDMETHODVCALLTYPE 00204 00205 /* C99 restrict support */ 00206 #if defined(ENABLE_RESTRICTED) && !defined(MIDL_PASS) && !defined(RC_INVOKED) 00207 #if defined(_MSC_VER) && defined(_M_MRX000) 00208 #define RESTRICTED_POINTER __restrict 00209 #elif defined(__GNUC__) && ((__GNUC__ > 2) || ((__GNUC__ == 2) && (__GNUC_MINOR__ >= 95))) 00210 #define RESTRICTED_POINTER __restrict 00211 #else 00212 #define RESTRICTED_POINTER 00213 #endif 00214 #else 00215 #define RESTRICTED_POINTER 00216 #endif 00217 00218 typedef wchar_t WCHAR; 00219 typedef WCHAR *PWCHAR,*LPWCH,*PWCH,*NWPSTR,*LPWSTR,*PWSTR,*PZZWSTR; 00220 typedef CONST WCHAR *LPCWCH,*PCWCH,*LPCWSTR,*PCWSTR,*PCZZWSTR; 00221 typedef CHAR *PCHAR,*LPCH,*PCH,*NPSTR,*LPSTR,*PSTR; 00222 typedef CONST CHAR *LPCCH,*PCCH,*PCSTR,*LPCSTR; 00223 typedef PWSTR *PZPWSTR; 00224 typedef CONST PWSTR *PCZPWSTR; 00225 typedef WCHAR UNALIGNED *LPUWSTR,*PUWSTR; 00226 typedef PCWSTR *PZPCWSTR; 00227 typedef CONST WCHAR UNALIGNED *LPCUWSTR,*PCUWSTR; 00228 typedef PSTR *PZPSTR; 00229 typedef CONST PSTR *PCZPSTR; 00230 typedef PCSTR *PZPCSTR; 00231 00232 00233 #ifdef UNICODE 00234 #ifndef _TCHAR_DEFINED 00235 #define _TCHAR_DEFINED 00236 typedef WCHAR TCHAR,*PTCHAR; 00237 typedef WCHAR TBYTE ,*PTBYTE; 00238 #endif 00239 typedef LPWSTR LPTCH,PTCH,PTSTR,LPTSTR,LP; 00240 typedef LPCWSTR PCTSTR,LPCTSTR; 00241 typedef LPUWSTR PUTSTR,LPUTSTR; 00242 typedef LPCUWSTR PCUTSTR,LPCUTSTR; 00243 #define __TEXT(quote) L##quote 00244 #else 00245 #ifndef _TCHAR_DEFINED 00246 #define _TCHAR_DEFINED 00247 typedef char TCHAR,*PTCHAR; 00248 typedef unsigned char TBYTE ,*PTBYTE; 00249 #endif 00250 typedef LPSTR LPTCH,PTCH,PTSTR,LPTSTR,PUTSTR,LPUTSTR; 00251 typedef LPCSTR PCTSTR,LPCTSTR,PCUTSTR,LPCUTSTR; 00252 #define __TEXT(quote) quote 00253 #endif 00254 00255 #define TEXT(quote) __TEXT(quote) 00256 00257 typedef SHORT *PSHORT; 00258 typedef LONG *PLONG; 00259 #ifdef STRICT 00260 typedef void *HANDLE; 00261 #define DECLARE_HANDLE(n) typedef struct n##__{int i;}*n 00262 #else 00263 typedef PVOID HANDLE; 00264 #define DECLARE_HANDLE(n) typedef HANDLE n 00265 #endif 00266 typedef HANDLE *PHANDLE; 00267 typedef DWORD LCID; 00268 typedef PDWORD PLCID; 00269 typedef WORD LANGID; 00270 #ifdef __GNUC__ 00271 #define _HAVE_INT64 00272 #ifndef _INTEGRAL_MAX_BITS 00273 # define _INTEGRAL_MAX_BITS 64 00274 #endif 00275 #undef __int64 00276 #define __int64 long long 00277 #elif (defined(__WATCOMC__) || defined(_MSC_VER)) && (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64 ) 00278 #define _HAVE_INT64 00279 #endif /* __GNUC__/__WATCOMC */ 00280 #if defined(_HAVE_INT64) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64) 00281 typedef __int64 LONGLONG; 00282 typedef unsigned __int64 DWORDLONG; 00283 #else 00284 typedef double LONGLONG,DWORDLONG; 00285 #endif 00286 typedef LONGLONG *PLONGLONG; 00287 typedef DWORDLONG *PDWORDLONG; 00288 typedef DWORDLONG ULONGLONG,*PULONGLONG; 00289 typedef LONGLONG USN; 00290 #ifdef _HAVE_INT64 00291 #define Int32x32To64(a,b) ((LONGLONG)(a)*(LONGLONG)(b)) 00292 #define UInt32x32To64(a,b) ((DWORDLONG)(a)*(DWORDLONG)(b)) 00293 #define Int64ShllMod32(a,b) ((DWORDLONG)(a)<<(b)) 00294 #define Int64ShraMod32(a,b) ((LONGLONG)(a)>>(b)) 00295 #define Int64ShrlMod32(a,b) ((DWORDLONG)(a)>>(b)) 00296 #endif 00297 #define ANSI_NULL ((CHAR)0) 00298 #define UNICODE_NULL ((WCHAR)0) 00299 #define UNICODE_STRING_MAX_BYTES ((USHORT) 65534) 00300 #define UNICODE_STRING_MAX_CHARS (32767) 00301 typedef BYTE BOOLEAN,*PBOOLEAN; 00302 #endif 00303 typedef BYTE FCHAR; 00304 typedef WORD FSHORT; 00305 typedef DWORD FLONG; 00306 00307 #define C_ASSERT(expr) extern char (*c_assert(void)) [(expr) ? 1 : -1] 00308 00309 #include "intrin.h" 00310 00311 #define NTAPI __stdcall 00312 #include <basetsd.h> 00313 00314 #ifdef _MSC_VER 00315 #pragma warning(push) 00316 #pragma warning(disable:4201) 00317 #pragma warning(disable:4214) 00318 #pragma warning(disable:4820) 00319 #endif 00320 00321 #define ACE_OBJECT_TYPE_PRESENT 0x00000001 00322 #define ACE_INHERITED_OBJECT_TYPE_PRESENT 0x00000002 00323 #define APPLICATION_ERROR_MASK 0x20000000 00324 #define ERROR_SEVERITY_SUCCESS 0x00000000 00325 #define ERROR_SEVERITY_INFORMATIONAL 0x40000000 00326 #define ERROR_SEVERITY_WARNING 0x80000000 00327 #define ERROR_SEVERITY_ERROR 0xC0000000 00328 00329 #ifdef __cplusplus 00330 #define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) \ 00331 extern "C++" { \ 00332 inline ENUMTYPE operator | (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a)|((int)b)); } \ 00333 inline ENUMTYPE operator |= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) |= ((int)b)); } \ 00334 inline ENUMTYPE operator & (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a)&((int)b)); } \ 00335 inline ENUMTYPE operator &= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) &= ((int)b)); } \ 00336 inline ENUMTYPE operator ~ (ENUMTYPE a) { return (ENUMTYPE)(~((int)a)); } \ 00337 inline ENUMTYPE operator ^ (ENUMTYPE a, ENUMTYPE b) { return ENUMTYPE(((int)a)^((int)b)); } \ 00338 inline ENUMTYPE operator ^= (ENUMTYPE &a, ENUMTYPE b) { return (ENUMTYPE &)(((int &)a) ^= ((int)b)); } \ 00339 } 00340 #else 00341 #define DEFINE_ENUM_FLAG_OPERATORS(ENUMTYPE) /* */ 00342 #endif 00343 00344 /* also in ddk/ntifs.h */ 00345 #define COMPRESSION_FORMAT_NONE (0x0000) 00346 #define COMPRESSION_FORMAT_DEFAULT (0x0001) 00347 #define COMPRESSION_FORMAT_LZNT1 (0x0002) 00348 #define COMPRESSION_ENGINE_STANDARD (0x0000) 00349 #define COMPRESSION_ENGINE_MAXIMUM (0x0100) 00350 #define COMPRESSION_ENGINE_HIBER (0x0200) 00351 #define ACCESS_ALLOWED_ACE_TYPE (0x0) 00352 #define ACCESS_DENIED_ACE_TYPE (0x1) 00353 #define SYSTEM_AUDIT_ACE_TYPE (0x2) 00354 #define SYSTEM_ALARM_ACE_TYPE (0x3) 00355 /*end ntifs.h */ 00356 #define ANYSIZE_ARRAY 1 00357 #define OBJECT_INHERIT_ACE 1 00358 #define CONTAINER_INHERIT_ACE 2 00359 #define NO_PROPAGATE_INHERIT_ACE 4 00360 #define INHERIT_ONLY_ACE 8 00361 #define INHERITED_ACE 10 00362 #define VALID_INHERIT_FLAGS 0x1F 00363 #define SUCCESSFUL_ACCESS_ACE_FLAG 64 00364 #define FAILED_ACCESS_ACE_FLAG 128 00365 #define DELETE 0x00010000L 00366 #define READ_CONTROL 0x20000L 00367 #define WRITE_DAC 0x40000L 00368 #define WRITE_OWNER 0x80000L 00369 #define SYNCHRONIZE 0x100000L 00370 #define STANDARD_RIGHTS_REQUIRED 0xF0000 00371 #define STANDARD_RIGHTS_READ 0x20000 00372 #define STANDARD_RIGHTS_WRITE 0x20000 00373 #define STANDARD_RIGHTS_EXECUTE 0x20000 00374 #define STANDARD_RIGHTS_ALL 0x1F0000 00375 #define SPECIFIC_RIGHTS_ALL 0xFFFF 00376 #define ACCESS_SYSTEM_SECURITY 0x1000000 00377 00378 #define REG_STANDARD_FORMAT 1 00379 #define REG_LATEST_FORMAT 2 00380 #define REG_NO_COMPRESSION 4 00381 00382 #ifndef WIN32_NO_STATUS 00383 00384 #define STATUS_WAIT_0 ((DWORD)0x00000000) 00385 #define STATUS_ABANDONED_WAIT_0 ((DWORD)0x00000080) 00386 #define STATUS_USER_APC ((DWORD)0x000000C0) 00387 #define STATUS_TIMEOUT ((DWORD)0x00000102) 00388 #define STATUS_PENDING ((DWORD)0x00000103) 00389 #define STATUS_SEGMENT_NOTIFICATION ((DWORD)0x40000005) 00390 #define STATUS_GUARD_PAGE_VIOLATION ((DWORD)0x80000001) 00391 #define STATUS_DATATYPE_MISALIGNMENT ((DWORD)0x80000002) 00392 #define STATUS_BREAKPOINT ((DWORD)0x80000003) 00393 #define STATUS_SINGLE_STEP ((DWORD)0x80000004) 00394 #define STATUS_ACCESS_VIOLATION ((DWORD)0xC0000005) 00395 #define STATUS_IN_PAGE_ERROR ((DWORD)0xC0000006) 00396 #define STATUS_INVALID_HANDLE ((DWORD)0xC0000008) 00397 #define STATUS_NO_MEMORY ((DWORD)0xC0000017) 00398 #define STATUS_ILLEGAL_INSTRUCTION ((DWORD)0xC000001D) 00399 #define STATUS_NONCONTINUABLE_EXCEPTION ((DWORD)0xC0000025) 00400 #define STATUS_INVALID_DISPOSITION ((DWORD)0xC0000026) 00401 #define STATUS_ARRAY_BOUNDS_EXCEEDED ((DWORD)0xC000008C) 00402 #define STATUS_FLOAT_DENORMAL_OPERAND ((DWORD)0xC000008D) 00403 #define STATUS_FLOAT_DIVIDE_BY_ZERO ((DWORD)0xC000008E) 00404 #define STATUS_FLOAT_INEXACT_RESULT ((DWORD)0xC000008F) 00405 #define STATUS_FLOAT_INVALID_OPERATION ((DWORD)0xC0000090) 00406 #define STATUS_FLOAT_OVERFLOW ((DWORD)0xC0000091) 00407 #define STATUS_FLOAT_STACK_CHECK ((DWORD)0xC0000092) 00408 #define STATUS_FLOAT_UNDERFLOW ((DWORD)0xC0000093) 00409 #define STATUS_INTEGER_DIVIDE_BY_ZERO ((DWORD)0xC0000094) 00410 #define STATUS_INTEGER_OVERFLOW ((DWORD)0xC0000095) 00411 #define STATUS_PRIVILEGED_INSTRUCTION ((DWORD)0xC0000096) 00412 #define STATUS_STACK_OVERFLOW ((DWORD)0xC00000FD) 00413 #define STATUS_CONTROL_C_EXIT ((DWORD)0xC000013A) 00414 #define STATUS_FLOAT_MULTIPLE_FAULTS ((DWORD)0xC00002B4) 00415 #define STATUS_FLOAT_MULTIPLE_TRAPS ((DWORD)0xC00002B5) 00416 #define STATUS_REG_NAT_CONSUMPTION ((DWORD)0xC00002C9) 00417 #define STATUS_SXS_EARLY_DEACTIVATION ((DWORD)0xC015000F) 00418 #define STATUS_SXS_INVALID_DEACTIVATION ((DWORD)0xC0150010) 00419 00420 #define DBG_EXCEPTION_HANDLED ((DWORD)0x00010001) 00421 #define DBG_CONTINUE ((DWORD)0x00010002) 00422 #define DBG_TERMINATE_THREAD ((DWORD)0x40010003) 00423 #define DBG_TERMINATE_PROCESS ((DWORD)0x40010004) 00424 #define DBG_CONTROL_C ((DWORD)0x40010005) 00425 #define DBG_CONTROL_BREAK ((DWORD)0x40010008) 00426 #define DBG_COMMAND_EXCEPTION ((DWORD)0x40010009) 00427 #define DBG_EXCEPTION_NOT_HANDLED ((DWORD)0x80010001) 00428 00429 #endif /* WIN32_NO_STATUS */ 00430 00431 #define MAXIMUM_ALLOWED 0x2000000 00432 #define GENERIC_READ 0x80000000 00433 #define GENERIC_WRITE 0x40000000 00434 #define GENERIC_EXECUTE 0x20000000 00435 #define GENERIC_ALL 0x10000000 00436 00437 #define INVALID_FILE_ATTRIBUTES ((DWORD)-1) 00438 00439 /* Also in ddk/winddk.h */ 00440 #define FILE_LIST_DIRECTORY 0x00000001 00441 #define FILE_READ_DATA 0x00000001 00442 #define FILE_ADD_FILE 0x00000002 00443 #define FILE_WRITE_DATA 0x00000002 00444 #define FILE_ADD_SUBDIRECTORY 0x00000004 00445 #define FILE_APPEND_DATA 0x00000004 00446 #define FILE_CREATE_PIPE_INSTANCE 0x00000004 00447 #define FILE_READ_EA 0x00000008 00448 #define FILE_READ_PROPERTIES 0x00000008 00449 #define FILE_WRITE_EA 0x00000010 00450 #define FILE_WRITE_PROPERTIES 0x00000010 00451 #define FILE_EXECUTE 0x00000020 00452 #define FILE_TRAVERSE 0x00000020 00453 #define FILE_DELETE_CHILD 0x00000040 00454 #define FILE_READ_ATTRIBUTES 0x00000080 00455 #define FILE_WRITE_ATTRIBUTES 0x00000100 00456 00457 #define FILE_SHARE_READ 0x00000001 00458 #define FILE_SHARE_WRITE 0x00000002 00459 #define FILE_SHARE_DELETE 0x00000004 00460 #define FILE_SHARE_VALID_FLAGS 0x00000007 00461 00462 #define FILE_ATTRIBUTE_READONLY 0x00000001 00463 #define FILE_ATTRIBUTE_HIDDEN 0x00000002 00464 #define FILE_ATTRIBUTE_SYSTEM 0x00000004 00465 #define FILE_ATTRIBUTE_DIRECTORY 0x00000010 00466 #define FILE_ATTRIBUTE_ARCHIVE 0x00000020 00467 #define FILE_ATTRIBUTE_DEVICE 0x00000040 00468 #define FILE_ATTRIBUTE_NORMAL 0x00000080 00469 #define FILE_ATTRIBUTE_TEMPORARY 0x00000100 00470 #define FILE_ATTRIBUTE_SPARSE_FILE 0x00000200 00471 #define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 00472 #define FILE_ATTRIBUTE_COMPRESSED 0x00000800 00473 #define FILE_ATTRIBUTE_OFFLINE 0x00001000 00474 #define FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 0x00002000 00475 #define FILE_ATTRIBUTE_ENCRYPTED 0x00004000 00476 #define FILE_ATTRIBUTE_VALID_FLAGS 0x00007fb7 00477 #define FILE_ATTRIBUTE_VALID_SET_FLAGS 0x000031a7 00478 00479 #define FILE_COPY_STRUCTURED_STORAGE 0x00000041 00480 #define FILE_STRUCTURED_STORAGE 0x00000441 00481 00482 #define FILE_VALID_OPTION_FLAGS 0x00ffffff 00483 #define FILE_VALID_PIPE_OPTION_FLAGS 0x00000032 00484 #define FILE_VALID_MAILSLOT_OPTION_FLAGS 0x00000032 00485 #define FILE_VALID_SET_FLAGS 0x00000036 00486 00487 #define FILE_DIRECTORY_FILE 0x00000001 00488 #define FILE_WRITE_THROUGH 0x00000002 00489 #define FILE_SEQUENTIAL_ONLY 0x00000004 00490 #define FILE_NO_INTERMEDIATE_BUFFERING 0x00000008 00491 #define FILE_SYNCHRONOUS_IO_ALERT 0x00000010 00492 #define FILE_SYNCHRONOUS_IO_NONALERT 0x00000020 00493 #define FILE_NON_DIRECTORY_FILE 0x00000040 00494 #define FILE_CREATE_TREE_CONNECTION 0x00000080 00495 #define FILE_COMPLETE_IF_OPLOCKED 0x00000100 00496 #define FILE_NO_EA_KNOWLEDGE 0x00000200 00497 #define FILE_OPEN_REMOTE_INSTANCE 0x00000400 00498 #define FILE_RANDOM_ACCESS 0x00000800 00499 #define FILE_DELETE_ON_CLOSE 0x00001000 00500 #define FILE_OPEN_BY_FILE_ID 0x00002000 00501 #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 00502 #define FILE_NO_COMPRESSION 0x00008000 00503 #define FILE_RESERVE_OPFILTER 0x00100000 00504 #define FILE_OPEN_REPARSE_POINT 0x00200000 00505 #define FILE_OPEN_NO_RECALL 0x00400000 00506 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 00507 00508 #define FILE_ALL_ACCESS \ 00509 (STANDARD_RIGHTS_REQUIRED | \ 00510 SYNCHRONIZE | \ 00511 0x1FF) 00512 00513 #define FILE_GENERIC_EXECUTE \ 00514 (STANDARD_RIGHTS_EXECUTE | \ 00515 FILE_READ_ATTRIBUTES | \ 00516 FILE_EXECUTE | \ 00517 SYNCHRONIZE) 00518 00519 #define FILE_GENERIC_READ \ 00520 (STANDARD_RIGHTS_READ | \ 00521 FILE_READ_DATA | \ 00522 FILE_READ_ATTRIBUTES | \ 00523 FILE_READ_EA | \ 00524 SYNCHRONIZE) 00525 00526 #define FILE_GENERIC_WRITE \ 00527 (STANDARD_RIGHTS_WRITE | \ 00528 FILE_WRITE_DATA | \ 00529 FILE_WRITE_ATTRIBUTES | \ 00530 FILE_WRITE_EA | \ 00531 FILE_APPEND_DATA | \ 00532 SYNCHRONIZE) 00533 /* end winddk.h */ 00534 /* also in ddk/ntifs.h */ 00535 #define FILE_NOTIFY_CHANGE_FILE_NAME 0x00000001 00536 #define FILE_NOTIFY_CHANGE_DIR_NAME 0x00000002 00537 #define FILE_NOTIFY_CHANGE_NAME 0x00000003 00538 #define FILE_NOTIFY_CHANGE_ATTRIBUTES 0x00000004 00539 #define FILE_NOTIFY_CHANGE_SIZE 0x00000008 00540 #define FILE_NOTIFY_CHANGE_LAST_WRITE 0x00000010 00541 #define FILE_NOTIFY_CHANGE_LAST_ACCESS 0x00000020 00542 #define FILE_NOTIFY_CHANGE_CREATION 0x00000040 00543 #define FILE_NOTIFY_CHANGE_EA 0x00000080 00544 #define FILE_NOTIFY_CHANGE_SECURITY 0x00000100 00545 #define FILE_NOTIFY_CHANGE_STREAM_NAME 0x00000200 00546 #define FILE_NOTIFY_CHANGE_STREAM_SIZE 0x00000400 00547 #define FILE_NOTIFY_CHANGE_STREAM_WRITE 0x00000800 00548 #define FILE_NOTIFY_VALID_MASK 0x00000fff 00549 00550 #define FILE_CASE_SENSITIVE_SEARCH 0x00000001 00551 #define FILE_CASE_PRESERVED_NAMES 0x00000002 00552 #define FILE_UNICODE_ON_DISK 0x00000004 00553 #define FILE_PERSISTENT_ACLS 0x00000008 00554 #define FILE_FILE_COMPRESSION 0x00000010 00555 #define FILE_VOLUME_QUOTAS 0x00000020 00556 #define FILE_SUPPORTS_SPARSE_FILES 0x00000040 00557 #define FILE_SUPPORTS_REPARSE_POINTS 0x00000080 00558 #define FILE_SUPPORTS_REMOTE_STORAGE 0x00000100 00559 #define FS_LFN_APIS 0x00004000 00560 #define FILE_VOLUME_IS_COMPRESSED 0x00008000 00561 #define FILE_SUPPORTS_OBJECT_IDS 0x00010000 00562 #define FILE_SUPPORTS_ENCRYPTION 0x00020000 00563 #define FILE_NAMED_STREAMS 0x00040000 00564 00565 #define IO_COMPLETION_QUERY_STATE 0x0001 00566 #define IO_COMPLETION_MODIFY_STATE 0x0002 00567 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) 00568 /* end ntifs.h */ 00569 00570 /* also in ddk/winddk.h */ 00571 #define DUPLICATE_CLOSE_SOURCE 0x00000001 00572 #define DUPLICATE_SAME_ACCESS 0x00000002 00573 /* end winddk.k */ 00574 00575 #define MAILSLOT_NO_MESSAGE ((DWORD)-1) 00576 #define MAILSLOT_WAIT_FOREVER ((DWORD)-1) 00577 #define PROCESS_TERMINATE 1 00578 #define PROCESS_CREATE_THREAD 2 00579 #define PROCESS_SET_SESSIONID 4 00580 #define PROCESS_VM_OPERATION 8 00581 #define PROCESS_VM_READ 16 00582 #define PROCESS_VM_WRITE 32 00583 #define PROCESS_CREATE_PROCESS 128 00584 #define PROCESS_SET_QUOTA 256 00585 #define PROCESS_SET_INFORMATION 512 00586 #define PROCESS_QUERY_INFORMATION 1024 00587 #define PROCESS_SUSPEND_RESUME 2048 00588 #define PROCESS_QUERY_LIMITED_INFORMATION 0x1000 00589 #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xFFF) 00590 #define PROCESS_DUP_HANDLE 64 00591 #define THREAD_TERMINATE 1 00592 #define THREAD_SUSPEND_RESUME 2 00593 #define THREAD_GET_CONTEXT 8 00594 #define THREAD_SET_CONTEXT 16 00595 #define THREAD_SET_INFORMATION 32 00596 #define THREAD_QUERY_INFORMATION 64 00597 #define THREAD_SET_THREAD_TOKEN 128 00598 #define THREAD_IMPERSONATE 256 00599 #define THREAD_DIRECT_IMPERSONATION 0x200 00600 #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF) 00601 #define MUTANT_QUERY_STATE 0x0001 00602 #define MUTANT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|MUTANT_QUERY_STATE) 00603 #define TIMER_QUERY_STATE 0x0001 00604 #define TIMER_MODIFY_STATE 0x0002 00605 #define TIMER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|TIMER_QUERY_STATE|TIMER_MODIFY_STATE) 00606 #define THREAD_BASE_PRIORITY_LOWRT 15 00607 #define THREAD_BASE_PRIORITY_MAX 2 00608 #define THREAD_BASE_PRIORITY_MIN (-2) 00609 #define THREAD_BASE_PRIORITY_IDLE (-15) 00610 /* 00611 * To prevent gcc compiler warnings, bracket these defines when initialising 00612 * a SID_IDENTIFIER_AUTHORITY, eg. 00613 * SID_IDENTIFIER_AUTHORITY aNullSidAuthority = {SECURITY_NULL_SID_AUTHORITY}; 00614 */ 00615 #define SID_MAX_SUB_AUTHORITIES 15 00616 00617 /* security entities */ 00618 #define SECURITY_NULL_RID (0x00000000L) 00619 #define SECURITY_WORLD_RID (0x00000000L) 00620 #define SECURITY_LOCAL_RID (0X00000000L) 00621 00622 #define SECURITY_NULL_SID_AUTHORITY {0,0,0,0,0,0} 00623 00624 /* S-1-1 */ 00625 #define SECURITY_WORLD_SID_AUTHORITY {0,0,0,0,0,1} 00626 00627 /* S-1-2 */ 00628 #define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2} 00629 00630 /* S-1-3 */ 00631 #define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3} 00632 #define SECURITY_CREATOR_OWNER_RID (0x00000000L) 00633 #define SECURITY_CREATOR_GROUP_RID (0x00000001L) 00634 #define SECURITY_CREATOR_OWNER_SERVER_RID (0x00000002L) 00635 #define SECURITY_CREATOR_GROUP_SERVER_RID (0x00000003L) 00636 00637 /* S-1-4 */ 00638 #define SECURITY_NON_UNIQUE_AUTHORITY {0,0,0,0,0,4} 00639 00640 /* S-1-5 */ 00641 #define SECURITY_NT_AUTHORITY {0,0,0,0,0,5} 00642 #define SECURITY_DIALUP_RID 0x00000001L 00643 #define SECURITY_NETWORK_RID 0x00000002L 00644 #define SECURITY_BATCH_RID 0x00000003L 00645 #define SECURITY_INTERACTIVE_RID 0x00000004L 00646 #define SECURITY_LOGON_IDS_RID 0x00000005L 00647 #define SECURITY_SERVICE_RID 0x00000006L 00648 #define SECURITY_ANONYMOUS_LOGON_RID 0x00000007L 00649 #define SECURITY_PROXY_RID 0x00000008L 00650 #define SECURITY_ENTERPRISE_CONTROLLERS_RID 0x00000009L 00651 #define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID 00652 #define SECURITY_PRINCIPAL_SELF_RID 0x0000000AL 00653 #define SECURITY_AUTHENTICATED_USER_RID 0x0000000BL 00654 #define SECURITY_RESTRICTED_CODE_RID 0x0000000CL 00655 #define SECURITY_TERMINAL_SERVER_RID 0x0000000DL 00656 #define SECURITY_REMOTE_LOGON_RID 0x0000000EL 00657 #define SECURITY_THIS_ORGANIZATION_RID 0x0000000FL 00658 #define SECURITY_LOCAL_SYSTEM_RID 0x00000012L 00659 #define SECURITY_LOCAL_SERVICE_RID 0x00000013L 00660 #define SECURITY_NETWORK_SERVICE_RID 0x00000014L 00661 #define SECURITY_NT_NON_UNIQUE 0x00000015L 00662 #define SECURITY_BUILTIN_DOMAIN_RID 0x00000020L 00663 00664 #define SECURITY_PACKAGE_BASE_RID 0x00000040L 00665 #define SECURITY_PACKAGE_NTLM_RID 0x0000000AL 00666 #define SECURITY_PACKAGE_SCHANNEL_RID 0x0000000EL 00667 #define SECURITY_PACKAGE_DIGEST_RID 0x00000015L 00668 #define SECURITY_OTHER_ORGANIZATION_RID 0x000003E8L 00669 00670 #define SECURITY_LOGON_IDS_RID_COUNT 0x3 00671 #define SID_REVISION 1 00672 00673 #define FOREST_USER_RID_MAX 0x000001F3L 00674 #define DOMAIN_USER_RID_ADMIN 0x000001F4L 00675 #define DOMAIN_USER_RID_GUEST 0x000001F5L 00676 #define DOMAIN_USER_RID_KRBTGT 0x000001F6L 00677 #define DOMAIN_USER_RID_MAX 0x000003E7L 00678 00679 #define DOMAIN_GROUP_RID_ADMINS 0x00000200L 00680 #define DOMAIN_GROUP_RID_USERS 0x00000201L 00681 #define DOMAIN_GROUP_RID_GUESTS 0x00000202L 00682 #define DOMAIN_GROUP_RID_COMPUTERS 0x00000203L 00683 #define DOMAIN_GROUP_RID_CONTROLLERS 0x00000204L 00684 #define DOMAIN_GROUP_RID_CERT_ADMINS 0x00000205L 00685 #define DOMAIN_GROUP_RID_SCHEMA_ADMINS 0x00000206L 00686 #define DOMAIN_GROUP_RID_ENTERPRISE_ADMINS 0x00000207L 00687 #define DOMAIN_GROUP_RID_POLICY_ADMINS 0x00000208L 00688 00689 #define SECURITY_MANDATORY_LABEL_AUTHORITY {0,0,0,0,0,16} 00690 #define SECURITY_MANDATORY_UNTRUSTED_RID 0x00000000L 00691 #define SECURITY_MANDATORY_LOW_RID 0x00001000L 00692 #define SECURITY_MANDATORY_MEDIUM_RID 0x00002000L 00693 #define SECURITY_MANDATORY_HIGH_RID 0x00003000L 00694 #define SECURITY_MANDATORY_SYSTEM_RID 0x00004000L 00695 #define SECURITY_MANDATORY_PROTECTED_PROCESS_RID 0x00005000L 00696 00697 #define DOMAIN_ALIAS_RID_ADMINS 0x00000220L 00698 #define DOMAIN_ALIAS_RID_USERS 0x00000221L 00699 #define DOMAIN_ALIAS_RID_GUESTS 0x00000222L 00700 #define DOMAIN_ALIAS_RID_POWER_USERS 0x00000223L 00701 00702 #define DOMAIN_ALIAS_RID_ACCOUNT_OPS 0x00000224L 00703 #define DOMAIN_ALIAS_RID_SYSTEM_OPS 0x00000225L 00704 #define DOMAIN_ALIAS_RID_PRINT_OPS 0x00000226L 00705 #define DOMAIN_ALIAS_RID_BACKUP_OPS 0x00000227L 00706 00707 #define DOMAIN_ALIAS_RID_REPLICATOR 0x00000228L 00708 #define DOMAIN_ALIAS_RID_RAS_SERVERS 0x00000229L 00709 #define DOMAIN_ALIAS_RID_PREW2KCOMPACCESS 0x0000022AL 00710 #define DOMAIN_ALIAS_RID_REMOTE_DESKTOP_USERS 0x0000022BL 00711 #define DOMAIN_ALIAS_RID_NETWORK_CONFIGURATION_OPS 0x0000022CL 00712 #define DOMAIN_ALIAS_RID_INCOMING_FOREST_TRUST_BUILDERS 0x0000022DL 00713 00714 #define DOMAIN_ALIAS_RID_MONITORING_USERS 0x0000022EL 00715 #define DOMAIN_ALIAS_RID_LOGGING_USERS 0x0000022FL 00716 #define DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS 0x00000230L 00717 #define DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS 0x00000231L 00718 #define DOMAIN_ALIAS_RID_DCOM_USERS 0x00000232L 00719 00720 #define SECURITY_MANDATORY_LABEL_AUTHORITY {0,0,0,0,0,16} 00721 00722 typedef enum { 00723 WinNullSid = 0, 00724 WinWorldSid = 1, 00725 WinLocalSid = 2, 00726 WinCreatorOwnerSid = 3, 00727 WinCreatorGroupSid = 4, 00728 WinCreatorOwnerServerSid = 5, 00729 WinCreatorGroupServerSid = 6, 00730 WinNtAuthoritySid = 7, 00731 WinDialupSid = 8, 00732 WinNetworkSid = 9, 00733 WinBatchSid = 10, 00734 WinInteractiveSid = 11, 00735 WinServiceSid = 12, 00736 WinAnonymousSid = 13, 00737 WinProxySid = 14, 00738 WinEnterpriseControllersSid = 15, 00739 WinSelfSid = 16, 00740 WinAuthenticatedUserSid = 17, 00741 WinRestrictedCodeSid = 18, 00742 WinTerminalServerSid = 19, 00743 WinRemoteLogonIdSid = 20, 00744 WinLogonIdsSid = 21, 00745 WinLocalSystemSid = 22, 00746 WinLocalServiceSid = 23, 00747 WinNetworkServiceSid = 24, 00748 WinBuiltinDomainSid = 25, 00749 WinBuiltinAdministratorsSid = 26, 00750 WinBuiltinUsersSid = 27, 00751 WinBuiltinGuestsSid = 28, 00752 WinBuiltinPowerUsersSid = 29, 00753 WinBuiltinAccountOperatorsSid = 30, 00754 WinBuiltinSystemOperatorsSid = 31, 00755 WinBuiltinPrintOperatorsSid = 32, 00756 WinBuiltinBackupOperatorsSid = 33, 00757 WinBuiltinReplicatorSid = 34, 00758 WinBuiltinPreWindows2000CompatibleAccessSid = 35, 00759 WinBuiltinRemoteDesktopUsersSid = 36, 00760 WinBuiltinNetworkConfigurationOperatorsSid = 37, 00761 WinAccountAdministratorSid = 38, 00762 WinAccountGuestSid = 39, 00763 WinAccountKrbtgtSid = 40, 00764 WinAccountDomainAdminsSid = 41, 00765 WinAccountDomainUsersSid = 42, 00766 WinAccountDomainGuestsSid = 43, 00767 WinAccountComputersSid = 44, 00768 WinAccountControllersSid = 45, 00769 WinAccountCertAdminsSid = 46, 00770 WinAccountSchemaAdminsSid = 47, 00771 WinAccountEnterpriseAdminsSid = 48, 00772 WinAccountPolicyAdminsSid = 49, 00773 WinAccountRasAndIasServersSid = 50, 00774 WinNTLMAuthenticationSid = 51, 00775 WinDigestAuthenticationSid = 52, 00776 WinSChannelAuthenticationSid = 53, 00777 WinThisOrganizationSid = 54, 00778 WinOtherOrganizationSid = 55, 00779 WinBuiltinIncomingForestTrustBuildersSid = 56, 00780 WinBuiltinPerfMonitoringUsersSid = 57, 00781 WinBuiltinPerfLoggingUsersSid = 58, 00782 WinBuiltinAuthorizationAccessSid = 59, 00783 WinBuiltinTerminalServerLicenseServersSid = 60, 00784 WinBuiltinDCOMUsersSid = 61, 00785 WinBuiltinIUsersSid = 62, 00786 WinIUserSid = 63, 00787 WinBuiltinCryptoOperatorsSid = 64, 00788 WinUntrustedLabelSid = 65, 00789 WinLowLabelSid = 66, 00790 WinMediumLabelSid = 67, 00791 WinHighLabelSid = 68, 00792 WinSystemLabelSid = 69, 00793 WinWriteRestrictedCodeSid = 70, 00794 WinCreatorOwnerRightsSid = 71, 00795 WinCacheablePrincipalsGroupSid = 72, 00796 WinNonCacheablePrincipalsGroupSid = 73, 00797 WinEnterpriseReadonlyControllersSid = 74, 00798 WinAccountReadonlyControllersSid = 75, 00799 WinBuiltinEventLogReadersGroup = 76, 00800 WinNewEnterpriseReadonlyControllersSid = 77, 00801 WinBuiltinCertSvcDComAccessGroup = 78, 00802 WinMediumPlusLabelSid = 79, 00803 WinLocalLogonSid = 80, 00804 WinConsoleLogonSid = 81, 00805 WinThisOrganizationCertificateSid = 82, 00806 } WELL_KNOWN_SID_TYPE; 00807 00808 #define SE_CREATE_TOKEN_NAME TEXT("SeCreateTokenPrivilege") 00809 #define SE_ASSIGNPRIMARYTOKEN_NAME TEXT("SeAssignPrimaryTokenPrivilege") 00810 #define SE_LOCK_MEMORY_NAME TEXT("SeLockMemoryPrivilege") 00811 #define SE_INCREASE_QUOTA_NAME TEXT("SeIncreaseQuotaPrivilege") 00812 #define SE_UNSOLICITED_INPUT_NAME TEXT("SeUnsolicitedInputPrivilege") 00813 #define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege") 00814 #define SE_TCB_NAME TEXT("SeTcbPrivilege") 00815 #define SE_SECURITY_NAME TEXT("SeSecurityPrivilege") 00816 #define SE_TAKE_OWNERSHIP_NAME TEXT("SeTakeOwnershipPrivilege") 00817 #define SE_LOAD_DRIVER_NAME TEXT("SeLoadDriverPrivilege") 00818 #define SE_SYSTEM_PROFILE_NAME TEXT("SeSystemProfilePrivilege") 00819 #define SE_SYSTEMTIME_NAME TEXT("SeSystemtimePrivilege") 00820 #define SE_PROF_SINGLE_PROCESS_NAME TEXT("SeProfileSingleProcessPrivilege") 00821 #define SE_INC_BASE_PRIORITY_NAME TEXT("SeIncreaseBasePriorityPrivilege") 00822 #define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege") 00823 #define SE_CREATE_PERMANENT_NAME TEXT("SeCreatePermanentPrivilege") 00824 #define SE_BACKUP_NAME TEXT("SeBackupPrivilege") 00825 #define SE_RESTORE_NAME TEXT("SeRestorePrivilege") 00826 #define SE_SHUTDOWN_NAME TEXT("SeShutdownPrivilege") 00827 #define SE_DEBUG_NAME TEXT("SeDebugPrivilege") 00828 #define SE_AUDIT_NAME TEXT("SeAuditPrivilege") 00829 #define SE_SYSTEM_ENVIRONMENT_NAME TEXT("SeSystemEnvironmentPrivilege") 00830 #define SE_CHANGE_NOTIFY_NAME TEXT("SeChangeNotifyPrivilege") 00831 #define SE_REMOTE_SHUTDOWN_NAME TEXT("SeRemoteShutdownPrivilege") 00832 #define SE_UNDOCK_NAME TEXT("SeUndockPrivilege") 00833 #define SE_SYNC_AGENT_NAME TEXT("SeSyncAgentPrivilege") 00834 #define SE_ENABLE_DELEGATION_NAME TEXT("SeEnableDelegationPrivilege") 00835 #define SE_MANAGE_VOLUME_NAME TEXT("SeManageVolumePrivilege") 00836 #define SE_IMPERSONATE_NAME TEXT("SeImpersonatePrivilege") 00837 #define SE_CREATE_GLOBAL_NAME TEXT("SeCreateGlobalPrivilege") 00838 #define SE_GROUP_MANDATORY 1 00839 #define SE_GROUP_ENABLED_BY_DEFAULT 2 00840 #define SE_GROUP_ENABLED 4 00841 #define SE_GROUP_OWNER 8 00842 #define SE_GROUP_USE_FOR_DENY_ONLY 16 00843 #define SE_GROUP_LOGON_ID 3221225472U 00844 #define SE_GROUP_RESOURCE 536870912 00845 #define LANG_NEUTRAL 0x00 00846 #define LANG_INVARIANT 0x7f 00847 #define LANG_AFRIKAANS 0x36 00848 #define LANG_ALBANIAN 0x1c 00849 #define LANG_ALSATIAN 0x84 00850 #define LANG_AMHARIC 0x5e 00851 #define LANG_ARABIC 0x01 00852 #define LANG_ARMENIAN 0x2b 00853 #define LANG_ASSAMESE 0x4d 00854 #define LANG_AZERI 0x2c 00855 #define LANG_BASHKIR 0x6d 00856 #define LANG_BASQUE 0x2d 00857 #define LANG_BELARUSIAN 0x23 00858 #define LANG_BENGALI 0x45 00859 #define LANG_BOSNIAN 0x1a 00860 #define LANG_BRETON 0x7e 00861 #define LANG_BULGARIAN 0x02 00862 #define LANG_CATALAN 0x03 00863 #define LANG_CHINESE 0x04 00864 #define LANG_CHINESE_SIMPLIFIED 0x04 00865 #define LANG_CORSICAN 0x83 00866 #define LANG_CROATIAN 0x1a 00867 #define LANG_CROATIAN 0x1a 00868 #define LANG_CZECH 0x05 00869 #define LANG_DANISH 0x06 00870 #define LANG_DARI 0x8c 00871 #define LANG_DIVEHI 0x65 00872 #define LANG_DUTCH 0x13 00873 #define LANG_ENGLISH 0x09 00874 #define LANG_ESTONIAN 0x25 00875 #define LANG_FAEROESE 0x38 00876 #define LANG_FILIPINO 0x64 00877 #define LANG_FINNISH 0x0b 00878 #define LANG_FRENCH 0x0c 00879 #define LANG_FRISIAN 0x62 00880 #define LANG_GALICIAN 0x56 00881 #define LANG_GEORGIAN 0x37 00882 #define LANG_GERMAN 0x07 00883 #define LANG_GREEK 0x08 00884 #define LANG_GREENLANDIC 0x6f 00885 #define LANG_GUJARATI 0x47 00886 #define LANG_HAUSA 0x68 00887 #define LANG_HEBREW 0x0d 00888 #define LANG_HINDI 0x39 00889 #define LANG_HUNGARIAN 0x0e 00890 #define LANG_ICELANDIC 0x0f 00891 #define LANG_IGBO 0x70 00892 #define LANG_INDONESIAN 0x21 00893 #define LANG_INUKTITUT 0x5d 00894 #define LANG_IRISH 0x3c 00895 #define LANG_ITALIAN 0x10 00896 #define LANG_JAPANESE 0x11 00897 #define LANG_KANNADA 0x4b 00898 #define LANG_KASHMIRI 0x60 00899 #define LANG_KAZAK 0x3f 00900 #define LANG_KHMER 0x53 00901 #define LANG_KICHE 0x86 00902 #define LANG_KINYARWANDA 0x87 00903 #define LANG_KONKANI 0x57 00904 #define LANG_KOREAN 0x12 00905 #define LANG_KYRGYZ 0x40 00906 #define LANG_LAO 0x54 00907 #define LANG_LATVIAN 0x26 00908 #define LANG_LITHUANIAN 0x27 00909 #define LANG_LOWER_SORBIAN 0x2e 00910 #define LANG_LUXEMBOURGISH 0x6e 00911 #define LANG_MACEDONIAN 0x2f 00912 #define LANG_MALAY 0x3e 00913 #define LANG_MALAYALAM 0x4c 00914 #define LANG_MALTESE 0x3a 00915 #define LANG_MANIPURI 0x58 00916 #define LANG_MAORI 0x81 00917 #define LANG_MAPUDUNGUN 0x7a 00918 #define LANG_MARATHI 0x4e 00919 #define LANG_MOHAWK 0x7c 00920 #define LANG_MONGOLIAN 0x50 00921 #define LANG_NEPALI 0x61 00922 #define LANG_NORWEGIAN 0x14 00923 #define LANG_OCCITAN 0x82 00924 #define LANG_ORIYA 0x48 00925 #define LANG_PASHTO 0x63 00926 #define LANG_FARSI 0x29 00927 #define LANG_PERSIAN 0x29 00928 #define LANG_POLISH 0x15 00929 #define LANG_PORTUGUESE 0x16 00930 #define LANG_PUNJABI 0x46 00931 #define LANG_QUECHUA 0x6b 00932 #define LANG_ROMANIAN 0x18 00933 #define LANG_ROMANSH 0x17 00934 #define LANG_RUSSIAN 0x19 00935 #define LANG_SAMI 0x3b 00936 #define LANG_SANSKRIT 0x4f 00937 #define LANG_SERBIAN 0x1a 00938 #define LANG_SOTHO 0x6c 00939 #define LANG_TSWANA 0x32 00940 #define LANG_SINDHI 0x59 00941 #define LANG_SINHALESE 0x5b 00942 #define LANG_SLOVAK 0x1b 00943 #define LANG_SLOVENIAN 0x24 00944 #define LANG_SPANISH 0x0a 00945 #define LANG_SWAHILI 0x41 00946 #define LANG_SWEDISH 0x1d 00947 #define LANG_SYRIAC 0x5a 00948 #define LANG_TAJIK 0x28 00949 #define LANG_TAMAZIGHT 0x5f 00950 #define LANG_TAMIL 0x49 00951 #define LANG_TATAR 0x44 00952 #define LANG_TELUGU 0x4a 00953 #define LANG_THAI 0x1e 00954 #define LANG_TIBETAN 0x51 00955 #define LANG_TIGRIGNA 0x73 00956 #define LANG_TURKISH 0x1f 00957 #define LANG_TURKMEN 0x42 00958 #define LANG_UIGHUR 0x80 00959 #define LANG_UKRAINIAN 0x22 00960 #define LANG_UPPER_SORBIAN 0x2e 00961 #define LANG_URDU 0x20 00962 #define LANG_UZBEK 0x43 00963 #define LANG_VIETNAMESE 0x2a 00964 #define LANG_WELSH 0x52 00965 #define LANG_WOLOF 0x88 00966 #define LANG_XHOSA 0x34 00967 #define LANG_YAKUT 0x85 00968 #define LANG_YI 0x78 00969 #define LANG_YORUBA 0x6a 00970 #define LANG_ZULU 0x35 00971 00972 /* FIXME: non-standard */ 00973 #define LANG_ESPERANTO 0x8f 00974 #define LANG_WALON 0x90 00975 #define LANG_CORNISH 0x91 00976 00977 /* FIXME: not present in the official headers */ 00978 #define LANG_GAELIC 0x94 00979 #define LANG_SAAMI 0x3b 00980 #define LANG_SUTU 0x30 00981 #define LANG_TSONGA 0x31 00982 #define LANG_VENDA 0x33 00983 00984 #define SUBLANG_CUSTOM_UNSPECIFIED 0x04 00985 #define SUBLANG_CUSTOM_DEFAULT 0x03 00986 #define SUBLANG_UI_CUSTOM_DEFAULT 0x05 00987 #define SUBLANG_NEUTRAL 0x00 00988 #define SUBLANG_SYS_DEFAULT 0x02 00989 #define SUBLANG_DEFAULT 0x01 00990 #define SUBLANG_AFRIKAANS_SOUTH_AFRICA 0x01 00991 #define SUBLANG_ALBANIAN_ALBANIA 0x01 00992 #define SUBLANG_ALSATIAN_FRANCE 0x01 00993 #define SUBLANG_AMHARIC_ETHIOPIA 0x01 00994 #define SUBLANG_ARABIC_ALGERIA 0x05 00995 #define SUBLANG_ARABIC_BAHRAIN 0x0f 00996 #define SUBLANG_ARABIC_EGYPT 0x03 00997 #define SUBLANG_ARABIC_IRAQ 0x02 00998 #define SUBLANG_ARABIC_JORDAN 0x0b 00999 #define SUBLANG_ARABIC_KUWAIT 0x0d 01000 #define SUBLANG_ARABIC_LEBANON 0x0c 01001 #define SUBLANG_ARABIC_LIBYA 0x04 01002 #define SUBLANG_ARABIC_MOROCCO 0x06 01003 #define SUBLANG_ARABIC_OMAN 0x08 01004 #define SUBLANG_ARABIC_QATAR 0x10 01005 #define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 01006 #define SUBLANG_ARABIC_SYRIA 0x0a 01007 #define SUBLANG_ARABIC_TUNISIA 0x07 01008 #define SUBLANG_ARABIC_UAE 0x0e 01009 #define SUBLANG_ARABIC_YEMEN 0x09 01010 #define SUBLANG_ARMENIAN_ARMENIA 0x01 01011 #define SUBLANG_ASSAMESE_INDIA 0x01 01012 #define SUBLANG_AZERI_CYRILLIC 0x02 01013 #define SUBLANG_AZERI_LATIN 0x01 01014 #define SUBLANG_BASHKIR_RUSSIA 0x01 01015 #define SUBLANG_BASQUE_BASQUE 0x01 01016 #define SUBLANG_BELARUSIAN_BELARUS 0x01 01017 #define SUBLANG_BENGALI_BANGLADESH 0x02 01018 #define SUBLANG_BENGALI_INDIA 0x01 01019 #define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08 01020 #define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05 01021 #define SUBLANG_BRETON_FRANCE 0x01 01022 #define SUBLANG_BULGARIAN_BULGARIA 0x01 01023 #define SUBLANG_CATALAN_CATALAN 0x01 01024 #define SUBLANG_CHINESE_HONGKONG 0x03 01025 #define SUBLANG_CHINESE_MACAU 0x05 01026 #define SUBLANG_CHINESE_SINGAPORE 0x04 01027 #define SUBLANG_CHINESE_SIMPLIFIED 0x02 01028 #define SUBLANG_CHINESE_TRADITIONAL 0x01 01029 #define SUBLANG_CORSICAN_FRANCE 0x01 01030 #define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04 01031 #define SUBLANG_CROATIAN_CROATIA 0x01 01032 #define SUBLANG_CZECH_CZECH_REPUBLIC 0x01 01033 #define SUBLANG_DANISH_DENMARK 0x01 01034 #define SUBLANG_DARI_AFGHANISTAN 0x01 01035 #define SUBLANG_DIVEHI_MALDIVES 0x01 01036 #define SUBLANG_DUTCH_BELGIAN 0x02 01037 #define SUBLANG_DUTCH 0x01 01038 #define SUBLANG_ENGLISH_AUS 0x03 01039 #define SUBLANG_ENGLISH_BELIZE 0x0a 01040 #define SUBLANG_ENGLISH_CAN 0x04 01041 #define SUBLANG_ENGLISH_CARIBBEAN 0x09 01042 #define SUBLANG_ENGLISH_INDIA 0x10 01043 #define SUBLANG_ENGLISH_EIRE 0x06 01044 #define SUBLANG_ENGLISH_IRELAND 0x06 01045 #define SUBLANG_ENGLISH_JAMAICA 0x08 01046 #define SUBLANG_ENGLISH_MALAYSIA 0x11 01047 #define SUBLANG_ENGLISH_NZ 0x05 01048 #define SUBLANG_ENGLISH_PHILIPPINES 0x0d 01049 #define SUBLANG_ENGLISH_SINGAPORE 0x12 01050 #define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 01051 #define SUBLANG_ENGLISH_TRINIDAD 0x0b 01052 #define SUBLANG_ENGLISH_UK 0x02 01053 #define SUBLANG_ENGLISH_US 0x01 01054 #define SUBLANG_ENGLISH_ZIMBABWE 0x0c 01055 #define SUBLANG_ESTONIAN_ESTONIA 0x01 01056 #define SUBLANG_FAEROESE_FAROE_ISLANDS 0x01 01057 #define SUBLANG_FILIPINO_PHILIPPINES 0x01 01058 #define SUBLANG_FINNISH_FINLAND 0x01 01059 #define SUBLANG_FRENCH_BELGIAN 0x02 01060 #define SUBLANG_FRENCH_CANADIAN 0x03 01061 #define SUBLANG_FRENCH 0x01 01062 #define SUBLANG_FRENCH_LUXEMBOURG 0x05 01063 #define SUBLANG_FRENCH_MONACO 0x06 01064 #define SUBLANG_FRENCH_SWISS 0x04 01065 #define SUBLANG_FRISIAN_NETHERLANDS 0x01 01066 #define SUBLANG_GALICIAN_GALICIAN 0x01 01067 #define SUBLANG_GEORGIAN_GEORGIA 0x01 01068 #define SUBLANG_GERMAN_AUSTRIAN 0x03 01069 #define SUBLANG_GERMAN 0x01 01070 #define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 01071 #define SUBLANG_GERMAN_LUXEMBOURG 0x04 01072 #define SUBLANG_GERMAN_SWISS 0x02 01073 #define SUBLANG_GREEK_GREECE 0x01 01074 #define SUBLANG_GREENLANDIC_GREENLAND 0x01 01075 #define SUBLANG_GUJARATI_INDIA 0x01 01076 #define SUBLANG_HAUSA_NIGERIA_LATIN 0x01 01077 #define SUBLANG_HAUSA_NIGERIA 0x01 01078 #define SUBLANG_HEBREW_ISRAEL 0x01 01079 #define SUBLANG_HINDI_INDIA 0x01 01080 #define SUBLANG_HUNGARIAN_HUNGARY 0x01 01081 #define SUBLANG_ICELANDIC_ICELAND 0x01 01082 #define SUBLANG_IGBO_NIGERIA 0x01 01083 #define SUBLANG_INDONESIAN_INDONESIA 0x01 01084 #define SUBLANG_INUKTITUT_CANADA_LATIN 0x02 01085 #define SUBLANG_INUKTITUT_CANADA 0x01 01086 #define SUBLANG_IRISH_IRELAND 0x02 01087 #define SUBLANG_ITALIAN 0x01 01088 #define SUBLANG_ITALIAN_SWISS 0x02 01089 #define SUBLANG_JAPANESE_JAPAN 0x01 01090 #define SUBLANG_KANNADA_INDIA 0x01 01091 #define SUBLANG_KASHMIRI_INDIA 0x02 01092 #define SUBLANG_KASHMIRI_SASIA 0x02 01093 #define SUBLANG_KAZAK_KAZAKHSTAN 0x01 01094 #define SUBLANG_KHMER_CAMBODIA 0x01 01095 #define SUBLANG_KICHE_GUATEMALA 0x01 01096 #define SUBLANG_KINYARWANDA_RWANDA 0x01 01097 #define SUBLANG_KONKANI_INDIA 0x01 01098 #define SUBLANG_KOREAN 0x01 01099 #define SUBLANG_KYRGYZ_KYRGYZSTAN 0x01 01100 #define SUBLANG_LAO_LAO 0x01 01101 #define SUBLANG_LAO_LAO_PDR 0x01 01102 #define SUBLANG_LATVIAN_LATVIA 0x01 01103 #define SUBLANG_LITHUANIAN_LITHUANIA 0x01 01104 #define SUBLANG_LITHUANIAN 0x01 01105 #define SUBLANG_LOWER_SORBIAN_GERMANY 0x02 01106 #define SUBLANG_LUXEMBOURGISH_LUXEMBOURG 0x01 01107 #define SUBLANG_MACEDONIAN_MACEDONIA 0x01 01108 #define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 01109 #define SUBLANG_MALAY_MALAYSIA 0x01 01110 #define SUBLANG_MALAYALAM_INDIA 0x01 01111 #define SUBLANG_MALTESE_MALTA 0x01 01112 #define SUBLANG_MAORI_NEW_ZEALAND 0x01 01113 #define SUBLANG_MAPUDUNGUN_CHILE 0x01 01114 #define SUBLANG_MARATHI_INDIA 0x01 01115 #define SUBLANG_MOHAWK_MOHAWK 0x01 01116 #define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01 01117 #define SUBLANG_MONGOLIAN_PRC 0x02 01118 #define SUBLANG_NEPALI_NEPAL 0x01 01119 #define SUBLANG_NEPALI_INDIA 0x02 01120 #define SUBLANG_NORWEGIAN_BOKMAL 0x01 01121 #define SUBLANG_NORWEGIAN_NYNORSK 0x02 01122 #define SUBLANG_OCCITAN_FRANCE 0x01 01123 #define SUBLANG_ORIYA_INDIA 0x01 01124 #define SUBLANG_PASHTO_AFGHANISTAN 0x01 01125 #define SUBLANG_PERSIAN_IRAN 0x01 01126 #define SUBLANG_POLISH_POLAND 0x01 01127 #define SUBLANG_PORTUGUESE_BRAZILIAN 0x01 01128 #define SUBLANG_PORTUGUESE 0x02 01129 #define SUBLANG_PORTUGUESE_PORTUGAL 0x02 01130 #define SUBLANG_PUNJABI_INDIA 0x01 01131 #define SUBLANG_QUECHUA_BOLIVIA 0x01 01132 #define SUBLANG_QUECHUA_ECUADOR 0x02 01133 #define SUBLANG_QUECHUA_PERU 0x03 01134 #define SUBLANG_ROMANIAN_ROMANIA 0x01 01135 #define SUBLANG_ROMANSH_SWITZERLAND 0x01 01136 #define SUBLANG_RUSSIAN_RUSSIA 0x01 01137 #define SUBLANG_SAMI_INARI_FINLAND 0x09 01138 #define SUBLANG_SAMI_LULE_NORWAY 0x04 01139 #define SUBLANG_SAMI_LULE_SWEDEN 0x05 01140 #define SUBLANG_SAMI_NORTHERN_FINLAND 0x03 01141 #define SUBLANG_SAMI_NORTHERN_NORWAY 0x01 01142 #define SUBLANG_SAMI_NORTHERN_SWEDEN 0x02 01143 #define SUBLANG_SAMI_SKOLT_FINLAND 0x08 01144 #define SUBLANG_SAMI_SOUTHERN_NORWAY 0x06 01145 #define SUBLANG_SAMI_SOUTHERN_SWEDEN 0x07 01146 #define SUBLANG_SANSKRIT_INDIA 0x01 01147 #define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x07 01148 #define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN 0x06 01149 #define SUBLANG_SERBIAN_CROATIA 0x01 01150 #define SUBLANG_SERBIAN_CYRILLIC 0x03 01151 #define SUBLANG_SERBIAN_LATIN 0x02 01152 #define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA 0x01 01153 #define SUBLANG_TSWANA_SOUTH_AFRICA 0x01 01154 #define SUBLANG_SINDHI_AFGHANISTAN 0x02 01155 #define SUBLANG_SINDHI_PAKISTAN 0x01 01156 #define SUBLANG_SINHALESE_SRI_LANKA 0x01 01157 #define SUBLANG_SLOVAK_SLOVAKIA 0x01 01158 #define SUBLANG_SLOVENIAN_SLOVENIA 0x01 01159 #define SUBLANG_SPANISH_ARGENTINA 0x0b 01160 #define SUBLANG_SPANISH_BOLIVIA 0x10 01161 #define SUBLANG_SPANISH_CHILE 0x0d 01162 #define SUBLANG_SPANISH_COLOMBIA 0x09 01163 #define SUBLANG_SPANISH_COSTA_RICA 0x05 01164 #define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 01165 #define SUBLANG_SPANISH_ECUADOR 0x0c 01166 #define SUBLANG_SPANISH_EL_SALVADOR 0x11 01167 #define SUBLANG_SPANISH_GUATEMALA 0x04 01168 #define SUBLANG_SPANISH_HONDURAS 0x12 01169 #define SUBLANG_SPANISH_MEXICAN 0x02 01170 #define SUBLANG_SPANISH_MODERN 0x03 01171 #define SUBLANG_SPANISH_NICARAGUA 0x13 01172 #define SUBLANG_SPANISH_PANAMA 0x06 01173 #define SUBLANG_SPANISH_PARAGUAY 0x0f 01174 #define SUBLANG_SPANISH_PERU 0x0a 01175 #define SUBLANG_SPANISH_PUERTO_RICO 0x14 01176 #define SUBLANG_SPANISH 0x01 01177 #define SUBLANG_SPANISH_US 0x15 01178 #define SUBLANG_SPANISH_URUGUAY 0x0e 01179 #define SUBLANG_SPANISH_VENEZUELA 0x08 01180 #define SUBLANG_SWAHILI 0x01 01181 #define SUBLANG_SWAHILI_KENYA 0x01 01182 #define SUBLANG_SWEDISH_FINLAND 0x02 01183 #define SUBLANG_SWEDISH 0x01 01184 #define SUBLANG_SWEDISH_SWEDEN 0x01 01185 #define SUBLANG_SYRIAC 0x01 01186 #define SUBLANG_TAJIK_TAJIKISTAN 0x01 01187 #define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02 01188 #define SUBLANG_TAMIL_INDIA 0x01 01189 #define SUBLANG_TATAR_RUSSIA 0x01 01190 #define SUBLANG_TELUGU_INDIA 0x01 01191 #define SUBLANG_THAI_THAILAND 0x01 01192 #define SUBLANG_TIBETAN_PRC 0x01 01193 #define SUBLANG_TIGRIGNA_ERITREA 0x02 01194 #define SUBLANG_TURKISH_TURKEY 0x01 01195 #define SUBLANG_TURKMEN_TURKMENISTAN 0x01 01196 #define SUBLANG_UIGHUR_PRC 0x01 01197 #define SUBLANG_UKRAINIAN_UKRAINE 0x01 01198 #define SUBLANG_UPPER_SORBIAN_GERMANY 0x01 01199 #define SUBLANG_URDU_INDIA 0x02 01200 #define SUBLANG_URDU_PAKISTAN 0x01 01201 #define SUBLANG_UZBEK_CYRILLIC 0x02 01202 #define SUBLANG_UZBEK_LATIN 0x01 01203 #define SUBLANG_VIETNAMESE_VIETNAM 0x01 01204 #define SUBLANG_WELSH_UNITED_KINGDOM 0x01 01205 #define SUBLANG_WOLOF_SENEGAL 0x01 01206 #define SUBLANG_XHOSA_SOUTH_AFRICA 0x01 01207 #define SUBLANG_YAKUT_RUSSIA 0x01 01208 #define SUBLANG_YI_PRC 0x01 01209 #define SUBLANG_YORUBA_NIGERIA 0x01 01210 #define SUBLANG_ZULU_SOUTH_AFRICA 0x01 01211 #define NLS_VALID_LOCALE_MASK 1048575 01212 #define SORT_DEFAULT 0 01213 #define SORT_JAPANESE_XJIS 0 01214 #define SORT_JAPANESE_UNICODE 1 01215 #define SORT_CHINESE_BIG5 0 01216 #define SORT_CHINESE_PRCP 0 01217 #define SORT_CHINESE_UNICODE 1 01218 #define SORT_CHINESE_PRC 2 01219 #define SORT_CHINESE_BOPOMOFO 3 01220 #define SORT_KOREAN_KSC 0 01221 #define SORT_KOREAN_UNICODE 1 01222 #define SORT_GERMAN_PHONE_BOOK 1 01223 #define SORT_HUNGARIAN_DEFAULT 0 01224 #define SORT_HUNGARIAN_TECHNICAL 1 01225 #define SORT_GEORGIAN_TRADITIONAL 0 01226 #define SORT_GEORGIAN_MODERN 1 01227 #define MAKELANGID(p,s) ((((WORD)(s))<<10)|(WORD)(p)) 01228 #define MAKELCID(l,s) ((DWORD)((((DWORD)((WORD)(s)))<<16)|((DWORD)((WORD)(l))))) 01229 #define PRIMARYLANGID(l) ((WORD)(l)&0x3ff) 01230 #define SORTIDFROMLCID(l) ((WORD)((((DWORD)(l))&NLS_VALID_LOCALE_MASK)>>16)) 01231 #define SORTVERSIONFROMLCID(l) ((WORD)((((DWORD)(l))>>20)&0xf)) 01232 #define SUBLANGID(l) ((WORD)(l)>>10) 01233 #define LANGIDFROMLCID(l) ((WORD)(l)) 01234 #define LANG_SYSTEM_DEFAULT MAKELANGID(LANG_NEUTRAL,SUBLANG_SYS_DEFAULT) 01235 #define LANG_USER_DEFAULT MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT) 01236 #define LOCALE_NEUTRAL MAKELCID(MAKELANGID(LANG_NEUTRAL,SUBLANG_NEUTRAL),SORT_DEFAULT) 01237 #define LOCALE_INVARIANT MAKELCID(MAKELANGID(LANG_INVARIANT, SUBLANG_NEUTRAL), SORT_DEFAULT) 01238 #define LOCALE_NAME_MAX_LENGTH 85 01239 #define ACL_REVISION 2 01240 #define ACL_REVISION_DS 4 01241 #define ACL_REVISION1 1 01242 #define ACL_REVISION2 2 01243 #define ACL_REVISION3 3 01244 #define ACL_REVISION4 4 01245 #define MIN_ACL_REVISION 2 01246 #define MAX_ACL_REVISION 4 01247 #define MINCHAR 0x80 01248 #define MAXCHAR 0x7f 01249 #define MINSHORT 0x8000 01250 #define MAXSHORT 0x7fff 01251 #define MINLONG 0x80000000 01252 #define MAXLONG 0x7fffffff 01253 #define MAXBYTE 0xff 01254 #define MAXWORD 0xffff 01255 #define MAXDWORD 0xffffffff 01256 #define PROCESSOR_INTEL_386 386 01257 #define PROCESSOR_INTEL_486 486 01258 #define PROCESSOR_INTEL_PENTIUM 586 01259 #define PROCESSOR_MIPS_R4000 4000 01260 #define PROCESSOR_ALPHA_21064 21064 01261 #define PROCESSOR_INTEL_IA64 2200 01262 #define PROCESSOR_PPC_601 601 01263 #define PROCESSOR_PPC_603 603 01264 #define PROCESSOR_PPC_604 604 01265 #define PROCESSOR_PPC_620 620 01266 #define PROCESSOR_INTEL_860 860 01267 #define PROCESSOR_AMD_X8664 8664 01268 #define PROCESSOR_MIPS_R2000 2000 01269 #define PROCESSOR_MIPS_R3000 3000 01270 #define PROCESSOR_HITACHI_SH3 10003 01271 #define PROCESSOR_HITACHI_SH3E 10004 01272 #define PROCESSOR_HITACHI_SH4 10005 01273 #define PROCESSOR_MOTOROLA_821 821 01274 #define PROCESSOR_SHx_SH3 103 01275 #define PROCESSOR_SHx_SH4 104 01276 #define PROCESSOR_STRONGARM 2577 01277 #define PROCESSOR_ARM720 1824 01278 #define PROCESSOR_ARM820 2080 01279 #define PROCESSOR_ARM920 2336 01280 #define PROCESSOR_ARM_7TDMI 70001 01281 #define PROCESSOR_ARCHITECTURE_INTEL 0 01282 #define PROCESSOR_ARCHITECTURE_MIPS 1 01283 #define PROCESSOR_ARCHITECTURE_ALPHA 2 01284 #define PROCESSOR_ARCHITECTURE_PPC 3 01285 #define PROCESSOR_ARCHITECTURE_SHX 4 01286 #define PROCESSOR_ARCHITECTURE_ARM 5 01287 #define PROCESSOR_ARCHITECTURE_IA64 6 01288 #define PROCESSOR_ARCHITECTURE_ALPHA64 7 01289 #define PROCESSOR_ARCHITECTURE_MSIL 8 01290 #define PROCESSOR_ARCHITECTURE_AMD64 9 01291 #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF 01292 #define PF_FLOATING_POINT_PRECISION_ERRATA 0 01293 #define PF_FLOATING_POINT_EMULATED 1 01294 #define PF_COMPARE_EXCHANGE_DOUBLE 2 01295 #define PF_MMX_INSTRUCTIONS_AVAILABLE 3 01296 #define PF_PPC_MOVEMEM_64BIT_OK 4 01297 #define PF_ALPHA_BYTE_INSTRUCTIONS 5 01298 #define PF_XMMI_INSTRUCTIONS_AVAILABLE 6 01299 #define PF_3DNOW_INSTRUCTIONS_AVAILABLE 7 01300 #define PF_RDTSC_INSTRUCTION_AVAILABLE 8 01301 #define PF_PAE_ENABLED 9 01302 #define PF_XMMI64_INSTRUCTIONS_AVAILABLE 10 01303 /* also in ddk/ntifs.h */ 01304 #define FILE_ACTION_ADDED 0x00000001 01305 #define FILE_ACTION_REMOVED 0x00000002 01306 #define FILE_ACTION_MODIFIED 0x00000003 01307 #define FILE_ACTION_RENAMED_OLD_NAME 0x00000004 01308 #define FILE_ACTION_RENAMED_NEW_NAME 0x00000005 01309 #define FILE_ACTION_ADDED_STREAM 0x00000006 01310 #define FILE_ACTION_REMOVED_STREAM 0x00000007 01311 #define FILE_ACTION_MODIFIED_STREAM 0x00000008 01312 #define FILE_ACTION_REMOVED_BY_DELETE 0x00000009 01313 #define FILE_ACTION_ID_NOT_TUNNELLED 0x0000000A 01314 #define FILE_ACTION_TUNNELLED_ID_COLLISION 0x0000000B 01315 /* end ntifs.h */ 01316 #define HEAP_NO_SERIALIZE 1 01317 #define HEAP_GROWABLE 2 01318 #define HEAP_GENERATE_EXCEPTIONS 4 01319 #define HEAP_ZERO_MEMORY 8 01320 #define HEAP_REALLOC_IN_PLACE_ONLY 16 01321 #define HEAP_TAIL_CHECKING_ENABLED 32 01322 #define HEAP_FREE_CHECKING_ENABLED 64 01323 #define HEAP_DISABLE_COALESCE_ON_FREE 128 01324 #define HEAP_CREATE_ALIGN_16 0x10000 01325 #define HEAP_CREATE_ENABLE_TRACING 0x20000 01326 #define HEAP_CREATE_ENABLE_EXECUTE 0x00040000 01327 #define HEAP_MAXIMUM_TAG 0xFFF 01328 #define HEAP_PSEUDO_TAG_FLAG 0x8000 01329 #define HEAP_TAG_SHIFT 16 01330 #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16))) 01331 01332 #define KEY_QUERY_VALUE 1 01333 #define KEY_SET_VALUE 2 01334 #define KEY_CREATE_SUB_KEY 4 01335 #define KEY_ENUMERATE_SUB_KEYS 8 01336 #define KEY_NOTIFY 16 01337 #define KEY_CREATE_LINK 32 01338 #define KEY_WOW64_64KEY 0x00000100 01339 #define KEY_WOW64_32KEY 0x00000200 01340 #define KEY_WOW64_RES 0x00000300 01341 01342 #define KEY_WRITE 0x20006 01343 #define KEY_EXECUTE 0x20019 01344 #define KEY_READ 0x20019 01345 #define KEY_ALL_ACCESS 0xf003f 01346 #define REG_WHOLE_HIVE_VOLATILE 1 01347 #define REG_REFRESH_HIVE 2 01348 #define REG_NO_LAZY_FLUSH 4 01349 #define REG_OPTION_RESERVED 0 01350 #define REG_OPTION_NON_VOLATILE 0 01351 #define REG_OPTION_VOLATILE 1 01352 #define REG_OPTION_CREATE_LINK 2 01353 #define REG_OPTION_BACKUP_RESTORE 4 01354 #define REG_OPTION_OPEN_LINK 8 01355 #define REG_LEGAL_OPTION 15 01356 #define OWNER_SECURITY_INFORMATION 1 01357 #define GROUP_SECURITY_INFORMATION 2 01358 #define DACL_SECURITY_INFORMATION 4 01359 #define SACL_SECURITY_INFORMATION 8 01360 #define PROTECTED_DACL_SECURITY_INFORMATION 0x80000000 01361 #define PROTECTED_SACL_SECURITY_INFORMATION 0x40000000 01362 #define UNPROTECTED_DACL_SECURITY_INFORMATION 0x20000000 01363 #define UNPROTECTED_SACL_SECURITY_INFORMATION 0x10000000 01364 #define MAXIMUM_PROCESSORS 32 01365 #define PAGE_NOACCESS 0x0001 01366 #define PAGE_READONLY 0x0002 01367 #define PAGE_READWRITE 0x0004 01368 #define PAGE_WRITECOPY 0x0008 01369 #define PAGE_EXECUTE 0x0010 01370 #define PAGE_EXECUTE_READ 0x0020 01371 #define PAGE_EXECUTE_READWRITE 0x0040 01372 #define PAGE_EXECUTE_WRITECOPY 0x0080 01373 #define PAGE_GUARD 0x0100 01374 #define PAGE_NOCACHE 0x0200 01375 #define PAGE_WRITECOMBINE 0x0400 01376 #define MEM_COMMIT 0x1000 01377 #define MEM_RESERVE 0x2000 01378 #define MEM_DECOMMIT 0x4000 01379 #define MEM_RELEASE 0x8000 01380 #define MEM_FREE 0x10000 01381 #define MEM_PRIVATE 0x20000 01382 #define MEM_MAPPED 0x40000 01383 #define MEM_RESET 0x80000 01384 #define MEM_TOP_DOWN 0x100000 01385 #define MEM_WRITE_WATCH 0x200000 /* 98/Me */ 01386 #define MEM_PHYSICAL 0x400000 01387 #define MEM_4MB_PAGES 0x80000000 01388 #define MEM_IMAGE SEC_IMAGE 01389 #define SEC_NO_CHANGE 0x00400000 01390 #define SEC_FILE 0x00800000 01391 #define SEC_IMAGE 0x01000000 01392 #define SEC_VLM 0x02000000 01393 #define SEC_RESERVE 0x04000000 01394 #define SEC_COMMIT 0x08000000 01395 #define SEC_NOCACHE 0x10000000 01396 #define SEC_WRITECOMBINE 0x40000000 01397 #define SEC_LARGE_PAGES 0x80000000 01398 #define SECTION_MAP_EXECUTE_EXPLICIT 0x0020 01399 #define SECTION_EXTEND_SIZE 16 01400 #define SECTION_MAP_READ 4 01401 #define SECTION_MAP_WRITE 2 01402 #define SECTION_QUERY 1 01403 #define SECTION_MAP_EXECUTE 8 01404 #define SECTION_ALL_ACCESS 0xf001f 01405 #define WRITE_WATCH_FLAG_RESET 0x01 01406 #define MESSAGE_RESOURCE_UNICODE 1 01407 #define RTL_CRITSECT_TYPE 0 01408 #define RTL_RESOURCE_TYPE 1 01409 01410 #define RTL_FIELD_TYPE(type, field) (((type*)0)->field) 01411 #define RTL_BITS_OF(sizeOfArg) (sizeof(sizeOfArg) * 8) 01412 #define RTL_BITS_OF_FIELD(type, field) (RTL_BITS_OF(RTL_FIELD_TYPE(type, field))) 01413 01414 /* Also in winddk.h */ 01415 #if !defined(__GNUC__) 01416 #define FIELD_OFFSET(t,f) ((LONG)(LONG_PTR)&(((t*) 0)->f)) 01417 #else 01418 #define FIELD_OFFSET(t,f) ((LONG)__builtin_offsetof(t,f)) 01419 #endif 01420 #ifndef CONTAINING_RECORD 01421 #define CONTAINING_RECORD(address, type, field) \ 01422 ((type *)(((ULONG_PTR)address) - (ULONG_PTR)(&(((type *)0)->field)))) 01423 #endif 01424 /* end winddk.h */ 01425 #define IMAGE_SIZEOF_FILE_HEADER 20 01426 #define IMAGE_FILE_RELOCS_STRIPPED 1 01427 #define IMAGE_FILE_EXECUTABLE_IMAGE 2 01428 #define IMAGE_FILE_LINE_NUMS_STRIPPED 4 01429 #define IMAGE_FILE_LOCAL_SYMS_STRIPPED 8 01430 #define IMAGE_FILE_AGGRESIVE_WS_TRIM 16 01431 #define IMAGE_FILE_LARGE_ADDRESS_AWARE 32 01432 #define IMAGE_FILE_BYTES_REVERSED_LO 128 01433 #define IMAGE_FILE_32BIT_MACHINE 256 01434 #define IMAGE_FILE_DEBUG_STRIPPED 512 01435 #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP 1024 01436 #define IMAGE_FILE_NET_RUN_FROM_SWAP 2048 01437 #define IMAGE_FILE_SYSTEM 4096 01438 #define IMAGE_FILE_DLL 8192 01439 #define IMAGE_FILE_UP_SYSTEM_ONLY 16384 01440 #define IMAGE_FILE_BYTES_REVERSED_HI 32768 01441 #define IMAGE_FILE_MACHINE_UNKNOWN 0 01442 01443 #define IMAGE_FILE_MACHINE_AM33 0x1d3 01444 #define IMAGE_FILE_MACHINE_AMD64 0x8664 01445 #define IMAGE_FILE_MACHINE_ARM 0x1c0 01446 #define IMAGE_FILE_MACHINE_ARMV7 0x1c4 01447 #define IMAGE_FILE_MACHINE_EBC 0xebc 01448 #define IMAGE_FILE_MACHINE_I386 0x14c 01449 #define IMAGE_FILE_MACHINE_IA64 0x200 01450 #define IMAGE_FILE_MACHINE_M32R 0x9041 01451 #define IMAGE_FILE_MACHINE_MIPS16 0x266 01452 #define IMAGE_FILE_MACHINE_MIPSFPU 0x366 01453 #define IMAGE_FILE_MACHINE_MIPSFPU16 0x466 01454 #define IMAGE_FILE_MACHINE_POWERPC 0x1f0 01455 #define IMAGE_FILE_MACHINE_POWERPCFP 0x1f1 01456 #define IMAGE_FILE_MACHINE_R4000 0x166 01457 #define IMAGE_FILE_MACHINE_SH3 0x1a2 01458 #define IMAGE_FILE_MACHINE_SH3E 0x01a4 01459 #define IMAGE_FILE_MACHINE_SH3DSP 0x1a3 01460 #define IMAGE_FILE_MACHINE_SH4 0x1a6 01461 #define IMAGE_FILE_MACHINE_SH5 0x1a8 01462 #define IMAGE_FILE_MACHINE_THUMB 0x1c2 01463 #define IMAGE_FILE_MACHINE_WCEMIPSV2 0x169 01464 #define IMAGE_FILE_MACHINE_R3000 0x162 01465 #define IMAGE_FILE_MACHINE_R10000 0x168 01466 #define IMAGE_FILE_MACHINE_ALPHA 0x184 01467 #define IMAGE_FILE_MACHINE_ALPHA64 0x0284 01468 #define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64 01469 #define IMAGE_FILE_MACHINE_CEE 0xC0EE 01470 #define IMAGE_FILE_MACHINE_TRICORE 0x0520 01471 #define IMAGE_FILE_MACHINE_CEF 0x0CEF 01472 01473 #define IMAGE_FILE_EXPORT_DIRECTORY 0 01474 #define IMAGE_FILE_IMPORT_DIRECTORY 1 01475 #define IMAGE_FILE_RESOURCE_DIRECTORY 2 01476 #define IMAGE_FILE_EXCEPTION_DIRECTORY 3 01477 #define IMAGE_FILE_SECURITY_DIRECTORY 4 01478 #define IMAGE_FILE_BASE_RELOCATION_TABLE 5 01479 #define IMAGE_FILE_DEBUG_DIRECTORY 6 01480 #define IMAGE_FILE_DESCRIPTION_STRING 7 01481 #define IMAGE_FILE_MACHINE_VALUE 8 /* Mips */ 01482 #define IMAGE_FILE_THREAD_LOCAL_STORAGE 9 01483 #define IMAGE_FILE_CALLBACK_DIRECTORY 10 01484 01485 #define IMAGE_DOS_SIGNATURE 0x5A4D 01486 #define IMAGE_OS2_SIGNATURE 0x454E 01487 #define IMAGE_OS2_SIGNATURE_LE 0x454C 01488 #define IMAGE_VXD_SIGNATURE 0x454C 01489 #define IMAGE_NT_SIGNATURE 0x00004550 01490 #define IMAGE_NT_OPTIONAL_HDR32_MAGIC 0x10b 01491 #define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b 01492 #ifdef _WIN64 01493 #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC 01494 #else 01495 #define IMAGE_NT_OPTIONAL_HDR_MAGIC IMAGE_NT_OPTIONAL_HDR32_MAGIC 01496 #endif 01497 #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 01498 #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944 01499 #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16 01500 #define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56 01501 #define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28 01502 #define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224 01503 #define IMAGE_SIZEOF_SHORT_NAME 8 01504 #define IMAGE_SIZEOF_SECTION_HEADER 40 01505 #define IMAGE_SIZEOF_SYMBOL 18 01506 #define IMAGE_SIZEOF_AUX_SYMBOL 18 01507 #define IMAGE_SIZEOF_RELOCATION 10 01508 #define IMAGE_SIZEOF_BASE_RELOCATION 8 01509 #define IMAGE_SIZEOF_LINENUMBER 6 01510 #define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60 01511 #define SIZEOF_RFPO_DATA 16 01512 01513 #define IMAGE_SUBSYSTEM_UNKNOWN 0 01514 #define IMAGE_SUBSYSTEM_NATIVE 1 01515 #define IMAGE_SUBSYSTEM_WINDOWS_GUI 2 01516 #define IMAGE_SUBSYSTEM_WINDOWS_CUI 3 01517 #define IMAGE_SUBSYSTEM_OS2_CUI 5 01518 #define IMAGE_SUBSYSTEM_POSIX_CUI 7 01519 #define IMAGE_SUBSYSTEM_NATIVE_WINDOWS 8 01520 #define IMAGE_SUBSYSTEM_WINDOWS_CE_GUI 9 01521 #define IMAGE_SUBSYSTEM_EFI_APPLICATION 10 01522 #define IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11 01523 #define IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER 12 01524 #define IMAGE_SUBSYSTEM_EFI_ROM 13 01525 #define IMAGE_SUBSYSTEM_XBOX 14 01526 01527 #define IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE 0x0040 01528 #define IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY 0x0080 01529 #define IMAGE_DLLCHARACTERISTICS_NX_COMPAT 0x0100 01530 #define IMAGE_DLLCHARACTERISTICS_NO_ISOLATION 0x0200 01531 #define IMAGE_DLLCHARACTERISTICS_NO_SEH 0x0400 01532 #define IMAGE_DLLCHARACTERISTICS_NO_BIND 0x0800 01533 #define IMAGE_DLLCHARACTERISTICS_WDM_DRIVER 0x2000 01534 #define IMAGE_DLLCHARACTERISTICS_TERMINAL_SERVER_AWARE 0x8000 01535 #define IMAGE_FIRST_SECTION(h) ((PIMAGE_SECTION_HEADER) ((ULONG_PTR)h+FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader)+((PIMAGE_NT_HEADERS)(h))->FileHeader.SizeOfOptionalHeader)) 01536 #define IMAGE_DIRECTORY_ENTRY_EXPORT 0 01537 #define IMAGE_DIRECTORY_ENTRY_IMPORT 1 01538 #define IMAGE_DIRECTORY_ENTRY_RESOURCE 2 01539 #define IMAGE_DIRECTORY_ENTRY_EXCEPTION 3 01540 #define IMAGE_DIRECTORY_ENTRY_SECURITY 4 01541 #define IMAGE_DIRECTORY_ENTRY_BASERELOC 5 01542 #define IMAGE_DIRECTORY_ENTRY_DEBUG 6 01543 #define IMAGE_DIRECTORY_ENTRY_COPYRIGHT 7 01544 #define IMAGE_DIRECTORY_ENTRY_GLOBALPTR 8 01545 #define IMAGE_DIRECTORY_ENTRY_TLS 9 01546 #define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG 10 01547 #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT 11 01548 #define IMAGE_DIRECTORY_ENTRY_IAT 12 01549 #define IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT 13 01550 #define IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR 14 01551 #define IMAGE_SCN_TYPE_REG 0 01552 #define IMAGE_SCN_TYPE_DSECT 1 01553 //#define IMAGE_SCN_TYPE_NOLOAD 2 01554 #define IMAGE_SCN_TYPE_GROUP 4 01555 #define IMAGE_SCN_TYPE_NO_PAD 8 01556 #define IMAGE_SCN_CNT_CODE 32 01557 #define IMAGE_SCN_CNT_INITIALIZED_DATA 64 01558 #define IMAGE_SCN_CNT_UNINITIALIZED_DATA 128 01559 #define IMAGE_SCN_LNK_OTHER 256 01560 #define IMAGE_SCN_LNK_INFO 512 01561 #define IMAGE_SCN_LNK_REMOVE 2048 01562 #define IMAGE_SCN_LNK_COMDAT 4096 01563 #define IMAGE_SCN_MEM_FARDATA 0x8000 01564 #define IMAGE_SCN_MEM_PURGEABLE 0x20000 01565 #define IMAGE_SCN_MEM_16BIT 0x20000 01566 #define IMAGE_SCN_MEM_LOCKED 0x40000 01567 #define IMAGE_SCN_MEM_PRELOAD 0x80000 01568 #define IMAGE_SCN_ALIGN_1BYTES 0x100000 01569 #define IMAGE_SCN_ALIGN_2BYTES 0x200000 01570 #define IMAGE_SCN_ALIGN_4BYTES 0x300000 01571 #define IMAGE_SCN_ALIGN_8BYTES 0x400000 01572 #define IMAGE_SCN_ALIGN_16BYTES 0x500000 01573 #define IMAGE_SCN_ALIGN_32BYTES 0x600000 01574 #define IMAGE_SCN_ALIGN_64BYTES 0x700000 01575 #define IMAGE_SCN_LNK_NRELOC_OVFL 0x1000000 01576 #define IMAGE_SCN_MEM_DISCARDABLE 0x2000000 01577 #define IMAGE_SCN_MEM_NOT_CACHED 0x4000000 01578 #define IMAGE_SCN_MEM_NOT_PAGED 0x8000000 01579 #define IMAGE_SCN_MEM_SHARED 0x10000000 01580 #define IMAGE_SCN_MEM_EXECUTE 0x20000000 01581 #define IMAGE_SCN_MEM_READ 0x40000000 01582 #define IMAGE_SCN_MEM_WRITE 0x80000000 01583 #define IMAGE_SYM_UNDEFINED 0 01584 #define IMAGE_SYM_ABSOLUTE (-1) 01585 #define IMAGE_SYM_DEBUG (-2) 01586 #define IMAGE_SYM_TYPE_NULL 0 01587 #define IMAGE_SYM_TYPE_VOID 1 01588 #define IMAGE_SYM_TYPE_CHAR 2 01589 #define IMAGE_SYM_TYPE_SHORT 3 01590 #define IMAGE_SYM_TYPE_INT 4 01591 #define IMAGE_SYM_TYPE_LONG 5 01592 #define IMAGE_SYM_TYPE_FLOAT 6 01593 #define IMAGE_SYM_TYPE_DOUBLE 7 01594 #define IMAGE_SYM_TYPE_STRUCT 8 01595 #define IMAGE_SYM_TYPE_UNION 9 01596 #define IMAGE_SYM_TYPE_ENUM 10 01597 #define IMAGE_SYM_TYPE_MOE 11 01598 #define IMAGE_SYM_TYPE_BYTE 12 01599 #define IMAGE_SYM_TYPE_WORD 13 01600 #define IMAGE_SYM_TYPE_UINT 14 01601 #define IMAGE_SYM_TYPE_DWORD 15 01602 #define IMAGE_SYM_TYPE_PCODE 32768 01603 #define IMAGE_SYM_DTYPE_NULL 0 01604 #define IMAGE_SYM_DTYPE_POINTER 1 01605 #define IMAGE_SYM_DTYPE_FUNCTION 2 01606 #define IMAGE_SYM_DTYPE_ARRAY 3 01607 #define IMAGE_SYM_CLASS_END_OF_FUNCTION (-1) 01608 #define IMAGE_SYM_CLASS_NULL 0 01609 #define IMAGE_SYM_CLASS_AUTOMATIC 1 01610 #define IMAGE_SYM_CLASS_EXTERNAL 2 01611 #define IMAGE_SYM_CLASS_STATIC 3 01612 #define IMAGE_SYM_CLASS_REGISTER 4 01613 #define IMAGE_SYM_CLASS_EXTERNAL_DEF 5 01614 #define IMAGE_SYM_CLASS_LABEL 6 01615 #define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7 01616 #define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8 01617 #define IMAGE_SYM_CLASS_ARGUMENT 9 01618 #define IMAGE_SYM_CLASS_STRUCT_TAG 10 01619 #define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11 01620 #define IMAGE_SYM_CLASS_UNION_TAG 12 01621 #define IMAGE_SYM_CLASS_TYPE_DEFINITION 13 01622 #define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14 01623 #define IMAGE_SYM_CLASS_ENUM_TAG 15 01624 #define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16 01625 #define IMAGE_SYM_CLASS_REGISTER_PARAM 17 01626 #define IMAGE_SYM_CLASS_BIT_FIELD 18 01627 #define IMAGE_SYM_CLASS_FAR_EXTERNAL 68 01628 #define IMAGE_SYM_CLASS_BLOCK 100 01629 #define IMAGE_SYM_CLASS_FUNCTION 101 01630 #define IMAGE_SYM_CLASS_END_OF_STRUCT 102 01631 #define IMAGE_SYM_CLASS_FILE 103 01632 #define IMAGE_SYM_CLASS_SECTION 104 01633 #define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105 01634 #define IMAGE_COMDAT_SELECT_NODUPLICATES 1 01635 #define IMAGE_COMDAT_SELECT_ANY 2 01636 #define IMAGE_COMDAT_SELECT_SAME_SIZE 3 01637 #define IMAGE_COMDAT_SELECT_EXACT_MATCH 4 01638 #define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5 01639 #define IMAGE_COMDAT_SELECT_LARGEST 6 01640 #define IMAGE_COMDAT_SELECT_NEWEST 7 01641 #define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1 01642 #define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2 01643 #define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3 01644 #define IMAGE_REL_I386_ABSOLUTE 0 01645 #define IMAGE_REL_I386_DIR16 1 01646 #define IMAGE_REL_I386_REL16 2 01647 #define IMAGE_REL_I386_DIR32 6 01648 #define IMAGE_REL_I386_DIR32NB 7 01649 #define IMAGE_REL_I386_SEG12 9 01650 #define IMAGE_REL_I386_SECTION 10 01651 #define IMAGE_REL_I386_SECREL 11 01652 #define IMAGE_REL_I386_REL32 20 01653 #define IMAGE_REL_MIPS_ABSOLUTE 0 01654 #define IMAGE_REL_MIPS_REFHALF 1 01655 #define IMAGE_REL_MIPS_REFWORD 2 01656 #define IMAGE_REL_MIPS_JMPADDR 3 01657 #define IMAGE_REL_MIPS_REFHI 4 01658 #define IMAGE_REL_MIPS_REFLO 5 01659 #define IMAGE_REL_MIPS_GPREL 6 01660 #define IMAGE_REL_MIPS_LITERAL 7 01661 #define IMAGE_REL_MIPS_SECTION 10 01662 #define IMAGE_REL_MIPS_SECREL 11 01663 #define IMAGE_REL_MIPS_SECRELLO 12 01664 #define IMAGE_REL_MIPS_SECRELHI 13 01665 #define IMAGE_REL_MIPS_REFWORDNB 34 01666 #define IMAGE_REL_MIPS_PAIR 35 01667 #define IMAGE_REL_ALPHA_ABSOLUTE 0 01668 #define IMAGE_REL_ALPHA_REFLONG 1 01669 #define IMAGE_REL_ALPHA_REFQUAD 2 01670 #define IMAGE_REL_ALPHA_GPREL32 3 01671 #define IMAGE_REL_ALPHA_LITERAL 4 01672 #define IMAGE_REL_ALPHA_LITUSE 5 01673 #define IMAGE_REL_ALPHA_GPDISP 6 01674 #define IMAGE_REL_ALPHA_BRADDR 7 01675 #define IMAGE_REL_ALPHA_HINT 8 01676 #define IMAGE_REL_ALPHA_INLINE_REFLONG 9 01677 #define IMAGE_REL_ALPHA_REFHI 10 01678 #define IMAGE_REL_ALPHA_REFLO 11 01679 #define IMAGE_REL_ALPHA_PAIR 12 01680 #define IMAGE_REL_ALPHA_MATCH 13 01681 #define IMAGE_REL_ALPHA_SECTION 14 01682 #define IMAGE_REL_ALPHA_SECREL 15 01683 #define IMAGE_REL_ALPHA_REFLONGNB 16 01684 #define IMAGE_REL_ALPHA_SECRELLO 17 01685 #define IMAGE_REL_ALPHA_SECRELHI 18 01686 #define IMAGE_REL_PPC_ABSOLUTE 0 01687 #define IMAGE_REL_PPC_ADDR64 1 01688 #define IMAGE_REL_PPC_ADDR32 2 01689 #define IMAGE_REL_PPC_ADDR24 3 01690 #define IMAGE_REL_PPC_ADDR16 4 01691 #define IMAGE_REL_PPC_ADDR14 5 01692 #define IMAGE_REL_PPC_REL24 6 01693 #define IMAGE_REL_PPC_REL14 7 01694 #define IMAGE_REL_PPC_TOCREL16 8 01695 #define IMAGE_REL_PPC_TOCREL14 9 01696 #define IMAGE_REL_PPC_ADDR32NB 10 01697 #define IMAGE_REL_PPC_SECREL 11 01698 #define IMAGE_REL_PPC_SECTION 12 01699 #define IMAGE_REL_PPC_IFGLUE 13 01700 #define IMAGE_REL_PPC_IMGLUE 14 01701 #define IMAGE_REL_PPC_SECREL16 15 01702 #define IMAGE_REL_PPC_REFHI 16 01703 #define IMAGE_REL_PPC_REFLO 17 01704 #define IMAGE_REL_PPC_PAIR 18 01705 #define IMAGE_REL_PPC_TYPEMASK 255 01706 #define IMAGE_REL_PPC_NEG 256 01707 #define IMAGE_REL_PPC_BRTAKEN 512 01708 #define IMAGE_REL_PPC_BRNTAKEN 1024 01709 #define IMAGE_REL_PPC_TOCDEFN 2048 01710 #define IMAGE_REL_BASED_ABSOLUTE 0 01711 #define IMAGE_REL_BASED_HIGH 1 01712 #define IMAGE_REL_BASED_LOW 2 01713 #define IMAGE_REL_BASED_HIGHLOW 3 01714 #define IMAGE_REL_BASED_HIGHADJ 4 01715 #define IMAGE_REL_BASED_MIPS_JMPADDR 5 01716 #define IMAGE_REL_BASED_MIPS_JMPADDR16 9 01717 #define IMAGE_REL_BASED_IA64_IMM64 9 01718 #define IMAGE_REL_BASED_DIR64 10 01719 #define IMAGE_ARCHIVE_START_SIZE 8 01720 #define IMAGE_ARCHIVE_START "!<arch>\n" 01721 #define IMAGE_ARCHIVE_END "`\n" 01722 #define IMAGE_ARCHIVE_PAD "\n" 01723 #define IMAGE_ARCHIVE_LINKER_MEMBER "/ " 01724 #define IMAGE_ARCHIVE_LONGNAMES_MEMBER "// " 01725 #define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000 01726 #define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000 01727 #define IMAGE_DEBUG_TYPE_UNKNOWN 0 01728 #define IMAGE_DEBUG_TYPE_COFF 1 01729 #define IMAGE_DEBUG_TYPE_CODEVIEW 2 01730 #define IMAGE_DEBUG_TYPE_FPO 3 01731 #define IMAGE_DEBUG_TYPE_MISC 4 01732 #define IMAGE_DEBUG_TYPE_EXCEPTION 5 01733 #define IMAGE_DEBUG_TYPE_FIXUP 6 01734 #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7 01735 #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8 01736 #define FRAME_FPO 0 01737 #define FRAME_TRAP 1 01738 #define FRAME_TSS 2 01739 #define FRAME_NONFPO 3 01740 #define IMAGE_DEBUG_MISC_EXENAME 1 01741 #define N_BTMASK 0x000F 01742 #define N_TMASK 0x0030 01743 #define N_TMASK1 0x00C0 01744 #define N_TMASK2 0x00F0 01745 #define N_BTSHFT 4 01746 #define N_TSHIFT 2 01747 #define IS_TEXT_UNICODE_ASCII16 1 01748 #define IS_TEXT_UNICODE_REVERSE_ASCII16 16 01749 #define IS_TEXT_UNICODE_STATISTICS 2 01750 #define IS_TEXT_UNICODE_REVERSE_STATISTICS 32 01751 #define IS_TEXT_UNICODE_CONTROLS 4 01752 #define IS_TEXT_UNICODE_REVERSE_CONTROLS 64 01753 #define IS_TEXT_UNICODE_SIGNATURE 8 01754 #define IS_TEXT_UNICODE_REVERSE_SIGNATURE 128 01755 #define IS_TEXT_UNICODE_ILLEGAL_CHARS 256 01756 #define IS_TEXT_UNICODE_ODD_LENGTH 512 01757 #define IS_TEXT_UNICODE_NULL_BYTES 4096 01758 #define IS_TEXT_UNICODE_UNICODE_MASK 15 01759 #define IS_TEXT_UNICODE_REVERSE_MASK 240 01760 #define IS_TEXT_UNICODE_NOT_UNICODE_MASK 3840 01761 #define IS_TEXT_UNICODE_NOT_ASCII_MASK 61440 01762 #define SERVICE_KERNEL_DRIVER 1 01763 #define SERVICE_FILE_SYSTEM_DRIVER 2 01764 #define SERVICE_ADAPTER 4 01765 #define SERVICE_RECOGNIZER_DRIVER 8 01766 #define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER|SERVICE_FILE_SYSTEM_DRIVER|SERVICE_RECOGNIZER_DRIVER) 01767 #define SERVICE_WIN32_OWN_PROCESS 16 01768 #define SERVICE_WIN32_SHARE_PROCESS 32 01769 #define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS|SERVICE_WIN32_SHARE_PROCESS) 01770 #define SERVICE_INTERACTIVE_PROCESS 256 01771 #define SERVICE_TYPE_ALL (SERVICE_WIN32|SERVICE_ADAPTER|SERVICE_DRIVER|SERVICE_INTERACTIVE_PROCESS) 01772 #define SERVICE_BOOT_START 0 01773 #define SERVICE_SYSTEM_START 1 01774 #define SERVICE_AUTO_START 2 01775 #define SERVICE_DEMAND_START 3 01776 #define SERVICE_DISABLED 4 01777 #define SERVICE_ERROR_IGNORE 0 01778 #define SERVICE_ERROR_NORMAL 1 01779 #define SERVICE_ERROR_SEVERE 2 01780 #define SERVICE_ERROR_CRITICAL 3 01781 #define SE_OWNER_DEFAULTED 1 01782 #define SE_GROUP_DEFAULTED 2 01783 #define SE_DACL_PRESENT 4 01784 #define SE_DACL_DEFAULTED 8 01785 #define SE_SACL_PRESENT 16 01786 #define SE_SACL_DEFAULTED 32 01787 #define SE_DACL_AUTO_INHERIT_REQ 256 01788 #define SE_SACL_AUTO_INHERIT_REQ 512 01789 #define SE_DACL_AUTO_INHERITED 1024 01790 #define SE_SACL_AUTO_INHERITED 2048 01791 #define SE_DACL_PROTECTED 4096 01792 #define SE_SACL_PROTECTED 8192 01793 #define SE_RM_CONTROL_VALID 0x4000 01794 #define SE_SELF_RELATIVE 0x8000 01795 #define SECURITY_DESCRIPTOR_MIN_LENGTH 20 01796 #define SECURITY_DESCRIPTOR_REVISION 1 01797 #define SECURITY_DESCRIPTOR_REVISION1 1 01798 #define SE_PRIVILEGE_ENABLED_BY_DEFAULT 1 01799 #define SE_PRIVILEGE_ENABLED 2 01800 #define SE_PRIVILEGE_USED_FOR_ACCESS 0x80000000 01801 #define PRIVILEGE_SET_ALL_NECESSARY 1 01802 #define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation 01803 #define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation 01804 #define SECURITY_DYNAMIC_TRACKING TRUE 01805 #define SECURITY_STATIC_TRACKING FALSE 01806 /* also in ddk/ntifs.h */ 01807 #define TOKEN_ASSIGN_PRIMARY (0x0001) 01808 #define TOKEN_DUPLICATE (0x0002) 01809 #define TOKEN_IMPERSONATE (0x0004) 01810 #define TOKEN_QUERY (0x0008) 01811 #define TOKEN_QUERY_SOURCE (0x0010) 01812 #define TOKEN_ADJUST_PRIVILEGES (0x0020) 01813 #define TOKEN_ADJUST_GROUPS (0x0040) 01814 #define TOKEN_ADJUST_DEFAULT (0x0080) 01815 #define TOKEN_ADJUST_SESSIONID (0x0100) 01816 #define TOKEN_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED |\ 01817 TOKEN_ASSIGN_PRIMARY |\ 01818 TOKEN_DUPLICATE |\ 01819 TOKEN_IMPERSONATE |\ 01820 TOKEN_QUERY |\ 01821 TOKEN_QUERY_SOURCE |\ 01822 TOKEN_ADJUST_PRIVILEGES |\ 01823 TOKEN_ADJUST_GROUPS |\ 01824 TOKEN_ADJUST_DEFAULT |\ 01825 TOKEN_ADJUST_SESSIONID) 01826 #define TOKEN_READ (STANDARD_RIGHTS_READ |\ 01827 TOKEN_QUERY) 01828 #define TOKEN_WRITE (STANDARD_RIGHTS_WRITE |\ 01829 TOKEN_ADJUST_PRIVILEGES |\ 01830 TOKEN_ADJUST_GROUPS |\ 01831 TOKEN_ADJUST_DEFAULT) 01832 01833 #define TOKEN_EXECUTE (STANDARD_RIGHTS_EXECUTE) 01834 #define TOKEN_SOURCE_LENGTH 8 01835 /* end ddk/ntifs.h */ 01836 #define DLL_PROCESS_DETACH 0 01837 #define DLL_PROCESS_ATTACH 1 01838 #define DLL_THREAD_ATTACH 2 01839 #define DLL_THREAD_DETACH 3 01840 #ifdef __WINESRC__ 01841 #define DLL_WINE_PREATTACH 8 /* Never called, but defined for compatibility with Wine source */ 01842 #endif 01843 #define TAPE_ABSOLUTE_POSITION 0 01844 #define TAPE_LOGICAL_POSITION 1 01845 #define TAPE_PSEUDO_LOGICAL_POSITION 2 01846 #define TAPE_REWIND 0 01847 #define TAPE_ABSOLUTE_BLOCK 1 01848 #define TAPE_LOGICAL_BLOCK 2 01849 #define TAPE_PSEUDO_LOGICAL_BLOCK 3 01850 #define TAPE_SPACE_END_OF_DATA 4 01851 #define TAPE_SPACE_RELATIVE_BLOCKS 5 01852 #define TAPE_SPACE_FILEMARKS 6 01853 #define TAPE_SPACE_SEQUENTIAL_FMKS 7 01854 #define TAPE_SPACE_SETMARKS 8 01855 #define TAPE_SPACE_SEQUENTIAL_SMKS 9 01856 #define TAPE_DRIVE_FIXED 1 01857 #define TAPE_DRIVE_SELECT 2 01858 #define TAPE_DRIVE_INITIATOR 4 01859 #define TAPE_DRIVE_ERASE_SHORT 16 01860 #define TAPE_DRIVE_ERASE_LONG 32 01861 #define TAPE_DRIVE_ERASE_BOP_ONLY 64 01862 #define TAPE_DRIVE_ERASE_IMMEDIATE 128 01863 #define TAPE_DRIVE_TAPE_CAPACITY 256 01864 #define TAPE_DRIVE_TAPE_REMAINING 512 01865 #define TAPE_DRIVE_FIXED_BLOCK 1024 01866 #define TAPE_DRIVE_VARIABLE_BLOCK 2048 01867 #define TAPE_DRIVE_WRITE_PROTECT 4096 01868 #define TAPE_DRIVE_EOT_WZ_SIZE 8192 01869 #define TAPE_DRIVE_ECC 0x10000 01870 #define TAPE_DRIVE_COMPRESSION 0x20000 01871 #define TAPE_DRIVE_PADDING 0x40000 01872 #define TAPE_DRIVE_REPORT_SMKS 0x80000 01873 #define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x100000 01874 #define TAPE_DRIVE_GET_LOGICAL_BLK 0x200000 01875 #define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x400000 01876 #define TAPE_DRIVE_EJECT_MEDIA 0x1000000 01877 #define TAPE_DRIVE_CLEAN_REQUESTS 0x2000000 01878 #define TAPE_DRIVE_SET_CMP_BOP_ONLY 0x4000000 01879 #define TAPE_DRIVE_RESERVED_BIT 0x80000000 01880 #define TAPE_DRIVE_LOAD_UNLOAD 0x80000001 01881 #define TAPE_DRIVE_TENSION 0x80000002 01882 #define TAPE_DRIVE_LOCK_UNLOCK 0x80000004 01883 #define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008 01884 #define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010 01885 #define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020 01886 #define TAPE_DRIVE_TENSION_IMMED 0x80000040 01887 #define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080 01888 #define TAPE_DRIVE_SET_ECC 0x80000100 01889 #define TAPE_DRIVE_SET_COMPRESSION 0x80000200 01890 #define TAPE_DRIVE_SET_PADDING 0x80000400 01891 #define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800 01892 #define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000 01893 #define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000 01894 #define TAPE_DRIVE_LOGICAL_BLK 0x80004000 01895 #define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000 01896 #define TAPE_DRIVE_END_OF_DATA 0x80010000 01897 #define TAPE_DRIVE_RELATIVE_BLKS 0x80020000 01898 #define TAPE_DRIVE_FILEMARKS 0x80040000 01899 #define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000 01900 #define TAPE_DRIVE_SETMARKS 0x80100000 01901 #define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000 01902 #define TAPE_DRIVE_REVERSE_POSITION 0x80400000 01903 #define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000 01904 #define TAPE_DRIVE_WRITE_SETMARKS 0x81000000 01905 #define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000 01906 #define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000 01907 #define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000 01908 #define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000 01909 #define TAPE_DRIVE_FORMAT 0xA0000000 01910 #define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000 01911 #define TAPE_DRIVE_HIGH_FEATURES 0x80000000 01912 #define TAPE_FIXED_PARTITIONS 0 01913 #define TAPE_INITIATOR_PARTITIONS 2 01914 #define TAPE_SELECT_PARTITIONS 1 01915 #define TAPE_FILEMARKS 1 01916 #define TAPE_LONG_FILEMARKS 3 01917 #define TAPE_SETMARKS 0 01918 #define TAPE_SHORT_FILEMARKS 2 01919 #define TAPE_ERASE_LONG 1 01920 #define TAPE_ERASE_SHORT 0 01921 #define TAPE_LOAD 0 01922 #define TAPE_UNLOAD 1 01923 #define TAPE_TENSION 2 01924 #define TAPE_LOCK 3 01925 #define TAPE_UNLOCK 4 01926 #define TAPE_FORMAT 5 01927 #if (_WIN32_WINNT >= 0x0500) 01928 #define VER_MINORVERSION 0x0000001 01929 #define VER_MAJORVERSION 0x0000002 01930 #define VER_BUILDNUMBER 0x0000004 01931 #define VER_PLATFORMID 0x0000008 01932 #define VER_SERVICEPACKMINOR 0x0000010 01933 #define VER_SERVICEPACKMAJOR 0x0000020 01934 #define VER_SUITENAME 0x0000040 01935 #define VER_PRODUCT_TYPE 0x0000080 01936 #define VER_EQUAL 1 01937 #define VER_GREATER 2 01938 #define VER_GREATER_EQUAL 3 01939 #define VER_LESS 4 01940 #define VER_LESS_EQUAL 5 01941 #define VER_AND 6 01942 #define VER_OR 7 01943 #endif 01944 #define VER_SERVER_NT 0x80000000 01945 #define VER_WORKSTATION_NT 0x40000000 01946 #define VER_PLATFORM_WIN32s 0 01947 #define VER_PLATFORM_WIN32_WINDOWS 1 01948 #define VER_PLATFORM_WIN32_NT 2 01949 #define VER_NT_WORKSTATION 1 01950 #define VER_NT_DOMAIN_CONTROLLER 2 01951 #define VER_NT_SERVER 3 01952 #define VER_SUITE_SMALLBUSINESS 1 01953 #define VER_SUITE_ENTERPRISE 2 01954 #define VER_SUITE_BACKOFFICE 4 01955 #define VER_SUITE_COMMUNICATIONS 8 01956 #define VER_SUITE_TERMINAL 16 01957 #define VER_SUITE_SMALLBUSINESS_RESTRICTED 32 01958 #define VER_SUITE_EMBEDDEDNT 64 01959 #define VER_SUITE_DATACENTER 128 01960 #define VER_SUITE_SINGLEUSERTS 256 01961 #define VER_SUITE_PERSONAL 512 01962 #define VER_SUITE_BLADE 1024 01963 #define VER_SUITE_EMBEDDED_RESTRICTED 2048 01964 #define VER_SUITE_SECURITY_APPLIANCE 4096 01965 #define VER_SUITE_STORAGE_SERVER 8192 01966 #define VER_SUITE_COMPUTE_SERVER 16384 01967 #define VER_SUITE_WH_SERVER 32768 01968 #define WT_EXECUTEDEFAULT 0x00000000 01969 #define WT_EXECUTEINIOTHREAD 0x00000001 01970 #define WT_EXECUTEINUITHREAD 0x00000002 01971 #define WT_EXECUTEINWAITTHREAD 0x00000004 01972 #define WT_EXECUTEONLYONCE 0x00000008 01973 #define WT_EXECUTELONGFUNCTION 0x00000010 01974 #define WT_EXECUTEINTIMERTHREAD 0x00000020 01975 #define WT_EXECUTEINPERSISTENTIOTHREAD 0x00000040 01976 #define WT_EXECUTEINPERSISTENTTHREAD 0x00000080 01977 #define WT_TRANSFER_IMPERSONATION 0x00000100 01978 #define WT_SET_MAX_THREADPOOL_THREADS(flags,limit) ((flags)|=(limit)<<16) 01979 typedef VOID (NTAPI *WORKERCALLBACKFUNC)(PVOID); 01980 #if (_WIN32_WINNT >= 0x0501) 01981 #define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION 1 01982 #define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION 2 01983 #define ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION 3 01984 #define ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION 4 01985 #define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION 5 01986 #define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION 6 01987 #define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION 7 01988 #define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES 9 01989 #endif /* (_WIN32_WINNT >= 0x0501) */ 01990 #define BTYPE(x) ((x)&N_BTMASK) 01991 #define ISPTR(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)) 01992 #define ISFCN(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_FUNCTION<<N_BTSHFT)) 01993 #define ISARY(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_ARRAY<<N_BTSHFT)) 01994 #define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG||(x)==IMAGE_SYM_CLASS_UNION_TAG||(x)==IMAGE_SYM_CLASS_ENUM_TAG) 01995 #define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK)) 01996 #define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK)) 01997 #define TLS_MINIMUM_AVAILABLE 64 01998 #define FLS_MAXIMUM_AVAILABLE 128 01999 #define REPARSE_GUID_DATA_BUFFER_HEADER_SIZE FIELD_OFFSET(REPARSE_GUID_DATA_BUFFER, GenericReparseBuffer) 02000 #define MAXIMUM_REPARSE_DATA_BUFFER_SIZE 16384 02001 #define IO_REPARSE_TAG_RESERVED_ZERO 0 02002 #define IO_REPARSE_TAG_RESERVED_ONE 1 02003 #define IO_REPARSE_TAG_RESERVED_RANGE IO_REPARSE_TAG_RESERVED_ONE 02004 #define IsReparseTagMicrosoft(x) ((x)&0x80000000) 02005 #define IsReparseTagHighLatency(x) ((x)&0x40000000) 02006 #define IsReparseTagNameSurrogate(x) ((x)&0x20000000) 02007 #define IO_REPARSE_TAG_VALID_VALUES 0xE000FFFF 02008 #define IsReparseTagValid(x) (!((x)&~IO_REPARSE_TAG_VALID_VALUES)&&((x)>IO_REPARSE_TAG_RESERVED_RANGE)) 02009 #define IO_REPARSE_TAG_SYMBOLIC_LINK IO_REPARSE_TAG_RESERVED_ZERO 02010 #define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003 02011 #define IO_REPARSE_TAG_SYMLINK 0xA000000CL 02012 #ifndef RC_INVOKED 02013 typedef DWORD ACCESS_MASK, *PACCESS_MASK; 02014 02015 #ifdef _GUID_DEFINED 02016 # warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead 02017 #endif 02018 02019 #if ! (defined _GUID_DEFINED || defined GUID_DEFINED) /* also defined in basetyps.h */ 02020 #define GUID_DEFINED 02021 typedef struct _GUID { 02022 unsigned long Data1; 02023 unsigned short Data2; 02024 unsigned short Data3; 02025 unsigned char Data4[8]; 02026 } GUID, *REFGUID, *LPGUID; 02027 #endif /* GUID_DEFINED */ 02028 02029 #define SYSTEM_LUID { 0x3E7, 0x0 } 02030 02031 /* ACE Access Types, also in ntifs.h */ 02032 #define ACCESS_MIN_MS_ACE_TYPE (0x0) 02033 #define ACCESS_ALLOWED_ACE_TYPE (0x0) 02034 #define ACCESS_DENIED_ACE_TYPE (0x1) 02035 #define SYSTEM_AUDIT_ACE_TYPE (0x2) 02036 #define SYSTEM_ALARM_ACE_TYPE (0x3) 02037 #define ACCESS_MAX_MS_V2_ACE_TYPE (0x3) 02038 #define ACCESS_ALLOWED_COMPOUND_ACE_TYPE (0x4) 02039 #define ACCESS_MAX_MS_V3_ACE_TYPE (0x4) 02040 #define ACCESS_MIN_MS_OBJECT_ACE_TYPE (0x5) 02041 #define ACCESS_ALLOWED_OBJECT_ACE_TYPE (0x5) 02042 #define ACCESS_DENIED_OBJECT_ACE_TYPE (0x6) 02043 #define SYSTEM_AUDIT_OBJECT_ACE_TYPE (0x7) 02044 #define SYSTEM_ALARM_OBJECT_ACE_TYPE (0x8) 02045 #define ACCESS_MAX_MS_OBJECT_ACE_TYPE (0x8) 02046 #define ACCESS_MAX_MS_V4_ACE_TYPE (0x8) 02047 #define ACCESS_MAX_MS_ACE_TYPE (0x8) 02048 #define ACCESS_ALLOWED_CALLBACK_ACE_TYPE (0x9) 02049 #define ACCESS_DENIED_CALLBACK_ACE_TYPE (0xA) 02050 #define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE (0xB) 02051 #define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE (0xC) 02052 #define SYSTEM_AUDIT_CALLBACK_ACE_TYPE (0xD) 02053 #define SYSTEM_ALARM_CALLBACK_ACE_TYPE (0xE) 02054 #define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE (0xF) 02055 #define SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE (0x10) 02056 #define SYSTEM_MANDATORY_LABEL_ACE_TYPE (0x11) 02057 #define ACCESS_MAX_MS_V5_ACE_TYPE (0x11) 02058 /* end ntifs.h */ 02059 02060 typedef struct _GENERIC_MAPPING { 02061 ACCESS_MASK GenericRead; 02062 ACCESS_MASK GenericWrite; 02063 ACCESS_MASK GenericExecute; 02064 ACCESS_MASK GenericAll; 02065 } GENERIC_MAPPING, *PGENERIC_MAPPING; 02066 02067 typedef struct _ACE_HEADER { 02068 BYTE AceType; 02069 BYTE AceFlags; 02070 WORD AceSize; 02071 } ACE_HEADER, *PACE_HEADER; 02072 02073 typedef struct _ACCESS_ALLOWED_ACE { 02074 ACE_HEADER Header; 02075 ACCESS_MASK Mask; 02076 DWORD SidStart; 02077 } ACCESS_ALLOWED_ACE, *PACCESS_ALLOWED_ACE; 02078 02079 typedef struct _ACCESS_DENIED_ACE { 02080 ACE_HEADER Header; 02081 ACCESS_MASK Mask; 02082 DWORD SidStart; 02083 } ACCESS_DENIED_ACE, *PACCESS_DENIED_ACE; 02084 02085 typedef struct _SYSTEM_AUDIT_ACE { 02086 ACE_HEADER Header; 02087 ACCESS_MASK Mask; 02088 DWORD SidStart; 02089 } SYSTEM_AUDIT_ACE, *PSYSTEM_AUDIT_ACE; 02090 02091 typedef struct _SYSTEM_ALARM_ACE { 02092 ACE_HEADER Header; 02093 ACCESS_MASK Mask; 02094 DWORD SidStart; 02095 } SYSTEM_ALARM_ACE,*PSYSTEM_ALARM_ACE; 02096 02097 typedef struct _SYSTEM_MANDATORY_LABEL_ACE { 02098 ACE_HEADER Header; 02099 ACCESS_MASK Mask; 02100 DWORD SidStart; 02101 } SYSTEM_MANDATORY_LABEL_ACE, *PSYSTEM_MANDATORY_LABEL_ACE; 02102 02103 #define SYSTEM_MANDATORY_LABEL_NO_WRITE_UP 0x1 02104 #define SYSTEM_MANDATORY_LABEL_NO_READ_UP 0x2 02105 #define SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP 0x4 02106 #define SYSTEM_MANDATORY_LABEL_VALID_MASK (SYSTEM_MANDATORY_LABEL_NO_WRITE_UP | SYSTEM_MANDATORY_LABEL_NO_READ_UP | SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP) 02107 02108 typedef struct _ACCESS_ALLOWED_OBJECT_ACE { 02109 ACE_HEADER Header; 02110 ACCESS_MASK Mask; 02111 DWORD Flags; 02112 GUID ObjectType; 02113 GUID InheritedObjectType; 02114 DWORD SidStart; 02115 } ACCESS_ALLOWED_OBJECT_ACE,*PACCESS_ALLOWED_OBJECT_ACE; 02116 02117 typedef struct _ACCESS_DENIED_OBJECT_ACE { 02118 ACE_HEADER Header; 02119 ACCESS_MASK Mask; 02120 DWORD Flags; 02121 GUID ObjectType; 02122 GUID InheritedObjectType; 02123 DWORD SidStart; 02124 } ACCESS_DENIED_OBJECT_ACE,*PACCESS_DENIED_OBJECT_ACE; 02125 02126 typedef struct _SYSTEM_AUDIT_OBJECT_ACE { 02127 ACE_HEADER Header; 02128 ACCESS_MASK Mask; 02129 DWORD Flags; 02130 GUID ObjectType; 02131 GUID InheritedObjectType; 02132 DWORD SidStart; 02133 } SYSTEM_AUDIT_OBJECT_ACE,*PSYSTEM_AUDIT_OBJECT_ACE; 02134 02135 typedef struct _SYSTEM_ALARM_OBJECT_ACE { 02136 ACE_HEADER Header; 02137 ACCESS_MASK Mask; 02138 DWORD Flags; 02139 GUID ObjectType; 02140 GUID InheritedObjectType; 02141 DWORD SidStart; 02142 } SYSTEM_ALARM_OBJECT_ACE,*PSYSTEM_ALARM_OBJECT_ACE; 02143 02144 typedef struct _ACCESS_ALLOWED_CALLBACK_ACE { 02145 ACE_HEADER Header; 02146 ACCESS_MASK Mask; 02147 DWORD SidStart; 02148 } ACCESS_ALLOWED_CALLBACK_ACE, *PACCESS_ALLOWED_CALLBACK_ACE; 02149 02150 typedef struct _ACCESS_DENIED_CALLBACK_ACE { 02151 ACE_HEADER Header; 02152 ACCESS_MASK Mask; 02153 DWORD SidStart; 02154 } ACCESS_DENIED_CALLBACK_ACE, *PACCESS_DENIED_CALLBACK_ACE; 02155 02156 typedef struct _SYSTEM_AUDIT_CALLBACK_ACE { 02157 ACE_HEADER Header; 02158 ACCESS_MASK Mask; 02159 DWORD SidStart; 02160 } SYSTEM_AUDIT_CALLBACK_ACE, *PSYSTEM_AUDIT_CALLBACK_ACE; 02161 02162 typedef struct _SYSTEM_ALARM_CALLBACK_ACE { 02163 ACE_HEADER Header; 02164 ACCESS_MASK Mask; 02165 DWORD SidStart; 02166 } SYSTEM_ALARM_CALLBACK_ACE, *PSYSTEM_ALARM_CALLBACK_ACE; 02167 02168 typedef struct _ACCESS_ALLOWED_CALLBACK_OBJECT_ACE { 02169 ACE_HEADER Header; 02170 ACCESS_MASK Mask; 02171 DWORD Flags; 02172 GUID ObjectType; 02173 GUID InheritedObjectType; 02174 DWORD SidStart; 02175 } ACCESS_ALLOWED_CALLBACK_OBJECT_ACE, *PACCESS_ALLOWED_CALLBACK_OBJECT_ACE; 02176 02177 typedef struct _ACCESS_DENIED_CALLBACK_OBJECT_ACE { 02178 ACE_HEADER Header; 02179 ACCESS_MASK Mask; 02180 DWORD Flags; 02181 GUID ObjectType; 02182 GUID InheritedObjectType; 02183 DWORD SidStart; 02184 } ACCESS_DENIED_CALLBACK_OBJECT_ACE, *PACCESS_DENIED_CALLBACK_OBJECT_ACE; 02185 02186 typedef struct _SYSTEM_AUDIT_CALLBACK_OBJECT_ACE { 02187 ACE_HEADER Header; 02188 ACCESS_MASK Mask; 02189 DWORD Flags; 02190 GUID ObjectType; 02191 GUID InheritedObjectType; 02192 DWORD SidStart; 02193 } SYSTEM_AUDIT_CALLBACK_OBJECT_ACE, *PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE; 02194 02195 typedef struct _SYSTEM_ALARM_CALLBACK_OBJECT_ACE { 02196 ACE_HEADER Header; 02197 ACCESS_MASK Mask; 02198 DWORD Flags; 02199 GUID ObjectType; 02200 GUID InheritedObjectType; 02201 DWORD SidStart; 02202 } SYSTEM_ALARM_CALLBACK_OBJECT_ACE, *PSYSTEM_ALARM_CALLBACK_OBJECT_ACE; 02203 02204 typedef struct _ACL { 02205 BYTE AclRevision; 02206 BYTE Sbz1; 02207 WORD AclSize; 02208 WORD AceCount; 02209 WORD Sbz2; 02210 } ACL,*PACL; 02211 02212 typedef enum _ACL_INFORMATION_CLASS { 02213 AclRevisionInformation = 1, 02214 AclSizeInformation 02215 } ACL_INFORMATION_CLASS; 02216 02217 typedef struct _ACL_REVISION_INFORMATION { 02218 DWORD AclRevision; 02219 } ACL_REVISION_INFORMATION, *PACL_REVISION_INFORMATION; 02220 02221 typedef struct _ACL_SIZE_INFORMATION { 02222 DWORD AceCount; 02223 DWORD AclBytesInUse; 02224 DWORD AclBytesFree; 02225 } ACL_SIZE_INFORMATION, *PACL_SIZE_INFORMATION; 02226 02227 typedef 02228 EXCEPTION_DISPOSITION 02229 NTAPI 02230 EXCEPTION_ROUTINE( 02231 _Inout_ struct _EXCEPTION_RECORD *ExceptionRecord, 02232 _In_ PVOID EstablisherFrame, 02233 _Inout_ struct _CONTEXT *ContextRecord, 02234 _In_ PVOID DispatcherContext); 02235 02236 typedef EXCEPTION_ROUTINE *PEXCEPTION_ROUTINE; 02237 02238 #ifndef _LDT_ENTRY_DEFINED 02239 #define _LDT_ENTRY_DEFINED 02240 02241 typedef struct _LDT_ENTRY { 02242 WORD LimitLow; 02243 WORD BaseLow; 02244 union { 02245 struct { 02246 BYTE BaseMid; 02247 BYTE Flags1; 02248 BYTE Flags2; 02249 BYTE BaseHi; 02250 } Bytes; 02251 struct { 02252 DWORD BaseMid:8; 02253 DWORD Type:5; 02254 DWORD Dpl:2; 02255 DWORD Pres:1; 02256 DWORD LimitHi:4; 02257 DWORD Sys:1; 02258 DWORD Reserved_0:1; 02259 DWORD Default_Big:1; 02260 DWORD Granularity:1; 02261 DWORD BaseHi:8; 02262 } Bits; 02263 } HighWord; 02264 } LDT_ENTRY, *PLDT_ENTRY, *LPLDT_ENTRY; 02265 02266 #endif /* _LDT_ENTRY_DEFINED */ 02267 02268 /* FIXME: add more machines */ 02269 #if defined(_X86_) && !defined(__PowerPC__) 02270 #define SIZE_OF_80387_REGISTERS 80 02271 #define CONTEXT_i386 0x10000 02272 #define CONTEXT_i486 0x10000 02273 #define CONTEXT_CONTROL (CONTEXT_i386|0x00000001L) 02274 #define CONTEXT_INTEGER (CONTEXT_i386|0x00000002L) 02275 #define CONTEXT_SEGMENTS (CONTEXT_i386|0x00000004L) 02276 #define CONTEXT_FLOATING_POINT (CONTEXT_i386|0x00000008L) 02277 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_i386|0x00000010L) 02278 #define CONTEXT_EXTENDED_REGISTERS (CONTEXT_i386|0x00000020L) 02279 #define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS) 02280 #define MAXIMUM_SUPPORTED_EXTENSION 512 02281 02282 #define EXCEPTION_READ_FAULT 0 02283 #define EXCEPTION_WRITE_FAULT 1 02284 #define EXCEPTION_EXECUTE_FAULT 8 02285 02286 typedef struct _FLOATING_SAVE_AREA { 02287 DWORD ControlWord; 02288 DWORD StatusWord; 02289 DWORD TagWord; 02290 DWORD ErrorOffset; 02291 DWORD ErrorSelector; 02292 DWORD DataOffset; 02293 DWORD DataSelector; 02294 BYTE RegisterArea[80]; 02295 DWORD Cr0NpxState; 02296 } FLOATING_SAVE_AREA, *PFLOATING_SAVE_AREA; 02297 02298 typedef struct _CONTEXT { 02299 DWORD ContextFlags; 02300 DWORD Dr0; 02301 DWORD Dr1; 02302 DWORD Dr2; 02303 DWORD Dr3; 02304 DWORD Dr6; 02305 DWORD Dr7; 02306 FLOATING_SAVE_AREA FloatSave; 02307 DWORD SegGs; 02308 DWORD SegFs; 02309 DWORD SegEs; 02310 DWORD SegDs; 02311 DWORD Edi; 02312 DWORD Esi; 02313 DWORD Ebx; 02314 DWORD Edx; 02315 DWORD Ecx; 02316 DWORD Eax; 02317 DWORD Ebp; 02318 DWORD Eip; 02319 DWORD SegCs; 02320 DWORD EFlags; 02321 DWORD Esp; 02322 DWORD SegSs; 02323 BYTE ExtendedRegisters[MAXIMUM_SUPPORTED_EXTENSION]; 02324 } CONTEXT; 02325 #elif defined(__x86_64__) 02326 02327 #define CONTEXT_AMD64 0x100000 02328 02329 #if !defined(RC_INVOKED) 02330 #define CONTEXT_CONTROL (CONTEXT_AMD64 | 0x1L) 02331 #define CONTEXT_INTEGER (CONTEXT_AMD64 | 0x2L) 02332 #define CONTEXT_SEGMENTS (CONTEXT_AMD64 | 0x4L) 02333 #define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | 0x8L) 02334 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x10L) 02335 02336 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT) 02337 #define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS) 02338 02339 #define CONTEXT_EXCEPTION_ACTIVE 0x8000000 02340 #define CONTEXT_SERVICE_ACTIVE 0x10000000 02341 #define CONTEXT_EXCEPTION_REQUEST 0x40000000 02342 #define CONTEXT_EXCEPTION_REPORTING 0x80000000 02343 #endif 02344 02345 #define INITIAL_MXCSR 0x1f80 02346 #define INITIAL_FPCSR 0x027f 02347 #define EXCEPTION_READ_FAULT 0 02348 #define EXCEPTION_WRITE_FAULT 1 02349 #define EXCEPTION_EXECUTE_FAULT 8 02350 02351 typedef struct DECLSPEC_ALIGN(16) _M128A { 02352 ULONGLONG Low; 02353 LONGLONG High; 02354 } M128A, *PM128A; 02355 02356 typedef struct _XMM_SAVE_AREA32 { 02357 WORD ControlWord; 02358 WORD StatusWord; 02359 BYTE TagWord; 02360 BYTE Reserved1; 02361 WORD ErrorOpcode; 02362 DWORD ErrorOffset; 02363 WORD ErrorSelector; 02364 WORD Reserved2; 02365 DWORD DataOffset; 02366 WORD DataSelector; 02367 WORD Reserved3; 02368 DWORD MxCsr; 02369 DWORD MxCsr_Mask; 02370 M128A FloatRegisters[8]; 02371 M128A XmmRegisters[16]; 02372 BYTE Reserved4[96]; 02373 } XMM_SAVE_AREA32, *PXMM_SAVE_AREA32; 02374 02375 typedef struct DECLSPEC_ALIGN(16) _CONTEXT { 02376 DWORD64 P1Home; 02377 DWORD64 P2Home; 02378 DWORD64 P3Home; 02379 DWORD64 P4Home; 02380 DWORD64 P5Home; 02381 DWORD64 P6Home; 02382 02383 /* Control flags */ 02384 DWORD ContextFlags; 02385 DWORD MxCsr; 02386 02387 /* Segment */ 02388 WORD SegCs; 02389 WORD SegDs; 02390 WORD SegEs; 02391 WORD SegFs; 02392 WORD SegGs; 02393 WORD SegSs; 02394 DWORD EFlags; 02395 02396 /* Debug */ 02397 DWORD64 Dr0; 02398 DWORD64 Dr1; 02399 DWORD64 Dr2; 02400 DWORD64 Dr3; 02401 DWORD64 Dr6; 02402 DWORD64 Dr7; 02403 02404 /* Integer */ 02405 DWORD64 Rax; 02406 DWORD64 Rcx; 02407 DWORD64 Rdx; 02408 DWORD64 Rbx; 02409 DWORD64 Rsp; 02410 DWORD64 Rbp; 02411 DWORD64 Rsi; 02412 DWORD64 Rdi; 02413 DWORD64 R8; 02414 DWORD64 R9; 02415 DWORD64 R10; 02416 DWORD64 R11; 02417 DWORD64 R12; 02418 DWORD64 R13; 02419 DWORD64 R14; 02420 DWORD64 R15; 02421 02422 /* Counter */ 02423 DWORD64 Rip; 02424 02425 /* Floating point */ 02426 union { 02427 XMM_SAVE_AREA32 FltSave; 02428 struct { 02429 M128A Header[2]; 02430 M128A Legacy[8]; 02431 M128A Xmm0; 02432 M128A Xmm1; 02433 M128A Xmm2; 02434 M128A Xmm3; 02435 M128A Xmm4; 02436 M128A Xmm5; 02437 M128A Xmm6; 02438 M128A Xmm7; 02439 M128A Xmm8; 02440 M128A Xmm9; 02441 M128A Xmm10; 02442 M128A Xmm11; 02443 M128A Xmm12; 02444 M128A Xmm13; 02445 M128A Xmm14; 02446 M128A Xmm15; 02447 } DUMMYSTRUCTNAME; 02448 } DUMMYUNIONNAME; 02449 02450 /* Vector */ 02451 M128A VectorRegister[26]; 02452 DWORD64 VectorControl; 02453 02454 /* Debug control */ 02455 DWORD64 DebugControl; 02456 DWORD64 LastBranchToRip; 02457 DWORD64 LastBranchFromRip; 02458 DWORD64 LastExceptionToRip; 02459 DWORD64 LastExceptionFromRip; 02460 } CONTEXT; 02461 02462 02463 typedef struct _KNONVOLATILE_CONTEXT_POINTERS { 02464 union { 02465 PM128A FloatingContext[16]; 02466 struct { 02467 PM128A Xmm0; 02468 PM128A Xmm1; 02469 PM128A Xmm2; 02470 PM128A Xmm3; 02471 PM128A Xmm4; 02472 PM128A Xmm5; 02473 PM128A Xmm6; 02474 PM128A Xmm7; 02475 PM128A Xmm8; 02476 PM128A Xmm9; 02477 PM128A Xmm10; 02478 PM128A Xmm11; 02479 PM128A Xmm12; 02480 PM128A Xmm13; 02481 PM128A Xmm14; 02482 PM128A Xmm15; 02483 } DUMMYSTRUCTNAME; 02484 } DUMMYUNIONNAME; 02485 02486 union { 02487 PULONG64 IntegerContext[16]; 02488 struct { 02489 PULONG64 Rax; 02490 PULONG64 Rcx; 02491 PULONG64 Rdx; 02492 PULONG64 Rbx; 02493 PULONG64 Rsp; 02494 PULONG64 Rbp; 02495 PULONG64 Rsi; 02496 PULONG64 Rdi; 02497 PULONG64 R8; 02498 PULONG64 R9; 02499 PULONG64 R10; 02500 PULONG64 R11; 02501 PULONG64 R12; 02502 PULONG64 R13; 02503 PULONG64 R14; 02504 PULONG64 R15; 02505 } DUMMYSTRUCTNAME; 02506 } DUMMYUNIONNAME2; 02507 } KNONVOLATILE_CONTEXT_POINTERS, *PKNONVOLATILE_CONTEXT_POINTERS; 02508 02509 #define RUNTIME_FUNCTION_INDIRECT 0x1 02510 02511 typedef struct _RUNTIME_FUNCTION { 02512 DWORD BeginAddress; 02513 DWORD EndAddress; 02514 DWORD UnwindData; 02515 } RUNTIME_FUNCTION,*PRUNTIME_FUNCTION; 02516 02517 #define UNWIND_HISTORY_TABLE_SIZE 12 02518 02519 typedef struct _UNWIND_HISTORY_TABLE_ENTRY 02520 { 02521 ULONG64 ImageBase; 02522 PRUNTIME_FUNCTION FunctionEntry; 02523 } UNWIND_HISTORY_TABLE_ENTRY, *PUNWIND_HISTORY_TABLE_ENTRY; 02524 02525 typedef struct _UNWIND_HISTORY_TABLE 02526 { 02527 ULONG Count; 02528 UCHAR Search; 02529 ULONG64 LowAddress; 02530 ULONG64 HighAddress; 02531 UNWIND_HISTORY_TABLE_ENTRY Entry[UNWIND_HISTORY_TABLE_SIZE]; 02532 } UNWIND_HISTORY_TABLE, *PUNWIND_HISTORY_TABLE; 02533 02534 typedef PRUNTIME_FUNCTION (*PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD64 ControlPc,PVOID Context); 02535 typedef DWORD (*POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK)(HANDLE Process,PVOID TableAddress,PDWORD Entries,PRUNTIME_FUNCTION *Functions); 02536 02537 #define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME "OutOfProcessFunctionTableCallback" 02538 02539 NTSYSAPI 02540 VOID 02541 __cdecl 02542 RtlRestoreContext(struct _CONTEXT *ContextRecord, 02543 struct _EXCEPTION_RECORD *ExceptionRecord); 02544 02545 NTSYSAPI 02546 BOOLEAN 02547 __cdecl 02548 RtlAddFunctionTable(PRUNTIME_FUNCTION FunctionTable, 02549 DWORD EntryCount, 02550 DWORD64 BaseAddress); 02551 02552 NTSYSAPI 02553 BOOLEAN 02554 __cdecl 02555 RtlInstallFunctionTableCallback(DWORD64 TableIdentifier, 02556 DWORD64 BaseAddress, 02557 DWORD Length, 02558 PGET_RUNTIME_FUNCTION_CALLBACK Callback, 02559 PVOID Context, 02560 PCWSTR OutOfProcessCallbackDll); 02561 02562 NTSYSAPI 02563 BOOLEAN 02564 __cdecl 02565 RtlDeleteFunctionTable(PRUNTIME_FUNCTION FunctionTable); 02566 02567 NTSYSAPI 02568 PRUNTIME_FUNCTION 02569 NTAPI 02570 RtlLookupFunctionEntry( 02571 _In_ DWORD64 ControlPc, 02572 _Out_ PDWORD64 ImageBase, 02573 _Inout_opt_ PUNWIND_HISTORY_TABLE HistoryTable); 02574 02575 NTSYSAPI 02576 PEXCEPTION_ROUTINE 02577 NTAPI 02578 RtlVirtualUnwind( 02579 _In_ DWORD HandlerType, 02580 _In_ DWORD64 ImageBase, 02581 _In_ DWORD64 ControlPc, 02582 _In_ PRUNTIME_FUNCTION FunctionEntry, 02583 _Inout_ struct _CONTEXT *ContextRecord, 02584 _Out_ PVOID *HandlerData, 02585 _Out_ PDWORD64 EstablisherFrame, 02586 _Inout_opt_ PKNONVOLATILE_CONTEXT_POINTERS ContextPointers); 02587 02588 #elif defined(_PPC_) 02589 #define CONTEXT_CONTROL 1L 02590 #define CONTEXT_FLOATING_POINT 2L 02591 #define CONTEXT_INTEGER 4L 02592 #define CONTEXT_DEBUG_REGISTERS 8L 02593 #define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER) 02594 typedef struct _FLOATING_SAVE_AREA 02595 { 02596 double Fpr0; 02597 double Fpr1; 02598 double Fpr2; 02599 double Fpr3; 02600 double Fpr4; 02601 double Fpr5; 02602 double Fpr6; 02603 double Fpr7; 02604 double Fpr8; 02605 double Fpr9; 02606 double Fpr10; 02607 double Fpr11; 02608 double Fpr12; 02609 double Fpr13; 02610 double Fpr14; 02611 double Fpr15; 02612 double Fpr16; 02613 double Fpr17; 02614 double Fpr18; 02615 double Fpr19; 02616 double Fpr20; 02617 double Fpr21; 02618 double Fpr22; 02619 double Fpr23; 02620 double Fpr24; 02621 double Fpr25; 02622 double Fpr26; 02623 double Fpr27; 02624 double Fpr28; 02625 double Fpr29; 02626 double Fpr30; 02627 double Fpr31; 02628 double Fpscr; 02629 } FLOATING_SAVE_AREA; 02630 02631 typedef struct _CONTEXT { 02632 FLOATING_SAVE_AREA FloatSave; 02633 DWORD Gpr0; 02634 DWORD Gpr1; 02635 DWORD Gpr2; 02636 DWORD Gpr3; 02637 DWORD Gpr4; 02638 DWORD Gpr5; 02639 DWORD Gpr6; 02640 DWORD Gpr7; 02641 DWORD Gpr8; 02642 DWORD Gpr9; 02643 DWORD Gpr10; 02644 DWORD Gpr11; 02645 DWORD Gpr12; 02646 DWORD Gpr13; 02647 DWORD Gpr14; 02648 DWORD Gpr15; 02649 DWORD Gpr16; 02650 DWORD Gpr17; 02651 DWORD Gpr18; 02652 DWORD Gpr19; 02653 DWORD Gpr20; 02654 DWORD Gpr21; 02655 DWORD Gpr22; 02656 DWORD Gpr23; 02657 DWORD Gpr24; 02658 DWORD Gpr25; 02659 DWORD Gpr26; 02660 DWORD Gpr27; 02661 DWORD Gpr28; 02662 DWORD Gpr29; 02663 DWORD Gpr30; 02664 DWORD Gpr31; 02665 DWORD Cr; 02666 DWORD Xer; 02667 DWORD Msr; 02668 DWORD Iar; 02669 DWORD Lr; 02670 DWORD Ctr; 02671 DWORD ContextFlags; 02672 DWORD Fill[3]; 02673 DWORD Dr0; 02674 DWORD Dr1; 02675 DWORD Dr2; 02676 DWORD Dr3; 02677 DWORD Dr4; 02678 DWORD Dr5; 02679 DWORD Dr6; 02680 DWORD Dr7; 02681 } CONTEXT; 02682 #elif defined(_ALPHA_) 02683 #define CONTEXT_ALPHA 0x20000 02684 #define CONTEXT_CONTROL (CONTEXT_ALPHA|1L) 02685 #define CONTEXT_FLOATING_POINT (CONTEXT_ALPHA|2L) 02686 #define CONTEXT_INTEGER (CONTEXT_ALPHA|4L) 02687 #define CONTEXT_FULL (CONTEXT_CONTROL|CONTEXT_FLOATING_POINT|CONTEXT_INTEGER) 02688 typedef struct _CONTEXT { 02689 ULONGLONG FltF0; 02690 ULONGLONG FltF1; 02691 ULONGLONG FltF2; 02692 ULONGLONG FltF3; 02693 ULONGLONG FltF4; 02694 ULONGLONG FltF5; 02695 ULONGLONG FltF6; 02696 ULONGLONG FltF7; 02697 ULONGLONG FltF8; 02698 ULONGLONG FltF9; 02699 ULONGLONG FltF10; 02700 ULONGLONG FltF11; 02701 ULONGLONG FltF12; 02702 ULONGLONG FltF13; 02703 ULONGLONG FltF14; 02704 ULONGLONG FltF15; 02705 ULONGLONG FltF16; 02706 ULONGLONG FltF17; 02707 ULONGLONG FltF18; 02708 ULONGLONG FltF19; 02709 ULONGLONG FltF20; 02710 ULONGLONG FltF21; 02711 ULONGLONG FltF22; 02712 ULONGLONG FltF23; 02713 ULONGLONG FltF24; 02714 ULONGLONG FltF25; 02715 ULONGLONG FltF26; 02716 ULONGLONG FltF27; 02717 ULONGLONG FltF28; 02718 ULONGLONG FltF29; 02719 ULONGLONG FltF30; 02720 ULONGLONG FltF31; 02721 ULONGLONG IntV0; 02722 ULONGLONG IntT0; 02723 ULONGLONG IntT1; 02724 ULONGLONG IntT2; 02725 ULONGLONG IntT3; 02726 ULONGLONG IntT4; 02727 ULONGLONG IntT5; 02728 ULONGLONG IntT6; 02729 ULONGLONG IntT7; 02730 ULONGLONG IntS0; 02731 ULONGLONG IntS1; 02732 ULONGLONG IntS2; 02733 ULONGLONG IntS3; 02734 ULONGLONG IntS4; 02735 ULONGLONG IntS5; 02736 ULONGLONG IntFp; 02737 ULONGLONG IntA0; 02738 ULONGLONG IntA1; 02739 ULONGLONG IntA2; 02740 ULONGLONG IntA3; 02741 ULONGLONG IntA4; 02742 ULONGLONG IntA5; 02743 ULONGLONG IntT8; 02744 ULONGLONG IntT9; 02745 ULONGLONG IntT10; 02746 ULONGLONG IntT11; 02747 ULONGLONG IntRa; 02748 ULONGLONG IntT12; 02749 ULONGLONG IntAt; 02750 ULONGLONG IntGp; 02751 ULONGLONG IntSp; 02752 ULONGLONG IntZero; 02753 ULONGLONG Fpcr; 02754 ULONGLONG SoftFpcr; 02755 ULONGLONG Fir; 02756 DWORD Psr; 02757 DWORD ContextFlags; 02758 DWORD Fill[4]; 02759 } CONTEXT; 02760 #elif defined(SHx) 02761 02762 /* These are the debug or break registers on the SH3 */ 02763 typedef struct _DEBUG_REGISTERS { 02764 ULONG BarA; 02765 UCHAR BasrA; 02766 UCHAR BamrA; 02767 USHORT BbrA; 02768 ULONG BarB; 02769 UCHAR BasrB; 02770 UCHAR BamrB; 02771 USHORT BbrB; 02772 ULONG BdrB; 02773 ULONG BdmrB; 02774 USHORT Brcr; 02775 USHORT Align; 02776 } DEBUG_REGISTERS, *PDEBUG_REGISTERS; 02777 02778 /* The following flags control the contents of the CONTEXT structure. */ 02779 02780 #define CONTEXT_SH3 0x00000040 02781 #define CONTEXT_SH4 0x000000c0 /* CONTEXT_SH3 | 0x80 - must contain the SH3 bits */ 02782 02783 #ifdef SH3 02784 #define CONTEXT_CONTROL (CONTEXT_SH3 | 0x00000001L) 02785 #define CONTEXT_INTEGER (CONTEXT_SH3 | 0x00000002L) 02786 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_SH3 | 0x00000008L) 02787 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS) 02788 #else /* SH4 */ 02789 #define CONTEXT_CONTROL (CONTEXT_SH4 | 0x00000001L) 02790 #define CONTEXT_INTEGER (CONTEXT_SH4 | 0x00000002L) 02791 #define CONTEXT_DEBUG_REGISTERS (CONTEXT_SH4 | 0x00000008L) 02792 #define CONTEXT_FLOATING_POINT (CONTEXT_SH4 | 0x00000004L) 02793 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_DEBUG_REGISTERS | CONTEXT_FLOATING_POINT) 02794 #endif 02795 02796 /* Context Frame */ 02797 02798 /* This frame is used to store a limited processor context into the */ 02799 /* Thread structure for CPUs which have no floating point support. */ 02800 02801 typedef struct _CONTEXT { 02802 /* The flags values within this flag control the contents of */ 02803 /* a CONTEXT record. */ 02804 02805 /* If the context record is used as an input parameter, then */ 02806 /* for each portion of the context record controlled by a flag */ 02807 /* whose value is set, it is assumed that that portion of the */ 02808 /* context record contains valid context. If the context record */ 02809 /* is being used to modify a thread's context, then only that */ 02810 /* portion of the threads context will be modified. */ 02811 02812 /* If the context record is used as an IN OUT parameter to capture */ 02813 /* the context of a thread, then only those portions of the thread's */ 02814 /* context corresponding to set flags will be returned. */ 02815 02816 /* The context record is never used as an OUT only parameter. */ 02817 02818 02819 ULONG ContextFlags; 02820 02821 /* This section is specified/returned if the ContextFlags word contains */ 02822 /* the flag CONTEXT_INTEGER. */ 02823 02824 /* N.B. The registers RA and R15 are defined in this section, but are */ 02825 /* considered part of the control context rather than part of the integer */ 02826 /* context. */ 02827 02828 ULONG PR; 02829 ULONG MACH; 02830 ULONG MACL; 02831 ULONG GBR; 02832 ULONG R0; 02833 ULONG R1; 02834 ULONG R2; 02835 ULONG R3; 02836 ULONG R4; 02837 ULONG R5; 02838 ULONG R6; 02839 ULONG R7; 02840 ULONG R8; 02841 ULONG R9; 02842 ULONG R10; 02843 ULONG R11; 02844 ULONG R12; 02845 ULONG R13; 02846 ULONG R14; 02847 ULONG R15; 02848 02849 /* This section is specified/returned if the ContextFlags word contains */ 02850 /* the flag CONTEXT_CONTROL. */ 02851 02852 /* N.B. The registers r15 and ra are defined in the integer section, */ 02853 /* but are considered part of the control context rather than part of */ 02854 /* the integer context. */ 02855 02856 ULONG Fir; 02857 ULONG Psr; 02858 02859 #if !defined(SH3e) && !defined(SH4) 02860 ULONG OldStuff[2]; 02861 DEBUG_REGISTERS DebugRegisters; 02862 #else 02863 ULONG Fpscr; 02864 ULONG Fpul; 02865 ULONG FRegs[16]; 02866 #if defined(SH4) 02867 ULONG xFRegs[16]; 02868 #endif 02869 #endif 02870 } CONTEXT; 02871 02872 #elif defined(_MIPS_) 02873 02874 /* The following flags control the contents of the CONTEXT structure. */ 02875 02876 #define CONTEXT_R4000 0x00010000 /* r4000 context */ 02877 02878 #define CONTEXT_CONTROL (CONTEXT_R4000 | 0x00000001L) 02879 #define CONTEXT_FLOATING_POINT (CONTEXT_R4000 | 0x00000002L) 02880 #define CONTEXT_INTEGER (CONTEXT_R4000 | 0x00000004L) 02881 02882 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_FLOATING_POINT | CONTEXT_INTEGER) 02883 02884 /* Context Frame */ 02885 02886 /* N.B. This frame must be exactly a multiple of 16 bytes in length. */ 02887 02888 /* This frame has a several purposes: 1) it is used as an argument to */ 02889 /* NtContinue, 2) it is used to constuct a call frame for APC delivery, */ 02890 /* 3) it is used to construct a call frame for exception dispatching */ 02891 /* in user mode, and 4) it is used in the user level thread creation */ 02892 /* routines. */ 02893 02894 /* The layout of the record conforms to a standard call frame. */ 02895 02896 02897 typedef struct _CONTEXT { 02898 02899 /* This section is always present and is used as an argument build */ 02900 /* area. */ 02901 02902 DWORD Argument[4]; 02903 02904 /* This section is specified/returned if the ContextFlags word contains */ 02905 /* the flag CONTEXT_FLOATING_POINT. */ 02906 02907 DWORD FltF0; 02908 DWORD FltF1; 02909 DWORD FltF2; 02910 DWORD FltF3; 02911 DWORD FltF4; 02912 DWORD FltF5; 02913 DWORD FltF6; 02914 DWORD FltF7; 02915 DWORD FltF8; 02916 DWORD FltF9; 02917 DWORD FltF10; 02918 DWORD FltF11; 02919 DWORD FltF12; 02920 DWORD FltF13; 02921 DWORD FltF14; 02922 DWORD FltF15; 02923 DWORD FltF16; 02924 DWORD FltF17; 02925 DWORD FltF18; 02926 DWORD FltF19; 02927 DWORD FltF20; 02928 DWORD FltF21; 02929 DWORD FltF22; 02930 DWORD FltF23; 02931 DWORD FltF24; 02932 DWORD FltF25; 02933 DWORD FltF26; 02934 DWORD FltF27; 02935 DWORD FltF28; 02936 DWORD FltF29; 02937 DWORD FltF30; 02938 DWORD FltF31; 02939 02940 /* This section is specified/returned if the ContextFlags word contains */ 02941 /* the flag CONTEXT_INTEGER. */ 02942 02943 /* N.B. The registers gp, sp, and ra are defined in this section, but are */ 02944 /* considered part of the control context rather than part of the integer */ 02945 /* context. */ 02946 02947 /* N.B. Register zero is not stored in the frame. */ 02948 02949 DWORD IntZero; 02950 DWORD IntAt; 02951 DWORD IntV0; 02952 DWORD IntV1; 02953 DWORD IntA0; 02954 DWORD IntA1; 02955 DWORD IntA2; 02956 DWORD IntA3; 02957 DWORD IntT0; 02958 DWORD IntT1; 02959 DWORD IntT2; 02960 DWORD IntT3; 02961 DWORD IntT4; 02962 DWORD IntT5; 02963 DWORD IntT6; 02964 DWORD IntT7; 02965 DWORD IntS0; 02966 DWORD IntS1; 02967 DWORD IntS2; 02968 DWORD IntS3; 02969 DWORD IntS4; 02970 DWORD IntS5; 02971 DWORD IntS6; 02972 DWORD IntS7; 02973 DWORD IntT8; 02974 DWORD IntT9; 02975 DWORD IntK0; 02976 DWORD IntK1; 02977 DWORD IntGp; 02978 DWORD IntSp; 02979 DWORD IntS8; 02980 DWORD IntRa; 02981 DWORD IntLo; 02982 DWORD IntHi; 02983 02984 /* This section is specified/returned if the ContextFlags word contains */ 02985 /* the flag CONTEXT_FLOATING_POINT. */ 02986 02987 DWORD Fsr; 02988 02989 /* This section is specified/returned if the ContextFlags word contains */ 02990 /* the flag CONTEXT_CONTROL. */ 02991 02992 /* N.B. The registers gp, sp, and ra are defined in the integer section, */ 02993 /* but are considered part of the control context rather than part of */ 02994 /* the integer context. */ 02995 02996 DWORD Fir; 02997 DWORD Psr; 02998 02999 /* The flags values within this flag control the contents of */ 03000 /* a CONTEXT record. */ 03001 03002 /* If the context record is used as an input parameter, then */ 03003 /* for each portion of the context record controlled by a flag */ 03004 /* whose value is set, it is assumed that that portion of the */ 03005 /* context record contains valid context. If the context record */ 03006 /* is being used to modify a thread's context, then only that */ 03007 /* portion of the threads context will be modified. */ 03008 03009 /* If the context record is used as an IN OUT parameter to capture */ 03010 /* the context of a thread, then only those portions of the thread's */ 03011 /* context corresponding to set flags will be returned. */ 03012 03013 /* The context record is never used as an OUT only parameter. */ 03014 03015 DWORD ContextFlags; 03016 03017 DWORD Fill[2]; 03018 03019 } CONTEXT; 03020 #elif defined(ARM) 03021 03022 #ifndef PAGE_SIZE 03023 #define PAGE_SIZE 0x1000 // FIXME: This should probably go elsewhere 03024 #endif 03025 03026 /* The following flags control the contents of the CONTEXT structure. */ 03027 03028 #define CONTEXT_ARM 0x0000040 03029 #define CONTEXT_CONTROL (CONTEXT_ARM | 0x00000001L) 03030 #define CONTEXT_INTEGER (CONTEXT_ARM | 0x00000002L) 03031 03032 #define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER) 03033 03034 typedef struct _CONTEXT { 03035 /* The flags values within this flag control the contents of 03036 a CONTEXT record. 03037 03038 If the context record is used as an input parameter, then 03039 for each portion of the context record controlled by a flag 03040 whose value is set, it is assumed that that portion of the 03041 context record contains valid context. If the context record 03042 is being used to modify a thread's context, then only that 03043 portion of the threads context will be modified. 03044 03045 If the context record is used as an IN OUT parameter to capture 03046 the context of a thread, then only those portions of the thread's 03047 context corresponding to set flags will be returned. 03048 03049 The context record is never used as an OUT only parameter. */ 03050 03051 ULONG ContextFlags; 03052 03053 /* This section is specified/returned if the ContextFlags word contains 03054 the flag CONTEXT_INTEGER. */ 03055 ULONG R0; 03056 ULONG R1; 03057 ULONG R2; 03058 ULONG R3; 03059 ULONG R4; 03060 ULONG R5; 03061 ULONG R6; 03062 ULONG R7; 03063 ULONG R8; 03064 ULONG R9; 03065 ULONG R10; 03066 ULONG R11; 03067 ULONG R12; 03068 03069 ULONG Sp; 03070 ULONG Lr; 03071 ULONG Pc; 03072 ULONG Psr; 03073 } CONTEXT; 03074 03075 #else 03076 #error "undefined processor type" 03077 #endif 03078 typedef CONTEXT *PCONTEXT,*LPCONTEXT; 03079 03080 #define EXCEPTION_NONCONTINUABLE 1 03081 #define EXCEPTION_MAXIMUM_PARAMETERS 15 03082 03083 typedef struct _EXCEPTION_RECORD { 03084 DWORD ExceptionCode; 03085 DWORD ExceptionFlags; 03086 struct _EXCEPTION_RECORD *ExceptionRecord; 03087 PVOID ExceptionAddress; 03088 DWORD NumberParameters; 03089 ULONG_PTR ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; 03090 } EXCEPTION_RECORD, *PEXCEPTION_RECORD; 03091 03092 typedef struct _EXCEPTION_RECORD32 { 03093 DWORD ExceptionCode; 03094 DWORD ExceptionFlags; 03095 DWORD ExceptionRecord; 03096 DWORD ExceptionAddress; 03097 DWORD NumberParameters; 03098 DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; 03099 } EXCEPTION_RECORD32,*PEXCEPTION_RECORD32; 03100 03101 typedef struct _EXCEPTION_RECORD64 { 03102 DWORD ExceptionCode; 03103 DWORD ExceptionFlags; 03104 DWORD64 ExceptionRecord; 03105 DWORD64 ExceptionAddress; 03106 DWORD NumberParameters; 03107 DWORD __unusedAlignment; 03108 DWORD64 ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS]; 03109 } EXCEPTION_RECORD64,*PEXCEPTION_RECORD64; 03110 03111 typedef struct _EXCEPTION_POINTERS { 03112 PEXCEPTION_RECORD ExceptionRecord; 03113 PCONTEXT ContextRecord; 03114 } EXCEPTION_POINTERS,*PEXCEPTION_POINTERS, *LPEXCEPTION_POINTERS; 03115 03116 #ifdef _M_PPC 03117 #define LARGE_INTEGER_ORDER(x) x HighPart; DWORD LowPart; 03118 #else 03119 #define LARGE_INTEGER_ORDER(x) DWORD LowPart; x HighPart; 03120 #endif 03121 03122 typedef union _LARGE_INTEGER { 03123 #if ! defined(NONAMELESSUNION) || defined(__cplusplus) 03124 _ANONYMOUS_STRUCT struct { 03125 LARGE_INTEGER_ORDER(LONG) 03126 }; 03127 #endif /* NONAMELESSUNION */ 03128 struct { 03129 LARGE_INTEGER_ORDER(LONG) 03130 } u; 03131 LONGLONG QuadPart; 03132 } LARGE_INTEGER, *PLARGE_INTEGER; 03133 typedef union _ULARGE_INTEGER { 03134 #if ! defined(NONAMELESSUNION) || defined(__cplusplus) 03135 _ANONYMOUS_STRUCT struct { 03136 LARGE_INTEGER_ORDER(DWORD) 03137 }; 03138 #endif /* NONAMELESSUNION */ 03139 struct { 03140 LARGE_INTEGER_ORDER(DWORD) 03141 } u; 03142 ULONGLONG QuadPart; 03143 } ULARGE_INTEGER, *PULARGE_INTEGER; 03144 typedef struct _LUID { 03145 LARGE_INTEGER_ORDER(LONG) 03146 } LUID, *PLUID; 03147 03148 #include <pshpack4.h> 03149 03150 typedef struct _LUID_AND_ATTRIBUTES { 03151 LUID Luid; 03152 DWORD Attributes; 03153 } LUID_AND_ATTRIBUTES, *PLUID_AND_ATTRIBUTES; 03154 typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY]; 03155 typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY; 03156 03157 #include <poppack.h> 03158 03159 typedef struct _PRIVILEGE_SET { 03160 DWORD PrivilegeCount; 03161 DWORD Control; 03162 LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY]; 03163 } PRIVILEGE_SET,*PPRIVILEGE_SET; 03164 03165 typedef struct _SECURITY_ATTRIBUTES { 03166 DWORD nLength; 03167 LPVOID lpSecurityDescriptor; 03168 BOOL bInheritHandle; 03169 } SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES; 03170 03171 typedef enum _SECURITY_IMPERSONATION_LEVEL { 03172 SecurityAnonymous, 03173 SecurityIdentification, 03174 SecurityImpersonation, 03175 SecurityDelegation 03176 } SECURITY_IMPERSONATION_LEVEL,*PSECURITY_IMPERSONATION_LEVEL; 03177 03178 typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE; 03179 03180 typedef struct _SECURITY_QUALITY_OF_SERVICE { 03181 DWORD Length; 03182 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 03183 SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; 03184 BOOLEAN EffectiveOnly; 03185 } SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE; 03186 03187 typedef PVOID PACCESS_TOKEN; 03188 03189 typedef struct _SE_IMPERSONATION_STATE { 03190 PACCESS_TOKEN Token; 03191 BOOLEAN CopyOnOpen; 03192 BOOLEAN EffectiveOnly; 03193 SECURITY_IMPERSONATION_LEVEL Level; 03194 } SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE; 03195 03196 typedef struct _SID_IDENTIFIER_AUTHORITY { 03197 BYTE Value[6]; 03198 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY; 03199 03200 typedef PVOID PSID; 03201 03202 typedef struct _SID { 03203 BYTE Revision; 03204 BYTE SubAuthorityCount; 03205 SID_IDENTIFIER_AUTHORITY IdentifierAuthority; 03206 DWORD SubAuthority[ANYSIZE_ARRAY]; 03207 } SID, *PISID; 03208 03209 #define SECURITY_MIN_SID_SIZE (sizeof(SID)) 03210 #define SECURITY_MAX_SID_SIZE (FIELD_OFFSET(SID, SubAuthority) + SID_MAX_SUB_AUTHORITIES * sizeof(DWORD)) 03211 03212 typedef struct _SID_AND_ATTRIBUTES { 03213 PSID Sid; 03214 DWORD Attributes; 03215 } SID_AND_ATTRIBUTES, *PSID_AND_ATTRIBUTES; 03216 typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY]; 03217 typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY; 03218 03219 typedef struct _TOKEN_SOURCE { 03220 CHAR SourceName[TOKEN_SOURCE_LENGTH]; 03221 LUID SourceIdentifier; 03222 } TOKEN_SOURCE,*PTOKEN_SOURCE; 03223 03224 typedef struct _TOKEN_CONTROL { 03225 LUID TokenId; 03226 LUID AuthenticationId; 03227 LUID ModifiedId; 03228 TOKEN_SOURCE TokenSource; 03229 } TOKEN_CONTROL,*PTOKEN_CONTROL; 03230 03231 typedef struct _TOKEN_DEFAULT_DACL { 03232 PACL DefaultDacl; 03233 } TOKEN_DEFAULT_DACL,*PTOKEN_DEFAULT_DACL; 03234 03235 typedef struct _TOKEN_GROUPS { 03236 DWORD GroupCount; 03237 SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]; 03238 } TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS; 03239 03240 typedef struct _TOKEN_GROUPS_AND_PRIVILEGES { 03241 DWORD SidCount; 03242 DWORD SidLength; 03243 PSID_AND_ATTRIBUTES Sids; 03244 DWORD RestrictedSidCount; 03245 DWORD RestrictedSidLength; 03246 PSID_AND_ATTRIBUTES RestrictedSids; 03247 DWORD PrivilegeCount; 03248 DWORD PrivilegeLength; 03249 PLUID_AND_ATTRIBUTES Privileges; 03250 LUID AuthenticationId; 03251 } TOKEN_GROUPS_AND_PRIVILEGES, *PTOKEN_GROUPS_AND_PRIVILEGES; 03252 03253 typedef struct _TOKEN_ORIGIN { 03254 LUID OriginatingLogonSession; 03255 } TOKEN_ORIGIN, *PTOKEN_ORIGIN; 03256 03257 typedef struct _TOKEN_OWNER { 03258 PSID Owner; 03259 } TOKEN_OWNER,*PTOKEN_OWNER; 03260 03261 typedef struct _TOKEN_PRIMARY_GROUP { 03262 PSID PrimaryGroup; 03263 } TOKEN_PRIMARY_GROUP,*PTOKEN_PRIMARY_GROUP; 03264 03265 typedef struct _TOKEN_PRIVILEGES { 03266 DWORD PrivilegeCount; 03267 LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY]; 03268 } TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES; 03269 03270 typedef enum tagTOKEN_TYPE { 03271 TokenPrimary = 1, 03272 TokenImpersonation 03273 } TOKEN_TYPE,*PTOKEN_TYPE; 03274 03275 typedef enum _TOKEN_ELEVATION_TYPE { 03276 TokenElevationTypeDefault = 1, 03277 TokenElevationTypeFull, 03278 TokenElevationTypeLimited, 03279 } TOKEN_ELEVATION_TYPE, *PTOKEN_ELEVATION_TYPE; 03280 03281 #include <pshpack4.h> 03282 typedef struct _TOKEN_STATISTICS { 03283 LUID TokenId; 03284 LUID AuthenticationId; 03285 LARGE_INTEGER ExpirationTime; 03286 TOKEN_TYPE TokenType; 03287 SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; 03288 DWORD DynamicCharged; 03289 DWORD DynamicAvailable; 03290 DWORD GroupCount; 03291 DWORD PrivilegeCount; 03292 LUID ModifiedId; 03293 } TOKEN_STATISTICS, *PTOKEN_STATISTICS; 03294 #include <poppack.h> 03295 03296 typedef struct _TOKEN_USER { 03297 SID_AND_ATTRIBUTES User; 03298 } TOKEN_USER, *PTOKEN_USER; 03299 03300 typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION; 03301 typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL; 03302 03303 #ifndef _SECURITY_ATTRIBUTES_ 03304 #define _SECURITY_ATTRIBUTES_ 03305 typedef struct _SECURITY_DESCRIPTOR { 03306 BYTE Revision; 03307 BYTE Sbz1; 03308 SECURITY_DESCRIPTOR_CONTROL Control; 03309 PSID Owner; 03310 PSID Group; 03311 PACL Sacl; 03312 PACL Dacl; 03313 } SECURITY_DESCRIPTOR, *PISECURITY_DESCRIPTOR; 03314 typedef PVOID PSECURITY_DESCRIPTOR; 03315 #endif 03316 03317 typedef struct _SECURITY_DESCRIPTOR_RELATIVE { 03318 BYTE Revision; 03319 BYTE Sbz1; 03320 SECURITY_DESCRIPTOR_CONTROL Control; 03321 DWORD Owner; 03322 DWORD Group; 03323 DWORD Sacl; 03324 DWORD Dacl; 03325 } SECURITY_DESCRIPTOR_RELATIVE, *PISECURITY_DESCRIPTOR_RELATIVE; 03326 03327 typedef enum _TOKEN_INFORMATION_CLASS { 03328 TokenUser = 1, 03329 TokenGroups, 03330 TokenPrivileges, 03331 TokenOwner, 03332 TokenPrimaryGroup, 03333 TokenDefaultDacl, 03334 TokenSource, 03335 TokenType, 03336 TokenImpersonationLevel, 03337 TokenStatistics, 03338 TokenRestrictedSids, 03339 TokenSessionId, 03340 TokenGroupsAndPrivileges, 03341 TokenSessionReference, 03342 TokenSandBoxInert, 03343 TokenAuditPolicy, 03344 TokenOrigin, 03345 TokenElevationType, 03346 TokenLinkedToken, 03347 TokenElevation, 03348 TokenHasRestrictions, 03349 TokenAccessInformation, 03350 TokenVirtualizationAllowed, 03351 TokenVirtualizationEnabled, 03352 TokenIntegrityLevel, 03353 TokenUIAccess, 03354 TokenMandatoryPolicy, 03355 TokenLogonSid, 03356 MaxTokenInfoClass 03357 } TOKEN_INFORMATION_CLASS; 03358 03359 typedef enum _SID_NAME_USE { 03360 SidTypeUser=1, 03361 SidTypeGroup, 03362 SidTypeDomain, 03363 SidTypeAlias, 03364 SidTypeWellKnownGroup, 03365 SidTypeDeletedAccount, 03366 SidTypeInvalid, 03367 SidTypeUnknown, 03368 SidTypeComputer, 03369 SidTypeLabel 03370 } SID_NAME_USE,*PSID_NAME_USE; 03371 03372 typedef struct _QUOTA_LIMITS { 03373 SIZE_T PagedPoolLimit; 03374 SIZE_T NonPagedPoolLimit; 03375 SIZE_T MinimumWorkingSetSize; 03376 SIZE_T MaximumWorkingSetSize; 03377 SIZE_T PagefileLimit; 03378 LARGE_INTEGER TimeLimit; 03379 } QUOTA_LIMITS,*PQUOTA_LIMITS; 03380 03381 typedef struct _QUOTA_LIMITS_EX { 03382 SIZE_T PagedPoolLimit; 03383 SIZE_T NonPagedPoolLimit; 03384 SIZE_T MinimumWorkingSetSize; 03385 SIZE_T MaximumWorkingSetSize; 03386 SIZE_T PagefileLimit; 03387 LARGE_INTEGER TimeLimit; 03388 SIZE_T Reserved1; 03389 SIZE_T Reserved2; 03390 SIZE_T Reserved3; 03391 SIZE_T Reserved4; 03392 ULONG Flags; 03393 ULONG Reserved5; 03394 } QUOTA_LIMITS_EX, *PQUOTA_LIMITS_EX; 03395 03396 typedef struct _IO_COUNTERS { 03397 ULONGLONG ReadOperationCount; 03398 ULONGLONG WriteOperationCount; 03399 ULONGLONG OtherOperationCount; 03400 ULONGLONG ReadTransferCount; 03401 ULONGLONG WriteTransferCount; 03402 ULONGLONG OtherTransferCount; 03403 } IO_COUNTERS, *PIO_COUNTERS; 03404 03405 typedef struct _FILE_NOTIFY_INFORMATION { 03406 DWORD NextEntryOffset; 03407 DWORD Action; 03408 DWORD FileNameLength; 03409 WCHAR FileName[1]; 03410 } FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION; 03411 03412 typedef struct _TAPE_ERASE { 03413 DWORD Type; 03414 BOOLEAN Immediate; 03415 } TAPE_ERASE, *PTAPE_ERASE; 03416 03417 typedef struct _TAPE_GET_DRIVE_PARAMETERS { 03418 BOOLEAN ECC; 03419 BOOLEAN Compression; 03420 BOOLEAN DataPadding; 03421 BOOLEAN ReportSetmarks; 03422 DWORD DefaultBlockSize; 03423 DWORD MaximumBlockSize; 03424 DWORD MinimumBlockSize; 03425 DWORD MaximumPartitionCount; 03426 DWORD FeaturesLow; 03427 DWORD FeaturesHigh; 03428 DWORD EOTWarningZoneSize; 03429 } TAPE_GET_DRIVE_PARAMETERS, *PTAPE_GET_DRIVE_PARAMETERS; 03430 03431 typedef struct _TAPE_GET_MEDIA_PARAMETERS { 03432 LARGE_INTEGER Capacity; 03433 LARGE_INTEGER Remaining; 03434 DWORD BlockSize; 03435 DWORD PartitionCount; 03436 BOOLEAN WriteProtected; 03437 } TAPE_GET_MEDIA_PARAMETERS, *PTAPE_GET_MEDIA_PARAMETERS; 03438 03439 typedef struct _TAPE_GET_POSITION { 03440 ULONG Type; 03441 ULONG Partition; 03442 LARGE_INTEGER Offset; 03443 } TAPE_GET_POSITION, *PTAPE_GET_POSITION; 03444 03445 typedef struct _TAPE_PREPARE { 03446 DWORD Operation; 03447 BOOLEAN Immediate; 03448 } TAPE_PREPARE, *PTAPE_PREPARE; 03449 03450 typedef struct _TAPE_SET_DRIVE_PARAMETERS { 03451 BOOLEAN ECC; 03452 BOOLEAN Compression; 03453 BOOLEAN DataPadding; 03454 BOOLEAN ReportSetmarks; 03455 DWORD EOTWarningZoneSize; 03456 } TAPE_SET_DRIVE_PARAMETERS, *PTAPE_SET_DRIVE_PARAMETERS; 03457 03458 typedef struct _TAPE_SET_MEDIA_PARAMETERS { 03459 DWORD BlockSize; 03460 } TAPE_SET_MEDIA_PARAMETERS,*PTAPE_SET_MEDIA_PARAMETERS; 03461 03462 typedef struct _TAPE_SET_POSITION { 03463 DWORD Method; 03464 DWORD Partition; 03465 LARGE_INTEGER Offset; 03466 BOOLEAN Immediate; 03467 } TAPE_SET_POSITION, *PTAPE_SET_POSITION; 03468 03469 typedef struct _TAPE_WRITE_MARKS { 03470 DWORD Type; 03471 DWORD Count; 03472 BOOLEAN Immediate; 03473 } TAPE_WRITE_MARKS, *PTAPE_WRITE_MARKS; 03474 03475 typedef struct _TAPE_CREATE_PARTITION { 03476 DWORD Method; 03477 DWORD Count; 03478 DWORD Size; 03479 } TAPE_CREATE_PARTITION, *PTAPE_CREATE_PARTITION; 03480 03481 typedef struct _MEMORY_BASIC_INFORMATION { 03482 PVOID BaseAddress; 03483 PVOID AllocationBase; 03484 DWORD AllocationProtect; 03485 SIZE_T RegionSize; 03486 DWORD State; 03487 DWORD Protect; 03488 DWORD Type; 03489 } MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION; 03490 03491 typedef struct _MESSAGE_RESOURCE_ENTRY { 03492 WORD Length; 03493 WORD Flags; 03494 BYTE Text[1]; 03495 } MESSAGE_RESOURCE_ENTRY, *PMESSAGE_RESOURCE_ENTRY; 03496 03497 typedef struct _MESSAGE_RESOURCE_BLOCK { 03498 DWORD LowId; 03499 DWORD HighId; 03500 DWORD OffsetToEntries; 03501 } MESSAGE_RESOURCE_BLOCK, *PMESSAGE_RESOURCE_BLOCK; 03502 03503 typedef struct _MESSAGE_RESOURCE_DATA { 03504 DWORD NumberOfBlocks; 03505 MESSAGE_RESOURCE_BLOCK Blocks[1]; 03506 } MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA; 03507 03508 typedef struct _LIST_ENTRY { 03509 struct _LIST_ENTRY *Flink; 03510 struct _LIST_ENTRY *Blink; 03511 } LIST_ENTRY, *PLIST_ENTRY, *RESTRICTED_POINTER PRLIST_ENTRY; 03512 03513 typedef struct _LIST_ENTRY32 { 03514 DWORD Flink; 03515 DWORD Blink; 03516 } LIST_ENTRY32,*PLIST_ENTRY32; 03517 03518 typedef struct _LIST_ENTRY64 { 03519 ULONGLONG Flink; 03520 ULONGLONG Blink; 03521 } LIST_ENTRY64,*PLIST_ENTRY64; 03522 03523 typedef struct _SINGLE_LIST_ENTRY { 03524 struct _SINGLE_LIST_ENTRY *Next; 03525 } SINGLE_LIST_ENTRY,*PSINGLE_LIST_ENTRY; 03526 03527 // 03528 // Slist Header 03529 // 03530 #ifndef _SLIST_HEADER_ 03531 #define _SLIST_HEADER_ 03532 03533 #if defined(_WIN64) 03534 03535 typedef struct DECLSPEC_ALIGN(16) _SLIST_ENTRY { 03536 struct _SLIST_ENTRY *Next; 03537 } SLIST_ENTRY, *PSLIST_ENTRY; 03538 03539 typedef struct _SLIST_ENTRY32 { 03540 DWORD Next; 03541 } SLIST_ENTRY32, *PSLIST_ENTRY32; 03542 03543 typedef union DECLSPEC_ALIGN(16) _SLIST_HEADER { 03544 _ANONYMOUS_STRUCT struct { 03545 ULONGLONG Alignment; 03546 ULONGLONG Region; 03547 } DUMMYSTRUCTNAME; 03548 struct { 03549 ULONGLONG Depth:16; 03550 ULONGLONG Sequence:9; 03551 ULONGLONG NextEntry:39; 03552 ULONGLONG HeaderType:1; 03553 ULONGLONG Init:1; 03554 ULONGLONG Reserved:59; 03555 ULONGLONG Region:3; 03556 } Header8; 03557 struct { 03558 ULONGLONG Depth:16; 03559 ULONGLONG Sequence:48; 03560 ULONGLONG HeaderType:1; 03561 ULONGLONG Init:1; 03562 ULONGLONG Reserved:2; 03563 ULONGLONG NextEntry:60; 03564 } Header16; 03565 struct { 03566 ULONGLONG Depth:16; 03567 ULONGLONG Sequence:48; 03568 ULONGLONG HeaderType:1; 03569 ULONGLONG Reserved:3; 03570 ULONGLONG NextEntry:60; 03571 } HeaderX64; 03572 } SLIST_HEADER, *PSLIST_HEADER; 03573 03574 typedef union _SLIST_HEADER32{ 03575 ULONGLONG Alignment; 03576 _ANONYMOUS_STRUCT struct { 03577 SLIST_ENTRY32 Next; 03578 WORD Depth; 03579 WORD Sequence; 03580 } DUMMYSTRUCTNAME; 03581 } SLIST_HEADER32, *PSLIST_HEADER32; 03582 03583 #else 03584 03585 #define SLIST_ENTRY SINGLE_LIST_ENTRY 03586 #define _SLIST_ENTRY _SINGLE_LIST_ENTRY 03587 #define PSLIST_ENTRY PSINGLE_LIST_ENTRY 03588 03589 typedef SLIST_ENTRY SLIST_ENTRY32, *PSLIST_ENTRY32; 03590 03591 typedef union _SLIST_HEADER { 03592 ULONGLONG Alignment; 03593 _ANONYMOUS_STRUCT struct { 03594 SLIST_ENTRY Next; 03595 WORD Depth; 03596 WORD Sequence; 03597 } DUMMYSTRUCTNAME; 03598 } SLIST_HEADER, *PSLIST_HEADER; 03599 03600 typedef SLIST_HEADER SLIST_HEADER32, *PSLIST_HEADER32; 03601 03602 #endif /* defined(_WIN64) */ 03603 03604 #endif /* _SLIST_HEADER_ */ 03605 03606 NTSYSAPI 03607 VOID 03608 NTAPI 03609 RtlInitializeSListHead ( 03610 IN PSLIST_HEADER ListHead 03611 ); 03612 03613 NTSYSAPI 03614 PSLIST_ENTRY 03615 NTAPI 03616 RtlFirstEntrySList ( 03617 IN const SLIST_HEADER *ListHead 03618 ); 03619 03620 NTSYSAPI 03621 PSLIST_ENTRY 03622 NTAPI 03623 RtlInterlockedPopEntrySList ( 03624 IN PSLIST_HEADER ListHead 03625 ); 03626 03627 NTSYSAPI 03628 PSLIST_ENTRY 03629 NTAPI 03630 RtlInterlockedPushEntrySList ( 03631 IN PSLIST_HEADER ListHead, 03632 IN PSLIST_ENTRY ListEntry 03633 ); 03634 03635 NTSYSAPI 03636 PSLIST_ENTRY 03637 NTAPI 03638 RtlInterlockedFlushSList ( 03639 IN PSLIST_HEADER ListHead 03640 ); 03641 03642 NTSYSAPI 03643 WORD 03644 NTAPI 03645 RtlQueryDepthSList ( 03646 IN PSLIST_HEADER ListHead 03647 ); 03648 03649 typedef struct _RTL_CRITICAL_SECTION_DEBUG { 03650 WORD Type; 03651 WORD CreatorBackTraceIndex; 03652 struct _RTL_CRITICAL_SECTION *CriticalSection; 03653 LIST_ENTRY ProcessLocksList; 03654 DWORD EntryCount; 03655 DWORD ContentionCount; 03656 DWORD Flags; 03657 WORD CreatorBackTraceIndexHigh; 03658 WORD SpareWORD; 03659 } RTL_CRITICAL_SECTION_DEBUG, *PRTL_CRITICAL_SECTION_DEBUG, RTL_RESOURCE_DEBUG, *PRTL_RESOURCE_DEBUG; 03660 03661 #include "pshpack8.h" 03662 typedef struct _RTL_CRITICAL_SECTION { 03663 PRTL_CRITICAL_SECTION_DEBUG DebugInfo; 03664 LONG LockCount; 03665 LONG RecursionCount; 03666 HANDLE OwningThread; 03667 HANDLE LockSemaphore; 03668 ULONG_PTR SpinCount; 03669 } RTL_CRITICAL_SECTION, *PRTL_CRITICAL_SECTION; 03670 #include "poppack.h" 03671 03672 NTSYSAPI 03673 WORD 03674 NTAPI 03675 RtlCaptureStackBackTrace( 03676 IN DWORD FramesToSkip, 03677 IN DWORD FramesToCapture, 03678 OUT PVOID *BackTrace, 03679 OUT PDWORD BackTraceHash OPTIONAL 03680 ); 03681 03682 NTSYSAPI 03683 VOID 03684 NTAPI 03685 RtlCaptureContext( 03686 PCONTEXT ContextRecord 03687 ); 03688 03689 NTSYSAPI 03690 PVOID 03691 NTAPI 03692 RtlPcToFileHeader( 03693 IN PVOID PcValue, 03694 PVOID* BaseOfImage 03695 ); 03696 03697 NTSYSAPI 03698 VOID 03699 NTAPI 03700 RtlUnwind ( 03701 IN PVOID TargetFrame OPTIONAL, 03702 IN PVOID TargetIp OPTIONAL, 03703 IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL, 03704 IN PVOID ReturnValue 03705 ); 03706 03707 #define RTL_SRWLOCK_INIT {0} 03708 03709 typedef struct _RTL_SRWLOCK { 03710 PVOID Ptr; 03711 } RTL_SRWLOCK, *PRTL_SRWLOCK; 03712 03713 #define RTL_CONDITION_VARIABLE_INIT {0} 03714 #define RTL_CONDITION_VARIABLE_LOCKMODE_SHARED 0x1 03715 03716 typedef struct _RTL_CONDITION_VARIABLE { 03717 PVOID Ptr; 03718 } RTL_CONDITION_VARIABLE, *PRTL_CONDITION_VARIABLE; 03719 03720 typedef LONG 03721 (NTAPI *PVECTORED_EXCEPTION_HANDLER)( 03722 struct _EXCEPTION_POINTERS *ExceptionInfo 03723 ); 03724 03725 typedef struct _PROCESSOR_NUMBER { 03726 WORD Group; 03727 BYTE Number; 03728 BYTE Reserved; 03729 } PROCESSOR_NUMBER, *PPROCESSOR_NUMBER; 03730 03731 typedef struct _GROUP_AFFINITY { 03732 KAFFINITY Mask; 03733 WORD Group; 03734 WORD Reserved[3]; 03735 } GROUP_AFFINITY, *PGROUP_AFFINITY; 03736 03737 typedef struct _EVENTLOGRECORD { 03738 DWORD Length; 03739 DWORD Reserved; 03740 DWORD RecordNumber; 03741 DWORD TimeGenerated; 03742 DWORD TimeWritten; 03743 DWORD EventID; 03744 WORD EventType; 03745 WORD NumStrings; 03746 WORD EventCategory; 03747 WORD ReservedFlags; 03748 DWORD ClosingRecordNumber; 03749 DWORD StringOffset; 03750 DWORD UserSidLength; 03751 DWORD UserSidOffset; 03752 DWORD DataLength; 03753 DWORD DataOffset; 03754 } EVENTLOGRECORD, *PEVENTLOGRECORD; 03755 03756 typedef struct _OSVERSIONINFOA { 03757 DWORD dwOSVersionInfoSize; 03758 DWORD dwMajorVersion; 03759 DWORD dwMinorVersion; 03760 DWORD dwBuildNumber; 03761 DWORD dwPlatformId; 03762 CHAR szCSDVersion[128]; 03763 } OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA; 03764 03765 typedef struct _OSVERSIONINFOW { 03766 DWORD dwOSVersionInfoSize; 03767 DWORD dwMajorVersion; 03768 DWORD dwMinorVersion; 03769 DWORD dwBuildNumber; 03770 DWORD dwPlatformId; 03771 WCHAR szCSDVersion[128]; 03772 } OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW, RTL_OSVERSIONINFOW, *PRTL_OSVERSIONINFOW; 03773 03774 typedef struct _OSVERSIONINFOEXA { 03775 DWORD dwOSVersionInfoSize; 03776 DWORD dwMajorVersion; 03777 DWORD dwMinorVersion; 03778 DWORD dwBuildNumber; 03779 DWORD dwPlatformId; 03780 CHAR szCSDVersion[128]; 03781 WORD wServicePackMajor; 03782 WORD wServicePackMinor; 03783 WORD wSuiteMask; 03784 BYTE wProductType; 03785 BYTE wReserved; 03786 } OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA; 03787 03788 typedef struct _OSVERSIONINFOEXW { 03789 DWORD dwOSVersionInfoSize; 03790 DWORD dwMajorVersion; 03791 DWORD dwMinorVersion; 03792 DWORD dwBuildNumber; 03793 DWORD dwPlatformId; 03794 WCHAR szCSDVersion[128]; 03795 WORD wServicePackMajor; 03796 WORD wServicePackMinor; 03797 WORD wSuiteMask; 03798 BYTE wProductType; 03799 BYTE wReserved; 03800 } OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW, RTL_OSVERSIONINFOEXW, *PRTL_OSVERSIONINFOEXW; 03801 03802 #include <pshpack2.h> 03803 03804 typedef struct _IMAGE_VXD_HEADER { 03805 WORD e32_magic; 03806 BYTE e32_border; 03807 BYTE e32_worder; 03808 DWORD e32_level; 03809 WORD e32_cpu; 03810 WORD e32_os; 03811 DWORD e32_ver; 03812 DWORD e32_mflags; 03813 DWORD e32_mpages; 03814 DWORD e32_startobj; 03815 DWORD e32_eip; 03816 DWORD e32_stackobj; 03817 DWORD e32_esp; 03818 DWORD e32_pagesize; 03819 DWORD e32_lastpagesize; 03820 DWORD e32_fixupsize; 03821 DWORD e32_fixupsum; 03822 DWORD e32_ldrsize; 03823 DWORD e32_ldrsum; 03824 DWORD e32_objtab; 03825 DWORD e32_objcnt; 03826 DWORD e32_objmap; 03827 DWORD e32_itermap; 03828 DWORD e32_rsrctab; 03829 DWORD e32_rsrccnt; 03830 DWORD e32_restab; 03831 DWORD e32_enttab; 03832 DWORD e32_dirtab; 03833 DWORD e32_dircnt; 03834 DWORD e32_fpagetab; 03835 DWORD e32_frectab; 03836 DWORD e32_impmod; 03837 DWORD e32_impmodcnt; 03838 DWORD e32_impproc; 03839 DWORD e32_pagesum; 03840 DWORD e32_datapage; 03841 DWORD e32_preload; 03842 DWORD e32_nrestab; 03843 DWORD e32_cbnrestab; 03844 DWORD e32_nressum; 03845 DWORD e32_autodata; 03846 DWORD e32_debuginfo; 03847 DWORD e32_debuglen; 03848 DWORD e32_instpreload; 03849 DWORD e32_instdemand; 03850 DWORD e32_heapsize; 03851 BYTE e32_res3[12]; 03852 DWORD e32_winresoff; 03853 DWORD e32_winreslen; 03854 WORD e32_devid; 03855 WORD e32_ddkver; 03856 } IMAGE_VXD_HEADER, *PIMAGE_VXD_HEADER; 03857 03858 typedef struct _IMAGE_DOS_HEADER { 03859 WORD e_magic; 03860 WORD e_cblp; 03861 WORD e_cp; 03862 WORD e_crlc; 03863 WORD e_cparhdr; 03864 WORD e_minalloc; 03865 WORD e_maxalloc; 03866 WORD e_ss; 03867 WORD e_sp; 03868 WORD e_csum; 03869 WORD e_ip; 03870 WORD e_cs; 03871 WORD e_lfarlc; 03872 WORD e_ovno; 03873 WORD e_res[4]; 03874 WORD e_oemid; 03875 WORD e_oeminfo; 03876 WORD e_res2[10]; 03877 LONG e_lfanew; 03878 } IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER; 03879 03880 typedef struct _IMAGE_OS2_HEADER { 03881 WORD ne_magic; 03882 CHAR ne_ver; 03883 CHAR ne_rev; 03884 WORD ne_enttab; 03885 WORD ne_cbenttab; 03886 LONG ne_crc; 03887 WORD ne_flags; 03888 WORD ne_autodata; 03889 WORD ne_heap; 03890 WORD ne_stack; 03891 LONG ne_csip; 03892 LONG ne_sssp; 03893 WORD ne_cseg; 03894 WORD ne_cmod; 03895 WORD ne_cbnrestab; 03896 WORD ne_segtab; 03897 WORD ne_rsrctab; 03898 WORD ne_restab; 03899 WORD ne_modtab; 03900 WORD ne_imptab; 03901 LONG ne_nrestab; 03902 WORD ne_cmovent; 03903 WORD ne_align; 03904 WORD ne_cres; 03905 BYTE ne_exetyp; 03906 BYTE ne_flagsothers; 03907 WORD ne_pretthunks; 03908 WORD ne_psegrefbytes; 03909 WORD ne_swaparea; 03910 WORD ne_expver; 03911 } IMAGE_OS2_HEADER, *PIMAGE_OS2_HEADER; 03912 03913 #include <poppack.h> 03914 03915 typedef struct _IMAGE_FILE_HEADER { 03916 WORD Machine; 03917 WORD NumberOfSections; 03918 DWORD TimeDateStamp; 03919 DWORD PointerToSymbolTable; 03920 DWORD NumberOfSymbols; 03921 WORD SizeOfOptionalHeader; 03922 WORD Characteristics; 03923 } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; 03924 03925 typedef struct _IMAGE_DATA_DIRECTORY { 03926 DWORD VirtualAddress; 03927 DWORD Size; 03928 } IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY; 03929 03930 typedef struct _IMAGE_OPTIONAL_HEADER32 { 03931 WORD Magic; 03932 BYTE MajorLinkerVersion; 03933 BYTE MinorLinkerVersion; 03934 DWORD SizeOfCode; 03935 DWORD SizeOfInitializedData; 03936 DWORD SizeOfUninitializedData; 03937 DWORD AddressOfEntryPoint; 03938 DWORD BaseOfCode; 03939 DWORD BaseOfData; 03940 DWORD ImageBase; 03941 DWORD SectionAlignment; 03942 DWORD FileAlignment; 03943 WORD MajorOperatingSystemVersion; 03944 WORD MinorOperatingSystemVersion; 03945 WORD MajorImageVersion; 03946 WORD MinorImageVersion; 03947 WORD MajorSubsystemVersion; 03948 WORD MinorSubsystemVersion; 03949 DWORD Win32VersionValue; 03950 DWORD SizeOfImage; 03951 DWORD SizeOfHeaders; 03952 DWORD CheckSum; 03953 WORD Subsystem; 03954 WORD DllCharacteristics; 03955 DWORD SizeOfStackReserve; 03956 DWORD SizeOfStackCommit; 03957 DWORD SizeOfHeapReserve; 03958 DWORD SizeOfHeapCommit; 03959 DWORD LoaderFlags; 03960 DWORD NumberOfRvaAndSizes; 03961 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; 03962 } IMAGE_OPTIONAL_HEADER32, *PIMAGE_OPTIONAL_HEADER32; 03963 03964 typedef struct _IMAGE_OPTIONAL_HEADER64 { 03965 WORD Magic; 03966 BYTE MajorLinkerVersion; 03967 BYTE MinorLinkerVersion; 03968 DWORD SizeOfCode; 03969 DWORD SizeOfInitializedData; 03970 DWORD SizeOfUninitializedData; 03971 DWORD AddressOfEntryPoint; 03972 DWORD BaseOfCode; 03973 ULONGLONG ImageBase; 03974 DWORD SectionAlignment; 03975 DWORD FileAlignment; 03976 WORD MajorOperatingSystemVersion; 03977 WORD MinorOperatingSystemVersion; 03978 WORD MajorImageVersion; 03979 WORD MinorImageVersion; 03980 WORD MajorSubsystemVersion; 03981 WORD MinorSubsystemVersion; 03982 DWORD Win32VersionValue; 03983 DWORD SizeOfImage; 03984 DWORD SizeOfHeaders; 03985 DWORD CheckSum; 03986 WORD Subsystem; 03987 WORD DllCharacteristics; 03988 ULONGLONG SizeOfStackReserve; 03989 ULONGLONG SizeOfStackCommit; 03990 ULONGLONG SizeOfHeapReserve; 03991 ULONGLONG SizeOfHeapCommit; 03992 DWORD LoaderFlags; 03993 DWORD NumberOfRvaAndSizes; 03994 IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; 03995 } IMAGE_OPTIONAL_HEADER64, *PIMAGE_OPTIONAL_HEADER64; 03996 03997 typedef struct _IMAGE_ROM_OPTIONAL_HEADER { 03998 WORD Magic; 03999 BYTE MajorLinkerVersion; 04000 BYTE MinorLinkerVersion; 04001 DWORD SizeOfCode; 04002 DWORD SizeOfInitializedData; 04003 DWORD SizeOfUninitializedData; 04004 DWORD AddressOfEntryPoint; 04005 DWORD BaseOfCode; 04006 DWORD BaseOfData; 04007 DWORD BaseOfBss; 04008 DWORD GprMask; 04009 DWORD CprMask[4]; 04010 DWORD GpValue; 04011 } IMAGE_ROM_OPTIONAL_HEADER, *PIMAGE_ROM_OPTIONAL_HEADER; 04012 04013 typedef struct _IMAGE_NT_HEADERS32 { 04014 DWORD Signature; 04015 IMAGE_FILE_HEADER FileHeader; 04016 IMAGE_OPTIONAL_HEADER32 OptionalHeader; 04017 } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32; 04018 04019 typedef struct _IMAGE_NT_HEADERS64 { 04020 DWORD Signature; 04021 IMAGE_FILE_HEADER FileHeader; 04022 IMAGE_OPTIONAL_HEADER64 OptionalHeader; 04023 } IMAGE_NT_HEADERS64, *PIMAGE_NT_HEADERS64; 04024 04025 #ifdef _WIN64 04026 typedef IMAGE_OPTIONAL_HEADER64 IMAGE_OPTIONAL_HEADER; 04027 typedef PIMAGE_OPTIONAL_HEADER64 PIMAGE_OPTIONAL_HEADER; 04028 typedef IMAGE_NT_HEADERS64 IMAGE_NT_HEADERS; 04029 typedef PIMAGE_NT_HEADERS64 PIMAGE_NT_HEADERS; 04030 #else 04031 typedef IMAGE_OPTIONAL_HEADER32 IMAGE_OPTIONAL_HEADER; 04032 typedef PIMAGE_OPTIONAL_HEADER32 PIMAGE_OPTIONAL_HEADER; 04033 typedef IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS; 04034 typedef PIMAGE_NT_HEADERS32 PIMAGE_NT_HEADERS; 04035 #endif 04036 04037 typedef struct _IMAGE_ROM_HEADERS { 04038 IMAGE_FILE_HEADER FileHeader; 04039 IMAGE_ROM_OPTIONAL_HEADER OptionalHeader; 04040 } IMAGE_ROM_HEADERS, *PIMAGE_ROM_HEADERS; 04041 04042 typedef struct _IMAGE_SECTION_HEADER { 04043 BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; 04044 union { 04045 DWORD PhysicalAddress; 04046 DWORD VirtualSize; 04047 } Misc; 04048 DWORD VirtualAddress; 04049 DWORD SizeOfRawData; 04050 DWORD PointerToRawData; 04051 DWORD PointerToRelocations; 04052 DWORD PointerToLinenumbers; 04053 WORD NumberOfRelocations; 04054 WORD NumberOfLinenumbers; 04055 DWORD Characteristics; 04056 } IMAGE_SECTION_HEADER, *PIMAGE_SECTION_HEADER; 04057 04058 #include <pshpack2.h> 04059 04060 typedef struct _IMAGE_SYMBOL { 04061 union { 04062 BYTE ShortName[8]; 04063 struct { 04064 DWORD Short; 04065 DWORD Long; 04066 } Name; 04067 PBYTE LongName[2]; 04068 } N; 04069 DWORD Value; 04070 SHORT SectionNumber; 04071 WORD Type; 04072 BYTE StorageClass; 04073 BYTE NumberOfAuxSymbols; 04074 } IMAGE_SYMBOL, *PIMAGE_SYMBOL; 04075 04076 typedef struct _IMAGE_LINENUMBER { 04077 union { 04078 DWORD SymbolTableIndex; 04079 DWORD VirtualAddress; 04080 } Type; 04081 WORD Linenumber; 04082 } IMAGE_LINENUMBER, UNALIGNED *PIMAGE_LINENUMBER; 04083 04084 typedef struct IMAGE_AUX_SYMBOL_TOKEN_DEF { 04085 BYTE bAuxType; 04086 BYTE bReserved; 04087 DWORD SymbolTableIndex; 04088 BYTE rgbReserved[12]; 04089 } IMAGE_AUX_SYMBOL_TOKEN_DEF, UNALIGNED *PIMAGE_AUX_SYMBOL_TOKEN_DEF; 04090 04091 typedef union _IMAGE_AUX_SYMBOL { 04092 struct { 04093 DWORD TagIndex; 04094 union { 04095 struct { 04096 WORD Linenumber; 04097 WORD Size; 04098 } LnSz; 04099 DWORD TotalSize; 04100 } Misc; 04101 union { 04102 struct { 04103 DWORD PointerToLinenumber; 04104 DWORD PointerToNextFunction; 04105 } Function; 04106 struct { 04107 WORD Dimension[4]; 04108 } Array; 04109 } FcnAry; 04110 WORD TvIndex; 04111 } Sym; 04112 struct { 04113 BYTE Name[IMAGE_SIZEOF_SYMBOL]; 04114 } File; 04115 struct { 04116 DWORD Length; 04117 WORD NumberOfRelocations; 04118 WORD NumberOfLinenumbers; 04119 DWORD CheckSum; 04120 SHORT Number; 04121 BYTE Selection; 04122 BYTE bReserved; 04123 SHORT HighNumber; 04124 } Section; 04125 IMAGE_AUX_SYMBOL_TOKEN_DEF TokenDef; 04126 struct { 04127 DWORD crc; 04128 BYTE rgbReserved[14]; 04129 } CRC; 04130 } IMAGE_AUX_SYMBOL, *PIMAGE_AUX_SYMBOL; 04131 04132 typedef struct _IMAGE_RELOCATION { 04133 _ANONYMOUS_UNION union { 04134 DWORD VirtualAddress; 04135 DWORD RelocCount; 04136 } DUMMYUNIONNAME; 04137 DWORD SymbolTableIndex; 04138 WORD Type; 04139 } IMAGE_RELOCATION, UNALIGNED *PIMAGE_RELOCATION; 04140 04141 #include <poppack.h> 04142 04143 #ifndef __IMAGE_COR20_HEADER_DEFINED__ 04144 #define __IMAGE_COR20_HEADER_DEFINED__ 04145 04146 typedef enum ReplacesCorHdrNumericDefines { 04147 COMIMAGE_FLAGS_ILONLY = 0x00000001, 04148 COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002, 04149 COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004, 04150 COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008, 04151 COMIMAGE_FLAGS_NATIVE_ENTRYPOINT = 0x00000010, 04152 COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000, 04153 COR_VERSION_MAJOR_V2 = 2, 04154 COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2, 04155 COR_VERSION_MINOR = 0, 04156 COR_DELETED_NAME_LENGTH = 8, 04157 COR_VTABLEGAP_NAME_LENGTH = 8, 04158 NATIVE_TYPE_MAX_CB = 1, 04159 COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE = 0xFF, 04160 IMAGE_COR_MIH_METHODRVA = 0x01, 04161 IMAGE_COR_MIH_EHRVA = 0x02, 04162 IMAGE_COR_MIH_BASICBLOCK = 0x08, 04163 COR_VTABLE_32BIT = 0x01, 04164 COR_VTABLE_64BIT = 0x02, 04165 COR_VTABLE_FROM_UNMANAGED = 0x04, 04166 COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN = 0x08, 04167 COR_VTABLE_CALL_MOST_DERIVED = 0x10, 04168 IMAGE_COR_EATJ_THUNK_SIZE = 32, 04169 MAX_CLASS_NAME = 1024, 04170 MAX_PACKAGE_NAME = 1024 04171 } ReplacesCorHdrNumericDefines; 04172 04173 typedef struct IMAGE_COR20_HEADER { 04174 DWORD cb; 04175 WORD MajorRuntimeVersion; 04176 WORD MinorRuntimeVersion; 04177 IMAGE_DATA_DIRECTORY MetaData; 04178 DWORD Flags; 04179 _ANONYMOUS_UNION union { 04180 DWORD EntryPointToken; 04181 DWORD EntryPointRVA; 04182 } DUMMYUNIONNAME; 04183 IMAGE_DATA_DIRECTORY Resources; 04184 IMAGE_DATA_DIRECTORY StrongNameSignature; 04185 IMAGE_DATA_DIRECTORY CodeManagerTable; 04186 IMAGE_DATA_DIRECTORY VTableFixups; 04187 IMAGE_DATA_DIRECTORY ExportAddressTableJumps; 04188 IMAGE_DATA_DIRECTORY ManagedNativeHeader; 04189 } IMAGE_COR20_HEADER, *PIMAGE_COR20_HEADER; 04190 04191 #endif /* __IMAGE_COR20_HEADER_DEFINED__ */ 04192 04193 typedef struct _IMAGE_COFF_SYMBOLS_HEADER { 04194 DWORD NumberOfSymbols; 04195 DWORD LvaToFirstSymbol; 04196 DWORD NumberOfLinenumbers; 04197 DWORD LvaToFirstLinenumber; 04198 DWORD RvaToFirstByteOfCode; 04199 DWORD RvaToLastByteOfCode; 04200 DWORD RvaToFirstByteOfData; 04201 DWORD RvaToLastByteOfData; 04202 } IMAGE_COFF_SYMBOLS_HEADER, *PIMAGE_COFF_SYMBOLS_HEADER; 04203 04204 typedef struct _IMAGE_BASE_RELOCATION { 04205 DWORD VirtualAddress; 04206 DWORD SizeOfBlock; 04207 } IMAGE_BASE_RELOCATION, UNALIGNED *PIMAGE_BASE_RELOCATION; 04208 04209 typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER { 04210 BYTE Name[16]; 04211 BYTE Date[12]; 04212 BYTE UserID[6]; 04213 BYTE GroupID[6]; 04214 BYTE Mode[8]; 04215 BYTE Size[10]; 04216 BYTE EndHeader[2]; 04217 } IMAGE_ARCHIVE_MEMBER_HEADER, *PIMAGE_ARCHIVE_MEMBER_HEADER; 04218 04219 typedef struct _IMAGE_EXPORT_DIRECTORY { 04220 DWORD Characteristics; 04221 DWORD TimeDateStamp; 04222 WORD MajorVersion; 04223 WORD MinorVersion; 04224 DWORD Name; 04225 DWORD Base; 04226 DWORD NumberOfFunctions; 04227 DWORD NumberOfNames; 04228 DWORD AddressOfFunctions; 04229 DWORD AddressOfNames; 04230 DWORD AddressOfNameOrdinals; 04231 } IMAGE_EXPORT_DIRECTORY, *PIMAGE_EXPORT_DIRECTORY; 04232 04233 typedef struct _IMAGE_IMPORT_BY_NAME { 04234 WORD Hint; 04235 BYTE Name[1]; 04236 } IMAGE_IMPORT_BY_NAME, *PIMAGE_IMPORT_BY_NAME; 04237 04238 #include <pshpack8.h> 04239 typedef struct _IMAGE_THUNK_DATA64 { 04240 union { 04241 ULONGLONG ForwarderString; 04242 ULONGLONG Function; 04243 ULONGLONG Ordinal; 04244 ULONGLONG AddressOfData; 04245 } u1; 04246 } IMAGE_THUNK_DATA64, *PIMAGE_THUNK_DATA64; 04247 #include <poppack.h> 04248 04249 typedef struct _IMAGE_THUNK_DATA32 { 04250 union { 04251 DWORD ForwarderString; 04252 DWORD Function; 04253 DWORD Ordinal; 04254 DWORD AddressOfData; 04255 } u1; 04256 } IMAGE_THUNK_DATA32, *PIMAGE_THUNK_DATA32; 04257 04258 #define IMAGE_ORDINAL_FLAG64 0x8000000000000000ULL 04259 #define IMAGE_ORDINAL_FLAG32 0x80000000 04260 #define IMAGE_ORDINAL64(Ordinal) (Ordinal & 0xffff) 04261 #define IMAGE_ORDINAL32(Ordinal) (Ordinal & 0xffff) 04262 #define IMAGE_SNAP_BY_ORDINAL64(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG64)!=0) 04263 #define IMAGE_SNAP_BY_ORDINAL32(Ordinal) ((Ordinal & IMAGE_ORDINAL_FLAG32)!=0) 04264 04265 typedef VOID 04266 (NTAPI *PIMAGE_TLS_CALLBACK)(PVOID DllHandle,DWORD Reason,PVOID Reserved); 04267 04268 typedef struct _IMAGE_TLS_DIRECTORY64 { 04269 ULONGLONG StartAddressOfRawData; 04270 ULONGLONG EndAddressOfRawData; 04271 ULONGLONG AddressOfIndex; 04272 ULONGLONG AddressOfCallBacks; 04273 DWORD SizeOfZeroFill; 04274 DWORD Characteristics; 04275 } IMAGE_TLS_DIRECTORY64, *PIMAGE_TLS_DIRECTORY64; 04276 04277 typedef struct _IMAGE_TLS_DIRECTORY32 { 04278 DWORD StartAddressOfRawData; 04279 DWORD EndAddressOfRawData; 04280 DWORD AddressOfIndex; 04281 DWORD AddressOfCallBacks; 04282 DWORD SizeOfZeroFill; 04283 DWORD Characteristics; 04284 } IMAGE_TLS_DIRECTORY32, *PIMAGE_TLS_DIRECTORY32; 04285 04286 #ifdef _WIN64 04287 #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG64 04288 #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL64(Ordinal) 04289 typedef IMAGE_THUNK_DATA64 IMAGE_THUNK_DATA; 04290 typedef PIMAGE_THUNK_DATA64 PIMAGE_THUNK_DATA; 04291 #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL64(Ordinal) 04292 typedef IMAGE_TLS_DIRECTORY64 IMAGE_TLS_DIRECTORY; 04293 typedef PIMAGE_TLS_DIRECTORY64 PIMAGE_TLS_DIRECTORY; 04294 #else 04295 #define IMAGE_ORDINAL_FLAG IMAGE_ORDINAL_FLAG32 04296 #define IMAGE_ORDINAL(Ordinal) IMAGE_ORDINAL32(Ordinal) 04297 typedef IMAGE_THUNK_DATA32 IMAGE_THUNK_DATA; 04298 typedef PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA; 04299 #define IMAGE_SNAP_BY_ORDINAL(Ordinal) IMAGE_SNAP_BY_ORDINAL32(Ordinal) 04300 typedef IMAGE_TLS_DIRECTORY32 IMAGE_TLS_DIRECTORY; 04301 typedef PIMAGE_TLS_DIRECTORY32 PIMAGE_TLS_DIRECTORY; 04302 #endif 04303 04304 typedef struct _IMAGE_IMPORT_DESCRIPTOR { 04305 _ANONYMOUS_UNION union { 04306 DWORD Characteristics; 04307 DWORD OriginalFirstThunk; 04308 } DUMMYUNIONNAME; 04309 DWORD TimeDateStamp; 04310 DWORD ForwarderChain; 04311 DWORD Name; 04312 DWORD FirstThunk; 04313 } IMAGE_IMPORT_DESCRIPTOR, UNALIGNED *PIMAGE_IMPORT_DESCRIPTOR; 04314 04315 typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR { 04316 DWORD TimeDateStamp; 04317 WORD OffsetModuleName; 04318 WORD NumberOfModuleForwarderRefs; 04319 } IMAGE_BOUND_IMPORT_DESCRIPTOR, *PIMAGE_BOUND_IMPORT_DESCRIPTOR; 04320 04321 typedef struct _IMAGE_BOUND_FORWARDER_REF { 04322 DWORD TimeDateStamp; 04323 WORD OffsetModuleName; 04324 WORD Reserved; 04325 } IMAGE_BOUND_FORWARDER_REF, *PIMAGE_BOUND_FORWARDER_REF; 04326 04327 typedef struct _IMAGE_RESOURCE_DIRECTORY { 04328 DWORD Characteristics; 04329 DWORD TimeDateStamp; 04330 WORD MajorVersion; 04331 WORD MinorVersion; 04332 WORD NumberOfNamedEntries; 04333 WORD NumberOfIdEntries; 04334 } IMAGE_RESOURCE_DIRECTORY, *PIMAGE_RESOURCE_DIRECTORY; 04335 04336 typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY { 04337 _ANONYMOUS_UNION union { 04338 _ANONYMOUS_STRUCT struct { 04339 DWORD NameOffset:31; 04340 DWORD NameIsString:1; 04341 } DUMMYSTRUCTNAME1; 04342 DWORD Name; 04343 WORD Id; 04344 } DUMMYUNIONNAME1; 04345 _ANONYMOUS_UNION union { 04346 DWORD OffsetToData; 04347 _ANONYMOUS_STRUCT struct { 04348 DWORD OffsetToDirectory:31; 04349 DWORD DataIsDirectory:1; 04350 } DUMMYSTRUCTNAME3; 04351 } DUMMYUNIONNAME2; 04352 } IMAGE_RESOURCE_DIRECTORY_ENTRY, *PIMAGE_RESOURCE_DIRECTORY_ENTRY; 04353 04354 typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING { 04355 WORD Length; 04356 CHAR NameString[1]; 04357 } IMAGE_RESOURCE_DIRECTORY_STRING, *PIMAGE_RESOURCE_DIRECTORY_STRING; 04358 04359 typedef struct _IMAGE_RESOURCE_DIR_STRING_U { 04360 WORD Length; 04361 WCHAR NameString[1]; 04362 } IMAGE_RESOURCE_DIR_STRING_U, *PIMAGE_RESOURCE_DIR_STRING_U; 04363 04364 typedef struct _IMAGE_RESOURCE_DATA_ENTRY { 04365 DWORD OffsetToData; 04366 DWORD Size; 04367 DWORD CodePage; 04368 DWORD Reserved; 04369 } IMAGE_RESOURCE_DATA_ENTRY, *PIMAGE_RESOURCE_DATA_ENTRY; 04370 04371 typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY32 { 04372 DWORD Size; 04373 DWORD TimeDateStamp; 04374 WORD MajorVersion; 04375 WORD MinorVersion; 04376 DWORD GlobalFlagsClear; 04377 DWORD GlobalFlagsSet; 04378 DWORD CriticalSectionDefaultTimeout; 04379 DWORD DeCommitFreeBlockThreshold; 04380 DWORD DeCommitTotalFreeThreshold; 04381 DWORD LockPrefixTable; 04382 DWORD MaximumAllocationSize; 04383 DWORD VirtualMemoryThreshold; 04384 DWORD ProcessHeapFlags; 04385 DWORD ProcessAffinityMask; 04386 WORD CSDVersion; 04387 WORD Reserved1; 04388 DWORD EditList; 04389 DWORD SecurityCookie; 04390 DWORD SEHandlerTable; 04391 DWORD SEHandlerCount; 04392 } IMAGE_LOAD_CONFIG_DIRECTORY32, *PIMAGE_LOAD_CONFIG_DIRECTORY32; 04393 04394 typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY64 { 04395 DWORD Size; 04396 DWORD TimeDateStamp; 04397 WORD MajorVersion; 04398 WORD MinorVersion; 04399 DWORD GlobalFlagsClear; 04400 DWORD GlobalFlagsSet; 04401 DWORD CriticalSectionDefaultTimeout; 04402 ULONGLONG DeCommitFreeBlockThreshold; 04403 ULONGLONG DeCommitTotalFreeThreshold; 04404 ULONGLONG LockPrefixTable; 04405 ULONGLONG MaximumAllocationSize; 04406 ULONGLONG VirtualMemoryThreshold; 04407 ULONGLONG ProcessAffinityMask; 04408 DWORD ProcessHeapFlags; 04409 WORD CSDVersion; 04410 WORD Reserved1; 04411 ULONGLONG EditList; 04412 ULONGLONG SecurityCookie; 04413 ULONGLONG SEHandlerTable; 04414 ULONGLONG SEHandlerCount; 04415 } IMAGE_LOAD_CONFIG_DIRECTORY64, *PIMAGE_LOAD_CONFIG_DIRECTORY64; 04416 04417 #ifdef _WIN64 04418 typedef IMAGE_LOAD_CONFIG_DIRECTORY64 IMAGE_LOAD_CONFIG_DIRECTORY; 04419 typedef PIMAGE_LOAD_CONFIG_DIRECTORY64 PIMAGE_LOAD_CONFIG_DIRECTORY; 04420 #else 04421 typedef IMAGE_LOAD_CONFIG_DIRECTORY32 IMAGE_LOAD_CONFIG_DIRECTORY; 04422 typedef PIMAGE_LOAD_CONFIG_DIRECTORY32 PIMAGE_LOAD_CONFIG_DIRECTORY; 04423 #endif 04424 04425 typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY { 04426 DWORD BeginAddress; 04427 DWORD EndAddress; 04428 DWORD UnwindInfoAddress; 04429 } IMAGE_RUNTIME_FUNCTION_ENTRY, *PIMAGE_RUNTIME_FUNCTION_ENTRY; 04430 04431 typedef struct _IMAGE_DEBUG_DIRECTORY { 04432 DWORD Characteristics; 04433 DWORD TimeDateStamp; 04434 WORD MajorVersion; 04435 WORD MinorVersion; 04436 DWORD Type; 04437 DWORD SizeOfData; 04438 DWORD AddressOfRawData; 04439 DWORD PointerToRawData; 04440 } IMAGE_DEBUG_DIRECTORY, *PIMAGE_DEBUG_DIRECTORY; 04441 04442 typedef struct _FPO_DATA { 04443 DWORD ulOffStart; 04444 DWORD cbProcSize; 04445 DWORD cdwLocals; 04446 WORD cdwParams; 04447 WORD cbProlog:8; 04448 WORD cbRegs:3; 04449 WORD fHasSEH:1; 04450 WORD fUseBP:1; 04451 WORD reserved:1; 04452 WORD cbFrame:2; 04453 } FPO_DATA, *PFPO_DATA; 04454 04455 typedef struct _IMAGE_DEBUG_MISC { 04456 DWORD DataType; 04457 DWORD Length; 04458 BOOLEAN Unicode; 04459 BYTE Reserved[3]; 04460 BYTE Data[1]; 04461 } IMAGE_DEBUG_MISC, *PIMAGE_DEBUG_MISC; 04462 04463 typedef struct _IMAGE_FUNCTION_ENTRY { 04464 DWORD StartingAddress; 04465 DWORD EndingAddress; 04466 DWORD EndOfPrologue; 04467 } IMAGE_FUNCTION_ENTRY, *PIMAGE_FUNCTION_ENTRY; 04468 04469 typedef struct _IMAGE_SEPARATE_DEBUG_HEADER { 04470 WORD Signature; 04471 WORD Flags; 04472 WORD Machine; 04473 WORD Characteristics; 04474 DWORD TimeDateStamp; 04475 DWORD CheckSum; 04476 DWORD ImageBase; 04477 DWORD SizeOfImage; 04478 DWORD NumberOfSections; 04479 DWORD ExportedNamesSize; 04480 DWORD DebugDirectorySize; 04481 DWORD SectionAlignment; 04482 DWORD Reserved[2]; 04483 } IMAGE_SEPARATE_DEBUG_HEADER, *PIMAGE_SEPARATE_DEBUG_HEADER; 04484 04485 typedef enum _CM_SERVICE_NODE_TYPE { 04486 DriverType = SERVICE_KERNEL_DRIVER, 04487 FileSystemType = SERVICE_FILE_SYSTEM_DRIVER, 04488 Win32ServiceOwnProcess = SERVICE_WIN32_OWN_PROCESS, 04489 Win32ServiceShareProcess = SERVICE_WIN32_SHARE_PROCESS, 04490 AdapterType = SERVICE_ADAPTER, 04491 RecognizerType = SERVICE_RECOGNIZER_DRIVER 04492 } SERVICE_NODE_TYPE; 04493 04494 typedef enum _CM_SERVICE_LOAD_TYPE { 04495 BootLoad = SERVICE_BOOT_START, 04496 SystemLoad = SERVICE_SYSTEM_START, 04497 AutoLoad = SERVICE_AUTO_START, 04498 DemandLoad = SERVICE_DEMAND_START, 04499 DisableLoad = SERVICE_DISABLED 04500 } SERVICE_LOAD_TYPE; 04501 04502 typedef enum _CM_ERROR_CONTROL_TYPE { 04503 IgnoreError = SERVICE_ERROR_IGNORE, 04504 NormalError = SERVICE_ERROR_NORMAL, 04505 SevereError = SERVICE_ERROR_SEVERE, 04506 CriticalError = SERVICE_ERROR_CRITICAL 04507 } SERVICE_ERROR_TYPE; 04508 04509 typedef struct _NT_TIB { 04510 struct _EXCEPTION_REGISTRATION_RECORD *ExceptionList; 04511 PVOID StackBase; 04512 PVOID StackLimit; 04513 PVOID SubSystemTib; 04514 _ANONYMOUS_UNION union { 04515 PVOID FiberData; 04516 DWORD Version; 04517 } DUMMYUNIONNAME; 04518 PVOID ArbitraryUserPointer; 04519 struct _NT_TIB *Self; 04520 } NT_TIB,*PNT_TIB; 04521 04522 typedef struct _NT_TIB32 { 04523 DWORD ExceptionList; 04524 DWORD StackBase; 04525 DWORD StackLimit; 04526 DWORD SubSystemTib; 04527 _ANONYMOUS_UNION union { 04528 DWORD FiberData; 04529 DWORD Version; 04530 } DUMMYUNIONNAME; 04531 DWORD ArbitraryUserPointer; 04532 DWORD Self; 04533 } NT_TIB32,*PNT_TIB32; 04534 04535 typedef struct _NT_TIB64 { 04536 DWORD64 ExceptionList; 04537 DWORD64 StackBase; 04538 DWORD64 StackLimit; 04539 DWORD64 SubSystemTib; 04540 _ANONYMOUS_UNION union { 04541 DWORD64 FiberData; 04542 DWORD Version; 04543 } DUMMYUNIONNAME; 04544 DWORD64 ArbitraryUserPointer; 04545 DWORD64 Self; 04546 } NT_TIB64,*PNT_TIB64; 04547 04548 typedef struct _REPARSE_GUID_DATA_BUFFER { 04549 DWORD ReparseTag; 04550 WORD ReparseDataLength; 04551 WORD Reserved; 04552 GUID ReparseGuid; 04553 struct { 04554 BYTE DataBuffer[1]; 04555 } GenericReparseBuffer; 04556 } REPARSE_GUID_DATA_BUFFER, *PREPARSE_GUID_DATA_BUFFER; 04557 04558 typedef struct _REPARSE_POINT_INFORMATION { 04559 WORD ReparseDataLength; 04560 WORD UnparsedNameLength; 04561 } REPARSE_POINT_INFORMATION, *PREPARSE_POINT_INFORMATION; 04562 04563 typedef union _FILE_SEGMENT_ELEMENT { 04564 PVOID64 Buffer; 04565 ULONGLONG Alignment; 04566 } FILE_SEGMENT_ELEMENT, *PFILE_SEGMENT_ELEMENT; 04567 04568 /* JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags constants */ 04569 #define JOB_OBJECT_LIMIT_WORKINGSET 0x0001 04570 #define JOB_OBJECT_LIMIT_PROCESS_TIME 0x0002 04571 #define JOB_OBJECT_LIMIT_JOB_TIME 0x0004 04572 #define JOB_OBJECT_LIMIT_ACTIVE_PROCESS 0x0008 04573 #define JOB_OBJECT_LIMIT_AFFINITY 0x0010 04574 #define JOB_OBJECT_LIMIT_PRIORITY_CLASS 0x0020 04575 #define JOB_OBJECT_LIMIT_PRESERVE_JOB_TIME 0x0040 04576 #define JOB_OBJECT_LIMIT_SCHEDULING_CLASS 0x0080 04577 #define JOB_OBJECT_LIMIT_PROCESS_MEMORY 0x0100 04578 #define JOB_OBJECT_LIMIT_JOB_MEMORY 0x0200 04579 #define JOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION 0x0400 04580 #define JOB_OBJECT_BREAKAWAY_OK 0x0800 04581 #define JOB_OBJECT_SILENT_BREAKAWAY 0x1000 04582 04583 /* JOBOBJECT_BASIC_UI_RESTRICTIONS.UIRestrictionsClass constants */ 04584 #define JOB_OBJECT_UILIMIT_HANDLES 0x0001 04585 #define JOB_OBJECT_UILIMIT_READCLIPBOARD 0x0002 04586 #define JOB_OBJECT_UILIMIT_WRITECLIPBOARD 0x0004 04587 #define JOB_OBJECT_UILIMIT_SYSTEMPARAMETERS 0x0008 04588 #define JOB_OBJECT_UILIMIT_DISPLAYSETTINGS 0x0010 04589 #define JOB_OBJECT_UILIMIT_GLOBALATOMS 0x0020 04590 #define JOB_OBJECT_UILIMIT_DESKTOP 0x0040 04591 #define JOB_OBJECT_UILIMIT_EXITWINDOWS 0x0080 04592 04593 /* JOBOBJECT_SECURITY_LIMIT_INFORMATION.SecurityLimitFlags constants */ 04594 #define JOB_OBJECT_SECURITY_NO_ADMIN 0x0001 04595 #define JOB_OBJECT_SECURITY_RESTRICTED_TOKEN 0x0002 04596 #define JOB_OBJECT_SECURITY_ONLY_TOKEN 0x0004 04597 #define JOB_OBJECT_SECURITY_FILTER_TOKENS 0x0008 04598 04599 /* JOBOBJECT_END_OF_JOB_TIME_INFORMATION.EndOfJobTimeAction constants */ 04600 #define JOB_OBJECT_TERMINATE_AT_END_OF_JOB 0 04601 #define JOB_OBJECT_POST_AT_END_OF_JOB 1 04602 04603 #define JOB_OBJECT_MSG_END_OF_JOB_TIME 1 04604 #define JOB_OBJECT_MSG_END_OF_PROCESS_TIME 2 04605 #define JOB_OBJECT_MSG_ACTIVE_PROCESS_LIMIT 3 04606 #define JOB_OBJECT_MSG_ACTIVE_PROCESS_ZERO 4 04607 #define JOB_OBJECT_MSG_NEW_PROCESS 6 04608 #define JOB_OBJECT_MSG_EXIT_PROCESS 7 04609 #define JOB_OBJECT_MSG_ABNORMAL_EXIT_PROCESS 8 04610 #define JOB_OBJECT_MSG_PROCESS_MEMORY_LIMIT 9 04611 #define JOB_OBJECT_MSG_JOB_MEMORY_LIMIT 10 04612 04613 #define JOB_OBJECT_ASSIGN_PROCESS 1 04614 #define JOB_OBJECT_SET_ATTRIBUTES 2 04615 #define JOB_OBJECT_QUERY 4 04616 #define JOB_OBJECT_TERMINATE 8 04617 #define JOB_OBJECT_SET_SECURITY_ATTRIBUTES 16 04618 #define JOB_OBJECT_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|31) 04619 04620 typedef enum _JOBOBJECTINFOCLASS { 04621 JobObjectBasicAccountingInformation = 1, 04622 JobObjectBasicLimitInformation, 04623 JobObjectBasicProcessIdList, 04624 JobObjectBasicUIRestrictions, 04625 JobObjectSecurityLimitInformation, 04626 JobObjectEndOfJobTimeInformation, 04627 JobObjectAssociateCompletionPortInformation, 04628 JobObjectBasicAndIoAccountingInformation, 04629 JobObjectExtendedLimitInformation, 04630 JobObjectJobSetInformation, 04631 JobObjectGroupInformation, 04632 MaxJobObjectInfoClass 04633 } JOBOBJECTINFOCLASS; 04634 04635 typedef struct _JOB_SET_ARRAY { 04636 HANDLE JobHandle; 04637 DWORD MemberLevel; 04638 DWORD Flags; 04639 } JOB_SET_ARRAY, *PJOB_SET_ARRAY; 04640 04641 typedef struct _JOBOBJECT_BASIC_ACCOUNTING_INFORMATION { 04642 LARGE_INTEGER TotalUserTime; 04643 LARGE_INTEGER TotalKernelTime; 04644 LARGE_INTEGER ThisPeriodTotalUserTime; 04645 LARGE_INTEGER ThisPeriodTotalKernelTime; 04646 DWORD TotalPageFaultCount; 04647 DWORD TotalProcesses; 04648 DWORD ActiveProcesses; 04649 DWORD TotalTerminatedProcesses; 04650 } JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION; 04651 04652 typedef struct _JOBOBJECT_BASIC_LIMIT_INFORMATION { 04653 LARGE_INTEGER PerProcessUserTimeLimit; 04654 LARGE_INTEGER PerJobUserTimeLimit; 04655 DWORD LimitFlags; 04656 SIZE_T MinimumWorkingSetSize; 04657 SIZE_T MaximumWorkingSetSize; 04658 DWORD ActiveProcessLimit; 04659 ULONG_PTR Affinity; 04660 DWORD PriorityClass; 04661 DWORD SchedulingClass; 04662 } JOBOBJECT_BASIC_LIMIT_INFORMATION,*PJOBOBJECT_BASIC_LIMIT_INFORMATION; 04663 04664 typedef struct _JOBOBJECT_BASIC_PROCESS_ID_LIST { 04665 DWORD NumberOfAssignedProcesses; 04666 DWORD NumberOfProcessIdsInList; 04667 ULONG_PTR ProcessIdList[1]; 04668 } JOBOBJECT_BASIC_PROCESS_ID_LIST, *PJOBOBJECT_BASIC_PROCESS_ID_LIST; 04669 04670 typedef struct _JOBOBJECT_BASIC_UI_RESTRICTIONS { 04671 DWORD UIRestrictionsClass; 04672 } JOBOBJECT_BASIC_UI_RESTRICTIONS,*PJOBOBJECT_BASIC_UI_RESTRICTIONS; 04673 04674 typedef struct _JOBOBJECT_SECURITY_LIMIT_INFORMATION { 04675 DWORD SecurityLimitFlags; 04676 HANDLE JobToken; 04677 PTOKEN_GROUPS SidsToDisable; 04678 PTOKEN_PRIVILEGES PrivilegesToDelete; 04679 PTOKEN_GROUPS RestrictedSids; 04680 } JOBOBJECT_SECURITY_LIMIT_INFORMATION,*PJOBOBJECT_SECURITY_LIMIT_INFORMATION; 04681 04682 typedef struct _JOBOBJECT_END_OF_JOB_TIME_INFORMATION { 04683 DWORD EndOfJobTimeAction; 04684 } JOBOBJECT_END_OF_JOB_TIME_INFORMATION,*PJOBOBJECT_END_OF_JOB_TIME_INFORMATION; 04685 04686 typedef struct _JOBOBJECT_ASSOCIATE_COMPLETION_PORT { 04687 PVOID CompletionKey; 04688 HANDLE CompletionPort; 04689 } JOBOBJECT_ASSOCIATE_COMPLETION_PORT,*PJOBOBJECT_ASSOCIATE_COMPLETION_PORT; 04690 04691 typedef struct _JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION { 04692 JOBOBJECT_BASIC_ACCOUNTING_INFORMATION BasicInfo; 04693 IO_COUNTERS IoInfo; 04694 } JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION,*PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION; 04695 04696 typedef struct _JOBOBJECT_EXTENDED_LIMIT_INFORMATION { 04697 JOBOBJECT_BASIC_LIMIT_INFORMATION BasicLimitInformation; 04698 IO_COUNTERS IoInfo; 04699 SIZE_T ProcessMemoryLimit; 04700 SIZE_T JobMemoryLimit; 04701 SIZE_T PeakProcessMemoryUsed; 04702 SIZE_T PeakJobMemoryUsed; 04703 } JOBOBJECT_EXTENDED_LIMIT_INFORMATION,*PJOBOBJECT_EXTENDED_LIMIT_INFORMATION; 04704 04705 typedef struct _JOBOBJECT_JOBSET_INFORMATION { 04706 DWORD MemberLevel; 04707 } JOBOBJECT_JOBSET_INFORMATION,*PJOBOBJECT_JOBSET_INFORMATION; 04708 04709 /* Fixme: Making these defines conditional on WINVER will break ddk includes */ 04710 #if 1 /* (WINVER >= 0x0500) */ 04711 04712 #define ES_SYSTEM_REQUIRED 0x00000001 04713 #define ES_DISPLAY_REQUIRED 0x00000002 04714 #define ES_USER_PRESENT 0x00000004 04715 #define ES_CONTINUOUS 0x80000000 04716 04717 typedef enum _LATENCY_TIME { 04718 LT_DONT_CARE, 04719 LT_LOWEST_LATENCY 04720 } LATENCY_TIME, *PLATENCY_TIME; 04721 04722 typedef enum _SYSTEM_POWER_STATE { 04723 PowerSystemUnspecified = 0, 04724 PowerSystemWorking, 04725 PowerSystemSleeping1, 04726 PowerSystemSleeping2, 04727 PowerSystemSleeping3, 04728 PowerSystemHibernate, 04729 PowerSystemShutdown, 04730 PowerSystemMaximum 04731 } SYSTEM_POWER_STATE, *PSYSTEM_POWER_STATE; 04732 04733 #define POWER_SYSTEM_MAXIMUM PowerSystemMaximum 04734 04735 typedef enum { 04736 PowerActionNone = 0, 04737 PowerActionReserved, 04738 PowerActionSleep, 04739 PowerActionHibernate, 04740 PowerActionShutdown, 04741 PowerActionShutdownReset, 04742 PowerActionShutdownOff, 04743 PowerActionWarmEject 04744 } POWER_ACTION, *PPOWER_ACTION; 04745 04746 typedef enum _DEVICE_POWER_STATE { 04747 PowerDeviceUnspecified = 0, 04748 PowerDeviceD0, 04749 PowerDeviceD1, 04750 PowerDeviceD2, 04751 PowerDeviceD3, 04752 PowerDeviceMaximum 04753 } DEVICE_POWER_STATE, *PDEVICE_POWER_STATE; 04754 04755 #if (NTDDI_VERSION >= NTDDI_WINXP) || !defined(_BATCLASS_) 04756 typedef struct { 04757 DWORD Granularity; 04758 DWORD Capacity; 04759 } BATTERY_REPORTING_SCALE, *PBATTERY_REPORTING_SCALE; 04760 #endif 04761 04762 typedef struct _POWER_ACTION_POLICY { 04763 POWER_ACTION Action; 04764 DWORD Flags; 04765 DWORD EventCode; 04766 } POWER_ACTION_POLICY, *PPOWER_ACTION_POLICY; 04767 04768 /* POWER_ACTION_POLICY.Flags constants */ 04769 #define POWER_ACTION_QUERY_ALLOWED 0x00000001 04770 #define POWER_ACTION_UI_ALLOWED 0x00000002 04771 #define POWER_ACTION_OVERRIDE_APPS 0x00000004 04772 #define POWER_ACTION_LIGHTEST_FIRST 0x10000000 04773 #define POWER_ACTION_LOCK_CONSOLE 0x20000000 04774 #define POWER_ACTION_DISABLE_WAKES 0x40000000 04775 #define POWER_ACTION_CRITICAL 0x80000000 04776 04777 /* POWER_ACTION_POLICY.EventCode constants */ 04778 #define POWER_LEVEL_USER_NOTIFY_TEXT 0x00000001 04779 #define POWER_LEVEL_USER_NOTIFY_SOUND 0x00000002 04780 #define POWER_LEVEL_USER_NOTIFY_EXEC 0x00000004 04781 #define POWER_USER_NOTIFY_BUTTON 0x00000008 04782 #define POWER_USER_NOTIFY_SHUTDOWN 0x00000010 04783 #define POWER_FORCE_TRIGGER_RESET 0x80000000 04784 04785 #define DISCHARGE_POLICY_CRITICAL 0 04786 #define DISCHARGE_POLICY_LOW 1 04787 #define NUM_DISCHARGE_POLICIES 4 04788 04789 #define PO_THROTTLE_NONE 0 04790 #define PO_THROTTLE_CONSTANT 1 04791 #define PO_THROTTLE_DEGRADE 2 04792 #define PO_THROTTLE_ADAPTIVE 3 04793 #define PO_THROTTLE_MAXIMUM 4 04794 04795 typedef struct _SYSTEM_POWER_LEVEL { 04796 BOOLEAN Enable; 04797 BYTE Spare[3]; 04798 DWORD BatteryLevel; 04799 POWER_ACTION_POLICY PowerPolicy; 04800 SYSTEM_POWER_STATE MinSystemState; 04801 } SYSTEM_POWER_LEVEL, *PSYSTEM_POWER_LEVEL; 04802 04803 typedef struct _SYSTEM_POWER_POLICY { 04804 DWORD Revision; 04805 POWER_ACTION_POLICY PowerButton; 04806 POWER_ACTION_POLICY SleepButton; 04807 POWER_ACTION_POLICY LidClose; 04808 SYSTEM_POWER_STATE LidOpenWake; 04809 DWORD Reserved; 04810 POWER_ACTION_POLICY Idle; 04811 DWORD IdleTimeout; 04812 BYTE IdleSensitivity; 04813 BYTE DynamicThrottle; 04814 BYTE Spare2[2]; 04815 SYSTEM_POWER_STATE MinSleep; 04816 SYSTEM_POWER_STATE MaxSleep; 04817 SYSTEM_POWER_STATE ReducedLatencySleep; 04818 DWORD WinLogonFlags; 04819 DWORD Spare3; 04820 DWORD DozeS4Timeout; 04821 DWORD BroadcastCapacityResolution; 04822 SYSTEM_POWER_LEVEL DischargePolicy[NUM_DISCHARGE_POLICIES]; 04823 DWORD VideoTimeout; 04824 BOOLEAN VideoDimDisplay; 04825 DWORD VideoReserved[3]; 04826 DWORD SpindownTimeout; 04827 BOOLEAN OptimizeForPower; 04828 BYTE FanThrottleTolerance; 04829 BYTE ForcedThrottle; 04830 BYTE MinThrottle; 04831 POWER_ACTION_POLICY OverThrottled; 04832 } SYSTEM_POWER_POLICY, *PSYSTEM_POWER_POLICY; 04833 04834 typedef struct _SYSTEM_POWER_CAPABILITIES { 04835 BOOLEAN PowerButtonPresent; 04836 BOOLEAN SleepButtonPresent; 04837 BOOLEAN LidPresent; 04838 BOOLEAN SystemS1; 04839 BOOLEAN SystemS2; 04840 BOOLEAN SystemS3; 04841 BOOLEAN SystemS4; 04842 BOOLEAN SystemS5; 04843 BOOLEAN HiberFilePresent; 04844 BOOLEAN FullWake; 04845 BOOLEAN VideoDimPresent; 04846 BOOLEAN ApmPresent; 04847 BOOLEAN UpsPresent; 04848 BOOLEAN ThermalControl; 04849 BOOLEAN ProcessorThrottle; 04850 BYTE ProcessorMinThrottle; 04851 #if (NTDDI_VERSION < NTDDI_WINXP) 04852 BYTE ProcessorThrottleScale; 04853 BYTE spare2[4]; 04854 #else 04855 BYTE ProcessorMaxThrottle; 04856 BOOLEAN FastSystemS4; 04857 BYTE spare2[3]; 04858 #endif /* (NTDDI_VERSION < NTDDI_WINXP) */ 04859 BOOLEAN DiskSpinDown; 04860 BYTE spare3[8]; 04861 BOOLEAN SystemBatteriesPresent; 04862 BOOLEAN BatteriesAreShortTerm; 04863 BATTERY_REPORTING_SCALE BatteryScale[3]; 04864 SYSTEM_POWER_STATE AcOnLineWake; 04865 SYSTEM_POWER_STATE SoftLidWake; 04866 SYSTEM_POWER_STATE RtcWake; 04867 SYSTEM_POWER_STATE MinDeviceWakeState; 04868 SYSTEM_POWER_STATE DefaultLowLatencyWake; 04869 } SYSTEM_POWER_CAPABILITIES, *PSYSTEM_POWER_CAPABILITIES; 04870 04871 typedef struct _SYSTEM_BATTERY_STATE { 04872 BOOLEAN AcOnLine; 04873 BOOLEAN BatteryPresent; 04874 BOOLEAN Charging; 04875 BOOLEAN Discharging; 04876 BOOLEAN Spare1[4]; 04877 DWORD MaxCapacity; 04878 DWORD RemainingCapacity; 04879 DWORD Rate; 04880 DWORD EstimatedTime; 04881 DWORD DefaultAlert1; 04882 DWORD DefaultAlert2; 04883 } SYSTEM_BATTERY_STATE, *PSYSTEM_BATTERY_STATE; 04884 04885 typedef struct _PROCESSOR_POWER_INFORMATION { 04886 ULONG Number; 04887 ULONG MaxMhz; 04888 ULONG CurrentMhz; 04889 ULONG MhzLimit; 04890 ULONG MaxIdleState; 04891 ULONG CurrentIdleState; 04892 } PROCESSOR_POWER_INFORMATION, *PPROCESSOR_POWER_INFORMATION; 04893 04894 typedef DWORD EXECUTION_STATE; 04895 04896 typedef enum _POWER_INFORMATION_LEVEL { 04897 SystemPowerPolicyAc, 04898 SystemPowerPolicyDc, 04899 VerifySystemPolicyAc, 04900 VerifySystemPolicyDc, 04901 SystemPowerCapabilities, 04902 SystemBatteryState, 04903 SystemPowerStateHandler, 04904 ProcessorStateHandler, 04905 SystemPowerPolicyCurrent, 04906 AdministratorPowerPolicy, 04907 SystemReserveHiberFile, 04908 ProcessorInformation, 04909 SystemPowerInformation, 04910 ProcessorStateHandler2, 04911 LastWakeTime, 04912 LastSleepTime, 04913 SystemExecutionState, 04914 SystemPowerStateNotifyHandler, 04915 ProcessorPowerPolicyAc, 04916 ProcessorPowerPolicyDc, 04917 VerifyProcessorPowerPolicyAc, 04918 VerifyProcessorPowerPolicyDc, 04919 ProcessorPowerPolicyCurrent, 04920 SystemPowerStateLogging, 04921 SystemPowerLoggingEntry, 04922 SetPowerSettingValue, 04923 NotifyUserPowerSetting, 04924 PowerInformationLevelUnused0, 04925 PowerInformationLevelUnused1, 04926 SystemVideoState, 04927 TraceApplicationPowerMessage, 04928 TraceApplicationPowerMessageEnd, 04929 ProcessorPerfStates, 04930 ProcessorIdleStates, 04931 ProcessorCap, 04932 SystemWakeSource, 04933 SystemHiberFileInformation, 04934 TraceServicePowerMessage, 04935 ProcessorLoad, 04936 PowerShutdownNotification, 04937 MonitorCapabilities, 04938 SessionPowerInit, 04939 SessionDisplayState, 04940 PowerRequestCreate, 04941 PowerRequestAction, 04942 GetPowerRequestList, 04943 ProcessorInformationEx, 04944 NotifyUserModeLegacyPowerEvent, 04945 GroupPark, 04946 ProcessorIdleDomains, 04947 WakeTimerList, 04948 SystemHiberFileSize, 04949 PowerInformationLevelMaximum 04950 } POWER_INFORMATION_LEVEL; 04951 04952 #if 1 /* (WIN32_WINNT >= 0x0500) */ 04953 typedef struct _SYSTEM_POWER_INFORMATION { 04954 ULONG MaxIdlenessAllowed; 04955 ULONG Idleness; 04956 ULONG TimeRemaining; 04957 UCHAR CoolingMode; 04958 } SYSTEM_POWER_INFORMATION,*PSYSTEM_POWER_INFORMATION; 04959 #endif 04960 04961 #if (_WIN32_WINNT >= 0x0500) 04962 #define _AUDIT_EVENT_TYPE_HACK 1 04963 typedef enum _AUDIT_EVENT_TYPE { 04964 AuditEventObjectAccess, 04965 AuditEventDirectoryServiceAccess 04966 } AUDIT_EVENT_TYPE, *PAUDIT_EVENT_TYPE; 04967 #endif 04968 04969 #if (_WIN32_WINNT >= 0x0501) 04970 04971 typedef enum _ACTIVATION_CONTEXT_INFO_CLASS { 04972 ActivationContextBasicInformation = 1, 04973 ActivationContextDetailedInformation = 2, 04974 AssemblyDetailedInformationInActivationContext = 3, 04975 FileInformationInAssemblyOfAssemblyInActivationContext = 4, 04976 RunlevelInformationInActivationContext = 5, 04977 CompatibilityInformationInActivationContext = 6, 04978 ActivationContextManifestResourceName = 7, 04979 MaxActivationContextInfoClass, 04980 /* For compatibility with the old names */ 04981 AssemblyDetailedInformationInActivationContxt = 3, 04982 FileInformationInAssemblyOfAssemblyInActivationContxt = 4 04983 } ACTIVATION_CONTEXT_INFO_CLASS; 04984 04985 typedef struct _ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION { 04986 DWORD ulFlags; 04987 DWORD ulEncodedAssemblyIdentityLength; 04988 DWORD ulManifestPathType; 04989 DWORD ulManifestPathLength; 04990 LARGE_INTEGER liManifestLastWriteTime; 04991 DWORD ulPolicyPathType; 04992 DWORD ulPolicyPathLength; 04993 LARGE_INTEGER liPolicyLastWriteTime; 04994 DWORD ulMetadataSatelliteRosterIndex; 04995 DWORD ulManifestVersionMajor; 04996 DWORD ulManifestVersionMinor; 04997 DWORD ulPolicyVersionMajor; 04998 DWORD ulPolicyVersionMinor; 04999 DWORD ulAssemblyDirectoryNameLength; 05000 PCWSTR lpAssemblyEncodedAssemblyIdentity; 05001 PCWSTR lpAssemblyManifestPath; 05002 PCWSTR lpAssemblyPolicyPath; 05003 PCWSTR lpAssemblyDirectoryName; 05004 } ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION, *PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; 05005 typedef const ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION; 05006 05007 typedef struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION { 05008 DWORD dwFlags; 05009 DWORD ulFormatVersion; 05010 DWORD ulAssemblyCount; 05011 DWORD ulRootManifestPathType; 05012 DWORD ulRootManifestPathChars; 05013 DWORD ulRootConfigurationPathType; 05014 DWORD ulRootConfigurationPathChars; 05015 DWORD ulAppDirPathType; 05016 DWORD ulAppDirPathChars; 05017 PCWSTR lpRootManifestPath; 05018 PCWSTR lpRootConfigurationPath; 05019 PCWSTR lpAppDirPath; 05020 } ACTIVATION_CONTEXT_DETAILED_INFORMATION, *PACTIVATION_CONTEXT_DETAILED_INFORMATION; 05021 typedef const ACTIVATION_CONTEXT_DETAILED_INFORMATION *PCACTIVATION_CONTEXT_DETAILED_INFORMATION; 05022 05023 typedef struct _ACTIVATION_CONTEXT_QUERY_INDEX { 05024 DWORD ulAssemblyIndex; 05025 DWORD ulFileIndexInAssembly; 05026 } ACTIVATION_CONTEXT_QUERY_INDEX,*PACTIVATION_CONTEXT_QUERY_INDEX; 05027 typedef const ACTIVATION_CONTEXT_QUERY_INDEX *PCACTIVATION_CONTEXT_QUERY_INDEX; 05028 05029 typedef struct _ASSEMBLY_FILE_DETAILED_INFORMATION { 05030 DWORD ulFlags; 05031 DWORD ulFilenameLength; 05032 DWORD ulPathLength; 05033 PCWSTR lpFileName; 05034 PCWSTR lpFilePath; 05035 } ASSEMBLY_FILE_DETAILED_INFORMATION,*PASSEMBLY_FILE_DETAILED_INFORMATION; 05036 typedef const ASSEMBLY_FILE_DETAILED_INFORMATION *PCASSEMBLY_FILE_DETAILED_INFORMATION; 05037 05038 #define ACTIVATION_CONTEXT_PATH_TYPE_NONE 1 05039 #define ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE 2 05040 #define ACTIVATION_CONTEXT_PATH_TYPE_URL 3 05041 #define ACTIVATION_CONTEXT_PATH_TYPE_ASSEMBLYREF 4 05042 05043 #define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION 1 05044 #define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION 2 05045 #define ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION 3 05046 #define ACTIVATION_CONTEXT_SECTION_COM_SERVER_REDIRECTION 4 05047 #define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION 5 05048 #define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION 6 05049 #define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION 7 05050 #define ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE 8 05051 #define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES 9 05052 05053 #endif /* (WIN32_WINNT >= 0x0501) */ 05054 05055 typedef struct _PROCESSOR_POWER_POLICY_INFO { 05056 DWORD TimeCheck; 05057 DWORD DemoteLimit; 05058 DWORD PromoteLimit; 05059 BYTE DemotePercent; 05060 BYTE PromotePercent; 05061 BYTE Spare[2]; 05062 DWORD AllowDemotion:1; 05063 DWORD AllowPromotion:1; 05064 DWORD Reserved:30; 05065 } PROCESSOR_POWER_POLICY_INFO, *PPROCESSOR_POWER_POLICY_INFO; 05066 05067 typedef struct _PROCESSOR_POWER_POLICY { 05068 DWORD Revision; 05069 BYTE DynamicThrottle; 05070 BYTE Spare[3]; 05071 DWORD DisableCStates:1; 05072 DWORD Reserved:31; 05073 DWORD PolicyCount; 05074 PROCESSOR_POWER_POLICY_INFO Policy[3]; 05075 } PROCESSOR_POWER_POLICY, *PPROCESSOR_POWER_POLICY; 05076 05077 typedef struct _ADMINISTRATOR_POWER_POLICY { 05078 SYSTEM_POWER_STATE MinSleep; 05079 SYSTEM_POWER_STATE MaxSleep; 05080 DWORD MinVideoTimeout; 05081 DWORD MaxVideoTimeout; 05082 DWORD MinSpindownTimeout; 05083 DWORD MaxSpindownTimeout; 05084 } ADMINISTRATOR_POWER_POLICY, *PADMINISTRATOR_POWER_POLICY; 05085 05086 #endif /* WINVER >= 0x0500 */ 05087 05088 typedef VOID (NTAPI *WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN); 05089 05090 #ifdef UNICODE 05091 typedef OSVERSIONINFOW OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO; 05092 typedef OSVERSIONINFOEXW OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX; 05093 #else 05094 typedef OSVERSIONINFOA OSVERSIONINFO,*POSVERSIONINFO,*LPOSVERSIONINFO; 05095 typedef OSVERSIONINFOEXA OSVERSIONINFOEX,*POSVERSIONINFOEX,*LPOSVERSIONINFOEX; 05096 #endif 05097 05098 #define VER_SET_CONDITION(lc,t,c) ((lc) = VerSetConditionMask((lc),(t),(c))) 05099 05100 #if (_WIN32_WINNT >= 0x0500) 05101 ULONGLONG WINAPI VerSetConditionMask(ULONGLONG,DWORD,BYTE); 05102 #endif 05103 05104 typedef enum _HEAP_INFORMATION_CLASS { 05105 HeapCompatibilityInformation, 05106 HeapEnableTerminationOnCorruption 05107 } HEAP_INFORMATION_CLASS; 05108 05109 typedef enum _PROCESSOR_CACHE_TYPE { 05110 CacheUnified, 05111 CacheInstruction, 05112 CacheData, 05113 CacheTrace 05114 } PROCESSOR_CACHE_TYPE; 05115 05116 typedef enum _LOGICAL_PROCESSOR_RELATIONSHIP { 05117 RelationProcessorCore, 05118 RelationNumaNode, 05119 RelationCache, 05120 RelationProcessorPackage, 05121 RelationGroup, 05122 RelationAll = 0xffff 05123 } LOGICAL_PROCESSOR_RELATIONSHIP; 05124 05125 #define CACHE_FULLY_ASSOCIATIVE 0xFF 05126 05127 typedef struct _CACHE_DESCRIPTOR { 05128 BYTE Level; 05129 BYTE Associativity; 05130 WORD LineSize; 05131 DWORD Size; 05132 PROCESSOR_CACHE_TYPE Type; 05133 } CACHE_DESCRIPTOR, *PCACHE_DESCRIPTOR; 05134 05135 typedef struct _SYSTEM_LOGICAL_PROCESSOR_INFORMATION { 05136 ULONG_PTR ProcessorMask; 05137 LOGICAL_PROCESSOR_RELATIONSHIP Relationship; 05138 _ANONYMOUS_UNION union { 05139 struct { 05140 BYTE Flags; 05141 } ProcessorCore; 05142 struct { 05143 DWORD NodeNumber; 05144 } NumaNode; 05145 CACHE_DESCRIPTOR Cache; 05146 ULONGLONG Reserved[2]; 05147 } DUMMYUNIONNAME; 05148 } SYSTEM_LOGICAL_PROCESSOR_INFORMATION, *PSYSTEM_LOGICAL_PROCESSOR_INFORMATION; 05149 05150 NTSYSAPI 05151 SIZE_T 05152 NTAPI 05153 RtlCompareMemory ( 05154 const VOID *Source1, 05155 const VOID *Source2, 05156 SIZE_T Length 05157 ); 05158 05159 #define RtlMoveMemory memmove 05160 #define RtlCopyMemory memcpy 05161 #define RtlFillMemory(d,l,f) memset((d), (f), (l)) 05162 #define RtlZeroMemory(d,l) RtlFillMemory((d),(l),0) 05163 05164 FORCEINLINE 05165 PVOID 05166 RtlSecureZeroMemory(IN PVOID Buffer, 05167 IN SIZE_T Length) 05168 { 05169 volatile char *VolatilePointer; 05170 05171 /* Get a volatile pointer to prevent any compiler optimizations */ 05172 VolatilePointer = (volatile char *)Buffer; 05173 05174 /* Loop the whole buffer */ 05175 while (Length) 05176 { 05177 /* Zero the current byte and move on */ 05178 *VolatilePointer++ = 0; 05179 Length--; 05180 } 05181 05182 /* Return the pointer to ensure the compiler won't optimize this away */ 05183 return Buffer; 05184 } 05185 05186 typedef struct _OBJECT_TYPE_LIST { 05187 WORD Level; 05188 WORD Sbz; 05189 GUID *ObjectType; 05190 } OBJECT_TYPE_LIST, *POBJECT_TYPE_LIST; 05191 05192 #if defined(_M_IX86) 05193 FORCEINLINE struct _TEB * NtCurrentTeb(void) 05194 { 05195 return (struct _TEB *)__readfsdword(0x18); 05196 } 05197 FORCEINLINE PVOID GetCurrentFiber(VOID) 05198 { 05199 return (PVOID)(ULONG_PTR)__readfsdword(0x10); 05200 } 05201 #elif defined (_M_AMD64) 05202 FORCEINLINE struct _TEB * NtCurrentTeb(void) 05203 { 05204 return (struct _TEB *)__readgsqword(FIELD_OFFSET(NT_TIB, Self)); 05205 } 05206 FORCEINLINE PVOID GetCurrentFiber(VOID) 05207 { 05208 #ifdef NONAMELESSUNION 05209 return (PVOID)__readgsqword(FIELD_OFFSET(NT_TIB, DUMMYUNIONNAME.FiberData)); 05210 #else 05211 return (PVOID)__readgsqword(FIELD_OFFSET(NT_TIB, FiberData)); 05212 #endif 05213 } 05214 #elif defined (_M_ARM) 05215 PVOID WINAPI GetCurrentFiber(VOID); 05216 #elif defined(_M_PPC) 05217 FORCEINLINE unsigned long _read_teb_dword(const unsigned long Offset) 05218 { 05219 unsigned long result; 05220 __asm__("\tadd 7,13,%1\n" 05221 "\tlwz %0,0(7)\n" 05222 : "=r" (result) 05223 : "r" (Offset) 05224 : "r7"); 05225 return result; 05226 } 05227 FORCEINLINE struct _TEB * NtCurrentTeb(void) 05228 { 05229 return (struct _TEB *)_read_teb_dword(0x18); 05230 } 05231 FORCEINLINE PVOID GetCurrentFiber(void) 05232 { 05233 return _read_teb_dword(0x10); 05234 } 05235 #else 05236 #error Unknown architecture 05237 #endif 05238 05239 static __inline PVOID GetFiberData(void) 05240 { 05241 return *((PVOID *)GetCurrentFiber()); 05242 } 05243 05244 #if defined(__GNUC__) 05245 05246 static __inline__ BOOLEAN 05247 InterlockedBitTestAndSet(IN LONG volatile *Base, 05248 IN LONG Bit) 05249 { 05250 #if defined(_M_IX86) 05251 LONG OldBit; 05252 __asm__ __volatile__("lock " 05253 "btsl %2,%1\n\t" 05254 "sbbl %0,%0\n\t" 05255 :"=r" (OldBit),"+m" (*Base) 05256 :"Ir" (Bit) 05257 : "memory"); 05258 return OldBit; 05259 #else 05260 return (_InterlockedOr(Base, 1 << Bit) >> Bit) & 1; 05261 #endif 05262 } 05263 05264 static __inline__ BOOLEAN 05265 InterlockedBitTestAndReset(IN LONG volatile *Base, 05266 IN LONG Bit) 05267 { 05268 #if defined(_M_IX86) 05269 LONG OldBit; 05270 __asm__ __volatile__("lock " 05271 "btrl %2,%1\n\t" 05272 "sbbl %0,%0\n\t" 05273 :"=r" (OldBit),"+m" (*Base) 05274 :"Ir" (Bit) 05275 : "memory"); 05276 return OldBit; 05277 #else 05278 return (_InterlockedAnd(Base, ~(1 << Bit)) >> Bit) & 1; 05279 #endif 05280 } 05281 05282 #endif 05283 05284 #define BitScanForward _BitScanForward 05285 #define BitScanReverse _BitScanReverse 05286 05287 /* TODO: Other architectures than X86 */ 05288 #if defined(_M_IX86) 05289 #define PF_TEMPORAL_LEVEL_1 05290 #define PF_NON_TEMPORAL_LEVEL_ALL 05291 #define PreFetchCacheLine(l, a) 05292 #elif defined (_M_AMD64) 05293 #define PreFetchCacheLine(l, a) 05294 #elif defined(_M_PPC) 05295 #define PreFetchCacheLine(l, a) 05296 #elif defined(_M_ARM) 05297 #define PreFetchCacheLine(l, a) 05298 #else 05299 #error Unknown architecture 05300 #endif 05301 05302 /* TODO: Other architectures than X86 */ 05303 #if defined(_M_IX86) 05304 #if defined(_MSC_VER) 05305 FORCEINLINE 05306 VOID 05307 MemoryBarrier (VOID) 05308 { 05309 LONG Barrier; 05310 __asm { xchg Barrier, eax } 05311 } 05312 #else 05313 FORCEINLINE 05314 VOID 05315 MemoryBarrier(VOID) 05316 { 05317 LONG Barrier, *Dummy = &Barrier; 05318 UNREFERENCED_LOCAL_VARIABLE(Dummy); 05319 __asm__ __volatile__("xchgl %%eax, %[Barrier]" : : [Barrier] "m" (Barrier) : "memory"); 05320 } 05321 #endif 05322 #elif defined (_M_AMD64) 05323 #define MemoryBarrier __faststorefence 05324 #elif defined(_M_PPC) 05325 #define MemoryBarrier() 05326 #elif defined(_M_ARM) 05327 #define MemoryBarrier() 05328 #else 05329 #error Unknown architecture 05330 #endif 05331 05332 #if defined(_M_IX86) || defined(_M_AMD64) 05333 05334 #define YieldProcessor _mm_pause 05335 05336 FORCEINLINE 05337 VOID 05338 DbgRaiseAssertionFailure(VOID) 05339 { 05340 __int2c(); 05341 } 05342 05343 #elif defined(_M_PPC) 05344 #define YieldProcessor() __asm__ __volatile__("nop"); 05345 #elif defined(_M_MIPS) 05346 #define YieldProcessor() __asm__ __volatile__("nop"); 05347 #elif defined(_M_ARM) 05348 #define YieldProcessor __yield 05349 #else 05350 #error Unknown architecture 05351 #endif 05352 05353 #if defined(_AMD64_) 05354 #if defined(_M_AMD64) 05355 05356 #define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd64((LONG64 *)a, b) 05357 05358 #define InterlockedAnd _InterlockedAnd 05359 #define InterlockedExchange _InterlockedExchange 05360 #define InterlockedOr _InterlockedOr 05361 05362 #define InterlockedAnd64 _InterlockedAnd64 05363 #define InterlockedOr64 _InterlockedOr64 05364 05365 #define InterlockedBitTestAndSet _interlockedbittestandset 05366 #define InterlockedBitTestAndSet64 _interlockedbittestandset64 05367 #define InterlockedBitTestAndReset _interlockedbittestandreset 05368 #define InterlockedBitTestAndReset64 _interlockedbittestandreset64 05369 05370 05371 #endif 05372 05373 #else 05374 05375 #define InterlockedExchangeAddSizeT(a, b) InterlockedExchangeAdd((LONG *)a, b) 05376 05377 #endif 05378 05379 #ifdef _MSC_VER 05380 #pragma warning(pop) 05381 #endif 05382 05383 #endif /* RC_INVOKED */ 05384 05385 #ifdef __cplusplus 05386 } 05387 #endif 05388 #endif Generated on Sun May 27 2012 04:32:47 for ReactOS by
1.7.6.1
|