1 /***********************************************************************\ 2 * winbase.d * 3 * * 4 * Windows API header module * 5 * * 6 * Translated from MinGW API for MS-Windows 3.10 * 7 * * 8 * Placed into public domain * 9 \***********************************************************************/ 10 module windows.winbase; 11 pragma(lib, "kernel32"); 12 nothrow: 13 /** 14 Translation Notes: 15 The following macros are obsolete, and have no effect. 16 17 LockSegment(w), MakeProcInstance(p, i), UnlockResource(h), UnlockSegment(w) 18 FreeModule(m), FreeProcInstance(p), GetFreeSpace(w), DefineHandleTable(w) 19 SetSwapAreaSize(w), LimitEmsPages(n), Yield() 20 21 // The following Win16 functions are obselete in windows. 22 23 int _hread(HFILE, LPVOID, int); 24 int _hwrite(HFILE, LPCSTR, int); 25 HFILE _lclose(HFILE); 26 HFILE _lcreat(LPCSTR, int); 27 LONG _llseek(HFILE, LONG, int); 28 HFILE _lopen(LPCSTR, int); 29 UINT _lread(HFILE, LPVOID, UINT); 30 UINT _lwrite(HFILE, LPCSTR, UINT); 31 SIZE_T GlobalCompact(DWORD); 32 VOID GlobalFix(HGLOBAL); 33 * MSDN contradicts itself on GlobalFlags: 34 * "This function is provided only for compatibility with 16-bit versions of Windows." 35 * but also requires Windows 2000 or above 36 UINT GlobalFlags(HGLOBAL); 37 VOID GlobalUnfix(HGLOBAL); 38 BOOL GlobalUnWire(HGLOBAL); 39 PVOID GlobalWire(HGLOBAL); 40 SIZE_T LocalCompact(UINT); 41 UINT LocalFlags(HLOCAL); 42 SIZE_T LocalShrink(HLOCAL, UINT); 43 44 // These are not required for DMD. 45 46 //FIXME: 47 // #ifndef UNDER_CE 48 int WinMain(HINSTANCE, HINSTANCE, LPSTR, int); 49 #else 50 int WinMain(HINSTANCE, HINSTANCE, LPWSTR, int); 51 #endif 52 int wWinMain(HINSTANCE, HINSTANCE, LPWSTR, int); 53 54 */ 55 56 import windows.windef, windows.winver; 57 private import windows.basetyps, windows.w32api, windows.winnt; 58 59 // FIXME: 60 alias void va_list; 61 62 63 /+ 64 //-------------------------------------- 65 // These functions are problematic 66 67 version(UseNtoSKernel) {}else { 68 /* CAREFUL: These are exported from ntoskrnl.exe and declared in winddk.h 69 as __fastcall functions, but are exported from kernel32.dll as __stdcall */ 70 static if (_WIN32_WINNT >= 0x501) { 71 VOID InitializeSListHead(PSLIST_HEADER); 72 } 73 LONG InterlockedCompareExchange(LPLONG, LONG, LONG); 74 // PVOID WINAPI InterlockedCompareExchangePointer(PVOID*, PVOID, PVOID); 75 (PVOID)InterlockedCompareExchange((LPLONG)(d) (PVOID)InterlockedCompareExchange((LPLONG)(d), (LONG)(e), (LONG)(c)) 76 LONG InterlockedDecrement(LPLONG); 77 LONG InterlockedExchange(LPLONG, LONG); 78 // PVOID WINAPI InterlockedExchangePointer(PVOID*, PVOID); 79 (PVOID)InterlockedExchange((LPLONG)((PVOID)InterlockedExchange((LPLONG)(t), (LONG)(v)) 80 LONG InterlockedExchangeAdd(LPLONG, LONG); 81 82 static if (_WIN32_WINNT >= 0x501) { 83 PSLIST_ENTRY InterlockedFlushSList(PSLIST_HEADER); 84 } 85 LONG InterlockedIncrement(LPLONG); 86 static if (_WIN32_WINNT >= 0x501) { 87 PSLIST_ENTRY InterlockedPopEntrySList(PSLIST_HEADER); 88 PSLIST_ENTRY InterlockedPushEntrySList(PSLIST_HEADER, PSLIST_ENTRY); 89 } 90 } // #endif // __USE_NTOSKRNL__ 91 //-------------------------------------- 92 +/ 93 94 // COMMPROP structure, used by GetCommProperties() 95 // ----------------------------------------------- 96 97 // Communications provider type 98 enum : DWORD { 99 PST_UNSPECIFIED, 100 PST_RS232, 101 PST_PARALLELPORT, 102 PST_RS422, 103 PST_RS423, 104 PST_RS449, 105 PST_MODEM, // = 6 106 PST_FAX = 0x0021, 107 PST_SCANNER = 0x0022, 108 PST_NETWORK_BRIDGE = 0x0100, 109 PST_LAT = 0x0101, 110 PST_TCPIP_TELNET = 0x0102, 111 PST_X25 = 0x0103 112 } 113 114 // Max baud rate 115 enum : DWORD { 116 BAUD_075 = 0x00000001, 117 BAUD_110 = 0x00000002, 118 BAUD_134_5 = 0x00000004, 119 BAUD_150 = 0x00000008, 120 BAUD_300 = 0x00000010, 121 BAUD_600 = 0x00000020, 122 BAUD_1200 = 0x00000040, 123 BAUD_1800 = 0x00000080, 124 BAUD_2400 = 0x00000100, 125 BAUD_4800 = 0x00000200, 126 BAUD_7200 = 0x00000400, 127 BAUD_9600 = 0x00000800, 128 BAUD_14400 = 0x00001000, 129 BAUD_19200 = 0x00002000, 130 BAUD_38400 = 0x00004000, 131 BAUD_56K = 0x00008000, 132 BAUD_128K = 0x00010000, 133 BAUD_115200 = 0x00020000, 134 BAUD_57600 = 0x00040000, 135 BAUD_USER = 0x10000000 136 } 137 138 // Comm capabilities 139 enum : DWORD { 140 PCF_DTRDSR = 0x0001, 141 PCF_RTSCTS = 0x0002, 142 PCF_RLSD = 0x0004, 143 PCF_PARITY_CHECK = 0x0008, 144 PCF_XONXOFF = 0x0010, 145 PCF_SETXCHAR = 0x0020, 146 PCF_TOTALTIMEOUTS = 0x0040, 147 PCF_INTTIMEOUTS = 0x0080, 148 PCF_SPECIALCHARS = 0x0100, 149 PCF_16BITMODE = 0x0200 150 } 151 152 enum : DWORD { 153 SP_PARITY = 1, 154 SP_BAUD = 2, 155 SP_DATABITS = 4, 156 SP_STOPBITS = 8, 157 SP_HANDSHAKING = 16, 158 SP_PARITY_CHECK = 32, 159 SP_RLSD = 64 160 } 161 162 enum : DWORD { 163 DATABITS_5 = 1, 164 DATABITS_6 = 2, 165 DATABITS_7 = 4, 166 DATABITS_8 = 8, 167 DATABITS_16 = 16, 168 DATABITS_16X = 32 169 } 170 171 enum : WORD { 172 STOPBITS_10 = 0x0001, 173 STOPBITS_15 = 0x0002, 174 STOPBITS_20 = 0x0004, 175 PARITY_NONE = 0x0100, 176 PARITY_ODD = 0x0200, 177 PARITY_EVEN = 0x0400, 178 PARITY_MARK = 0x0800, 179 PARITY_SPACE = 0x1000 180 } 181 182 // used by dwServiceMask 183 enum SP_SERIALCOMM = 1; 184 185 struct COMMPROP { 186 WORD wPacketLength; 187 WORD wPacketVersion; 188 DWORD dwServiceMask; 189 DWORD dwReserved1; 190 DWORD dwMaxTxQueue; 191 DWORD dwMaxRxQueue; 192 DWORD dwMaxBaud; 193 DWORD dwProvSubType; 194 DWORD dwProvCapabilities; 195 DWORD dwSettableParams; 196 DWORD dwSettableBaud; 197 WORD wSettableData; 198 WORD wSettableStopParity; 199 DWORD dwCurrentTxQueue; 200 DWORD dwCurrentRxQueue; 201 DWORD dwProvSpec1; 202 DWORD dwProvSpec2; 203 WCHAR _wcProvChar; 204 205 WCHAR* wcProvChar() return scope { return &_wcProvChar; } 206 } 207 alias COMMPROP* LPCOMMPROP; 208 209 // ---------- 210 211 // for DEBUG_EVENT 212 enum : DWORD { 213 EXCEPTION_DEBUG_EVENT = 1, 214 CREATE_THREAD_DEBUG_EVENT, 215 CREATE_PROCESS_DEBUG_EVENT, 216 EXIT_THREAD_DEBUG_EVENT, 217 EXIT_PROCESS_DEBUG_EVENT, 218 LOAD_DLL_DEBUG_EVENT, 219 UNLOAD_DLL_DEBUG_EVENT, 220 OUTPUT_DEBUG_STRING_EVENT, 221 RIP_EVENT 222 } 223 224 const HFILE HFILE_ERROR = cast(HFILE) (-1); 225 226 // for SetFilePointer() 227 enum : DWORD { 228 FILE_BEGIN = 0, 229 FILE_CURRENT = 1, 230 FILE_END = 2 231 } 232 const DWORD INVALID_SET_FILE_POINTER = -1; 233 234 235 // for OpenFile() 236 deprecated enum : UINT { 237 OF_READ = 0, 238 OF_WRITE = 0x0001, 239 OF_READWRITE = 0x0002, 240 OF_SHARE_COMPAT = 0, 241 OF_SHARE_EXCLUSIVE = 0x0010, 242 OF_SHARE_DENY_WRITE = 0x0020, 243 OF_SHARE_DENY_READ = 0x0030, 244 OF_SHARE_DENY_NONE = 0x0040, 245 OF_PARSE = 0x0100, 246 OF_DELETE = 0x0200, 247 OF_VERIFY = 0x0400, 248 OF_CANCEL = 0x0800, 249 OF_CREATE = 0x1000, 250 OF_PROMPT = 0x2000, 251 OF_EXIST = 0x4000, 252 OF_REOPEN = 0x8000 253 } 254 255 enum : DWORD { 256 NMPWAIT_NOWAIT = 1, 257 NMPWAIT_WAIT_FOREVER = -1, 258 NMPWAIT_USE_DEFAULT_WAIT = 0 259 } 260 261 // for ClearCommError() 262 const DWORD 263 CE_RXOVER = 0x0001, 264 CE_OVERRUN = 0x0002, 265 CE_RXPARITY = 0x0004, 266 CE_FRAME = 0x0008, 267 CE_BREAK = 0x0010, 268 CE_TXFULL = 0x0100, 269 CE_PTO = 0x0200, 270 CE_IOE = 0x0400, 271 CE_DNS = 0x0800, 272 CE_OOP = 0x1000, 273 CE_MODE = 0x8000; 274 275 // for CopyProgressRoutine callback. 276 enum : DWORD { 277 PROGRESS_CONTINUE = 0, 278 PROGRESS_CANCEL = 1, 279 PROGRESS_STOP = 2, 280 PROGRESS_QUIET = 3 281 } 282 283 enum : DWORD { 284 CALLBACK_CHUNK_FINISHED = 0, 285 CALLBACK_STREAM_SWITCH = 1 286 } 287 288 // CopyFileEx() 289 enum : DWORD { 290 COPY_FILE_FAIL_IF_EXISTS = 1, 291 COPY_FILE_RESTARTABLE = 2 292 } 293 294 enum : DWORD { 295 FILE_MAP_COPY = 1, 296 FILE_MAP_WRITE = 2, 297 FILE_MAP_READ = 4, 298 FILE_MAP_ALL_ACCESS = 0x000F001F 299 } 300 301 enum : DWORD { 302 MUTEX_ALL_ACCESS = 0x001f0001, 303 MUTEX_MODIFY_STATE = 0x00000001, 304 SEMAPHORE_ALL_ACCESS = 0x001f0003, 305 SEMAPHORE_MODIFY_STATE = 0x00000002, 306 EVENT_ALL_ACCESS = 0x001f0003, 307 EVENT_MODIFY_STATE = 0x00000002 308 } 309 310 // CreateNamedPipe() 311 enum : DWORD { 312 PIPE_ACCESS_INBOUND = 1, 313 PIPE_ACCESS_OUTBOUND = 2, 314 PIPE_ACCESS_DUPLEX = 3 315 } 316 317 const DWORD 318 PIPE_TYPE_BYTE = 0, 319 PIPE_TYPE_MESSAGE = 4, 320 PIPE_READMODE_BYTE = 0, 321 PIPE_READMODE_MESSAGE = 2, 322 PIPE_WAIT = 0, 323 PIPE_NOWAIT = 1; 324 325 // GetNamedPipeInfo() 326 const DWORD 327 PIPE_CLIENT_END = 0, 328 PIPE_SERVER_END = 1; 329 330 const DWORD PIPE_UNLIMITED_INSTANCES = 255; 331 332 // dwCreationFlags for CreateProcess() and CreateProcessAsUser() 333 enum : DWORD { 334 DEBUG_PROCESS = 0x00000001, 335 DEBUG_ONLY_THIS_PROCESS = 0x00000002, 336 CREATE_SUSPENDED = 0x00000004, 337 DETACHED_PROCESS = 0x00000008, 338 CREATE_NEW_CONSOLE = 0x00000010, 339 NORMAL_PRIORITY_CLASS = 0x00000020, 340 IDLE_PRIORITY_CLASS = 0x00000040, 341 HIGH_PRIORITY_CLASS = 0x00000080, 342 REALTIME_PRIORITY_CLASS = 0x00000100, 343 CREATE_NEW_PROCESS_GROUP = 0x00000200, 344 CREATE_UNICODE_ENVIRONMENT = 0x00000400, 345 CREATE_SEPARATE_WOW_VDM = 0x00000800, 346 CREATE_SHARED_WOW_VDM = 0x00001000, 347 CREATE_FORCEDOS = 0x00002000, 348 BELOW_NORMAL_PRIORITY_CLASS = 0x00004000, 349 ABOVE_NORMAL_PRIORITY_CLASS = 0x00008000, 350 CREATE_BREAKAWAY_FROM_JOB = 0x01000000, 351 CREATE_WITH_USERPROFILE = 0x02000000, 352 CREATE_DEFAULT_ERROR_MODE = 0x04000000, 353 CREATE_NO_WINDOW = 0x08000000, 354 PROFILE_USER = 0x10000000, 355 PROFILE_KERNEL = 0x20000000, 356 PROFILE_SERVER = 0x40000000 357 } 358 359 const DWORD CONSOLE_TEXTMODE_BUFFER = 1; 360 361 // CreateFile() 362 enum : DWORD { 363 CREATE_NEW = 1, 364 CREATE_ALWAYS, 365 OPEN_EXISTING, 366 OPEN_ALWAYS, 367 TRUNCATE_EXISTING 368 } 369 370 // CreateFile() 371 const DWORD 372 FILE_FLAG_WRITE_THROUGH = 0x80000000, 373 FILE_FLAG_OVERLAPPED = 0x40000000, 374 FILE_FLAG_NO_BUFFERING = 0x20000000, 375 FILE_FLAG_RANDOM_ACCESS = 0x10000000, 376 FILE_FLAG_SEQUENTIAL_SCAN = 0x08000000, 377 FILE_FLAG_DELETE_ON_CLOSE = 0x04000000, 378 FILE_FLAG_BACKUP_SEMANTICS = 0x02000000, 379 FILE_FLAG_POSIX_SEMANTICS = 0x01000000, 380 FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000, 381 FILE_FLAG_OPEN_NO_RECALL = 0x00100000; 382 383 static if (_WIN32_WINNT >= 0x500) { 384 const DWORD FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000; 385 } 386 387 // for CreateFile() 388 const DWORD 389 SECURITY_ANONYMOUS = SECURITY_IMPERSONATION_LEVEL.SecurityAnonymous<<16, 390 SECURITY_IDENTIFICATION = SECURITY_IMPERSONATION_LEVEL.SecurityIdentification<<16, 391 SECURITY_IMPERSONATION = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation<<16, 392 SECURITY_DELEGATION = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation<<16, 393 SECURITY_CONTEXT_TRACKING = 0x00040000, 394 SECURITY_EFFECTIVE_ONLY = 0x00080000, 395 SECURITY_SQOS_PRESENT = 0x00100000, 396 SECURITY_VALID_SQOS_FLAGS = 0x001F0000; 397 398 399 // Thread exit code 400 const DWORD STILL_ACTIVE = 0x103; 401 402 /* ??? The only documentation of this seems to be about Windows CE and to 403 * state what _doesn't_ support it. 404 */ 405 const DWORD FIND_FIRST_EX_CASE_SENSITIVE = 1; 406 407 // GetBinaryType() 408 enum : DWORD { 409 SCS_32BIT_BINARY = 0, 410 SCS_DOS_BINARY, 411 SCS_WOW_BINARY, 412 SCS_PIF_BINARY, 413 SCS_POSIX_BINARY, 414 SCS_OS216_BINARY 415 } 416 417 const size_t 418 MAX_COMPUTERNAME_LENGTH = 15, 419 HW_PROFILE_GUIDLEN = 39, 420 MAX_PROFILE_LEN = 80; 421 422 // HW_PROFILE_INFO 423 const DWORD 424 DOCKINFO_UNDOCKED = 1, 425 DOCKINFO_DOCKED = 2, 426 DOCKINFO_USER_SUPPLIED = 4, 427 DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED, 428 DOCKINFO_USER_DOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED; 429 430 // DriveType(), RealDriveType() 431 enum : int { 432 DRIVE_UNKNOWN = 0, 433 DRIVE_NO_ROOT_DIR, 434 DRIVE_REMOVABLE, 435 DRIVE_FIXED, 436 DRIVE_REMOTE, 437 DRIVE_CDROM, 438 DRIVE_RAMDISK 439 } 440 441 // GetFileType() 442 enum : DWORD { 443 FILE_TYPE_UNKNOWN = 0, 444 FILE_TYPE_DISK, 445 FILE_TYPE_CHAR, 446 FILE_TYPE_PIPE, 447 FILE_TYPE_REMOTE = 0x8000 448 } 449 450 // Get/SetHandleInformation() 451 const DWORD 452 HANDLE_FLAG_INHERIT = 0x01, 453 HANDLE_FLAG_PROTECT_FROM_CLOSE = 0x02; 454 455 enum : DWORD { 456 STD_INPUT_HANDLE = 0xFFFFFFF6, 457 STD_OUTPUT_HANDLE = 0xFFFFFFF5, 458 STD_ERROR_HANDLE = 0xFFFFFFF4 459 } 460 461 enum HANDLE INVALID_HANDLE_VALUE = cast(HANDLE) (-1); 462 463 enum : DWORD { 464 GET_TAPE_MEDIA_INFORMATION = 0, 465 GET_TAPE_DRIVE_INFORMATION = 1 466 } 467 468 enum : DWORD { 469 SET_TAPE_MEDIA_INFORMATION = 0, 470 SET_TAPE_DRIVE_INFORMATION = 1 471 } 472 473 // SetThreadPriority()/GetThreadPriority() 474 enum : int { 475 THREAD_PRIORITY_IDLE = -15, 476 THREAD_PRIORITY_LOWEST = -2, 477 THREAD_PRIORITY_BELOW_NORMAL = -1, 478 THREAD_PRIORITY_NORMAL = 0, 479 THREAD_PRIORITY_ABOVE_NORMAL = 1, 480 THREAD_PRIORITY_HIGHEST = 2, 481 THREAD_PRIORITY_TIME_CRITICAL = 15, 482 THREAD_PRIORITY_ERROR_RETURN = 2147483647 483 } 484 485 enum : DWORD { 486 TIME_ZONE_ID_UNKNOWN, 487 TIME_ZONE_ID_STANDARD, 488 TIME_ZONE_ID_DAYLIGHT, 489 TIME_ZONE_ID_INVALID = 0xFFFFFFFF 490 } 491 492 const DWORD 493 FS_CASE_SENSITIVE = 1, 494 FS_CASE_IS_PRESERVED = 2, 495 FS_UNICODE_STORED_ON_DISK = 4, 496 FS_PERSISTENT_ACLS = 8, 497 FS_FILE_COMPRESSION = 16, 498 FS_VOL_IS_COMPRESSED = 32768; 499 500 // Flags for GlobalAlloc 501 const UINT 502 GMEM_FIXED = 0, 503 GMEM_MOVEABLE = 0x0002, 504 GMEM_ZEROINIT = 0x0040, 505 GPTR = 0x0040, 506 GHND = 0x0042, 507 GMEM_MODIFY = 0x0080, // used only for GlobalRealloc 508 GMEM_VALID_FLAGS = 0x7F72; 509 510 /+ // Obselete flags (Win16 only) 511 GMEM_NOCOMPACT=16; 512 GMEM_NODISCARD=32; 513 GMEM_DISCARDABLE=256; 514 GMEM_NOT_BANKED=4096; 515 GMEM_LOWER=4096; 516 GMEM_SHARE=8192; 517 GMEM_DDESHARE=8192; 518 519 GMEM_LOCKCOUNT=255; 520 521 // for GlobalFlags() 522 GMEM_DISCARDED = 16384; 523 GMEM_INVALID_HANDLE = 32768; 524 525 GMEM_NOTIFY = 16384; 526 +/ 527 528 const UINT 529 LMEM_FIXED = 0, 530 LMEM_MOVEABLE = 0x0002, 531 LMEM_NONZEROLPTR = 0, 532 NONZEROLPTR = 0, 533 LMEM_NONZEROLHND = 0x0002, 534 NONZEROLHND = 0x0002, 535 LMEM_DISCARDABLE = 0x0F00, 536 LMEM_NOCOMPACT = 0x0010, 537 LMEM_NODISCARD = 0x0020, 538 LMEM_ZEROINIT = 0x0040, 539 LPTR = 0x0040, 540 LHND = 0x0042, 541 LMEM_MODIFY = 0x0080, 542 LMEM_LOCKCOUNT = 0x00FF, 543 LMEM_DISCARDED = 0x4000, 544 LMEM_INVALID_HANDLE = 0x8000; 545 546 547 548 // used in EXCEPTION_RECORD 549 enum : DWORD { 550 STATUS_WAIT_0 = 0, 551 STATUS_ABANDONED_WAIT_0 = 0x00000080, 552 STATUS_USER_APC = 0x000000C0, 553 STATUS_TIMEOUT = 0x00000102, 554 STATUS_PENDING = 0x00000103, 555 556 STATUS_SEGMENT_NOTIFICATION = 0x40000005, 557 STATUS_GUARD_PAGE_VIOLATION = 0x80000001, 558 STATUS_DATATYPE_MISALIGNMENT = 0x80000002, 559 STATUS_BREAKPOINT = 0x80000003, 560 STATUS_SINGLE_STEP = 0x80000004, 561 562 STATUS_ACCESS_VIOLATION = 0xC0000005, 563 STATUS_IN_PAGE_ERROR = 0xC0000006, 564 STATUS_INVALID_HANDLE = 0xC0000008, 565 566 STATUS_NO_MEMORY = 0xC0000017, 567 STATUS_ILLEGAL_INSTRUCTION = 0xC000001D, 568 STATUS_NONCONTINUABLE_EXCEPTION = 0xC0000025, 569 STATUS_INVALID_DISPOSITION = 0xC0000026, 570 STATUS_ARRAY_BOUNDS_EXCEEDED = 0xC000008C, 571 STATUS_FLOAT_DENORMAL_OPERAND = 0xC000008D, 572 STATUS_FLOAT_DIVIDE_BY_ZERO = 0xC000008E, 573 STATUS_FLOAT_INEXACT_RESULT = 0xC000008F, 574 STATUS_FLOAT_INVALID_OPERATION = 0xC0000090, 575 STATUS_FLOAT_OVERFLOW = 0xC0000091, 576 STATUS_FLOAT_STACK_CHECK = 0xC0000092, 577 STATUS_FLOAT_UNDERFLOW = 0xC0000093, 578 STATUS_INTEGER_DIVIDE_BY_ZERO = 0xC0000094, 579 STATUS_INTEGER_OVERFLOW = 0xC0000095, 580 STATUS_PRIVILEGED_INSTRUCTION = 0xC0000096, 581 STATUS_STACK_OVERFLOW = 0xC00000FD, 582 STATUS_CONTROL_C_EXIT = 0xC000013A, 583 STATUS_DLL_INIT_FAILED = 0xC0000142, 584 STATUS_DLL_INIT_FAILED_LOGOFF = 0xC000026B, 585 586 CONTROL_C_EXIT = STATUS_CONTROL_C_EXIT, 587 588 EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION, 589 EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT, 590 EXCEPTION_BREAKPOINT = STATUS_BREAKPOINT, 591 EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP, 592 EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED, 593 EXCEPTION_FLT_DENORMAL_OPERAND = STATUS_FLOAT_DENORMAL_OPERAND, 594 EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO, 595 EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT, 596 EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION, 597 EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW, 598 EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK, 599 EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW, 600 EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO, 601 EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW, 602 EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION, 603 EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR, 604 EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION, 605 EXCEPTION_NONCONTINUABLE_EXCEPTION = STATUS_NONCONTINUABLE_EXCEPTION, 606 EXCEPTION_STACK_OVERFLOW = STATUS_STACK_OVERFLOW, 607 EXCEPTION_INVALID_DISPOSITION = STATUS_INVALID_DISPOSITION, 608 EXCEPTION_GUARD_PAGE = STATUS_GUARD_PAGE_VIOLATION, 609 EXCEPTION_INVALID_HANDLE = STATUS_INVALID_HANDLE 610 } 611 612 // for PROCESS_HEAP_ENTRY 613 const WORD 614 PROCESS_HEAP_REGION = 1, 615 PROCESS_HEAP_UNCOMMITTED_RANGE = 2, 616 PROCESS_HEAP_ENTRY_BUSY = 4, 617 PROCESS_HEAP_ENTRY_MOVEABLE = 16, 618 PROCESS_HEAP_ENTRY_DDESHARE = 32; 619 620 // for LoadLibraryEx() 621 const DWORD 622 DONT_RESOLVE_DLL_REFERENCES = 0x01, // not for WinME and earlier 623 LOAD_LIBRARY_AS_DATAFILE = 0x02, 624 LOAD_WITH_ALTERED_SEARCH_PATH = 0x08, 625 LOAD_IGNORE_CODE_AUTHZ_LEVEL = 0x10; // only for XP and later 626 627 // for LockFile() 628 const DWORD 629 LOCKFILE_FAIL_IMMEDIATELY = 1, 630 LOCKFILE_EXCLUSIVE_LOCK = 2; 631 632 const MAXIMUM_WAIT_OBJECTS = 64; 633 const MAXIMUM_SUSPEND_COUNT = 0x7F; 634 635 const WAIT_OBJECT_0 = 0; 636 const WAIT_ABANDONED_0 = 128; 637 638 //const WAIT_TIMEOUT=258; // also in winerror.h 639 640 enum : DWORD { 641 WAIT_IO_COMPLETION = 0x000000C0, 642 WAIT_ABANDONED = 0x00000080, 643 WAIT_FAILED = 0xFFFFFFFF 644 } 645 646 // PurgeComm() 647 const DWORD 648 PURGE_TXABORT = 1, 649 PURGE_RXABORT = 2, 650 PURGE_TXCLEAR = 4, 651 PURGE_RXCLEAR = 8; 652 653 // ReadEventLog() 654 const DWORD 655 EVENTLOG_SEQUENTIAL_READ = 1, 656 EVENTLOG_SEEK_READ = 2, 657 EVENTLOG_FORWARDS_READ = 4, 658 EVENTLOG_BACKWARDS_READ = 8; 659 660 // ReportEvent() 661 enum : WORD { 662 EVENTLOG_SUCCESS = 0, 663 EVENTLOG_ERROR_TYPE = 1, 664 EVENTLOG_WARNING_TYPE = 2, 665 EVENTLOG_INFORMATION_TYPE = 4, 666 EVENTLOG_AUDIT_SUCCESS = 8, 667 EVENTLOG_AUDIT_FAILURE = 16 668 } 669 670 // FormatMessage() 671 const DWORD 672 FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x0100, 673 FORMAT_MESSAGE_IGNORE_INSERTS = 0x0200, 674 FORMAT_MESSAGE_FROM_STRING = 0x0400, 675 FORMAT_MESSAGE_FROM_HMODULE = 0x0800, 676 FORMAT_MESSAGE_FROM_SYSTEM = 0x1000, 677 FORMAT_MESSAGE_ARGUMENT_ARRAY = 0x2000; 678 679 const DWORD FORMAT_MESSAGE_MAX_WIDTH_MASK = 255; 680 681 // also in ddk/ntapi.h 682 // To restore default error mode, call SetErrorMode(0) 683 enum { 684 SEM_FAILCRITICALERRORS = 0x0001, 685 SEM_NOGPFAULTERRORBOX = 0x0002, 686 SEM_NOALIGNMENTFAULTEXCEPT = 0x0004, 687 SEM_NOOPENFILEERRORBOX = 0x8000 688 } 689 // end ntapi.h 690 691 enum { 692 SLE_ERROR = 1, 693 SLE_MINORERROR, 694 SLE_WARNING 695 } 696 697 const SHUTDOWN_NORETRY = 1; 698 699 // Return type for exception filters. 700 enum : LONG { 701 EXCEPTION_EXECUTE_HANDLER = 1, 702 EXCEPTION_CONTINUE_EXECUTION = -1, 703 EXCEPTION_CONTINUE_SEARCH = 0 704 } 705 706 enum : ATOM { 707 MAXINTATOM = 0xC000, 708 INVALID_ATOM = 0 709 } 710 711 const IGNORE = 0; 712 const INFINITE = 0xFFFFFFFF; 713 714 // EscapeCommFunction() 715 enum { 716 SETXOFF = 1, 717 SETXON, 718 SETRTS, 719 CLRRTS, 720 SETDTR, 721 CLRDTR, // = 6 722 SETBREAK = 8, 723 CLRBREAK = 9 724 } 725 726 727 // for SetCommMask() 728 const DWORD 729 EV_RXCHAR = 0x0001, 730 EV_RXFLAG = 0x0002, 731 EV_TXEMPTY = 0x0004, 732 EV_CTS = 0x0008, 733 EV_DSR = 0x0010, 734 EV_RLSD = 0x0020, 735 EV_BREAK = 0x0040, 736 EV_ERR = 0x0080, 737 EV_RING = 0x0100, 738 EV_PERR = 0x0200, 739 EV_RX80FULL = 0x0400, 740 EV_EVENT1 = 0x0800, 741 EV_EVENT2 = 0x1000; 742 743 // GetCommModemStatus() 744 const DWORD 745 MS_CTS_ON = 0x0010, 746 MS_DSR_ON = 0x0020, 747 MS_RING_ON = 0x0040, 748 MS_RLSD_ON = 0x0080; 749 750 751 // DCB 752 enum : BYTE { 753 NOPARITY = 0, 754 ODDPARITY, 755 EVENPARITY, 756 MARKPARITY, 757 SPACEPARITY 758 } 759 // DCB 760 enum : BYTE { 761 ONESTOPBIT = 0, 762 ONE5STOPBITS, 763 TWOSTOPBITS 764 } 765 // DCB 766 enum : DWORD { 767 CBR_110 = 110, 768 CBR_300 = 300, 769 CBR_600 = 600, 770 CBR_1200 = 1200, 771 CBR_2400 = 2400, 772 CBR_4800 = 4800, 773 CBR_9600 = 9600, 774 CBR_14400 = 14400, 775 CBR_19200 = 19200, 776 CBR_38400 = 38400, 777 CBR_56000 = 56000, 778 CBR_57600 = 57600, 779 CBR_115200 = 115200, 780 CBR_128000 = 128000, 781 CBR_256000 = 256000 782 } 783 // DCB, 2-bit bitfield 784 enum { 785 DTR_CONTROL_DISABLE = 0, 786 DTR_CONTROL_ENABLE, 787 DTR_CONTROL_HANDSHAKE 788 } 789 790 // DCB, 2-bit bitfield 791 enum { 792 RTS_CONTROL_DISABLE = 0, 793 RTS_CONTROL_ENABLE, 794 RTS_CONTROL_HANDSHAKE, 795 RTS_CONTROL_TOGGLE, 796 } 797 798 // WIN32_STREAM_ID 799 enum : DWORD { 800 BACKUP_INVALID = 0, 801 BACKUP_DATA, 802 BACKUP_EA_DATA, 803 BACKUP_SECURITY_DATA, 804 BACKUP_ALTERNATE_DATA, 805 BACKUP_LINK, 806 BACKUP_PROPERTY_DATA, 807 BACKUP_OBJECT_ID, 808 BACKUP_REPARSE_DATA, 809 BACKUP_SPARSE_BLOCK 810 } 811 812 // WIN32_STREAM_ID 813 enum : DWORD { 814 STREAM_NORMAL_ATTRIBUTE = 0, 815 STREAM_MODIFIED_WHEN_READ = 1, 816 STREAM_CONTAINS_SECURITY = 2, 817 STREAM_CONTAINS_PROPERTIES = 4 818 } 819 820 // STARTUPINFO 821 const DWORD 822 STARTF_USESHOWWINDOW = 0x0001, 823 STARTF_USESIZE = 0x0002, 824 STARTF_USEPOSITION = 0x0004, 825 STARTF_USECOUNTCHARS = 0x0008, 826 STARTF_USEFILLATTRIBUTE = 0x0010, 827 STARTF_RUNFULLSCREEN = 0x0020, 828 STARTF_FORCEONFEEDBACK = 0x0040, 829 STARTF_FORCEOFFFEEDBACK = 0x0080, 830 STARTF_USESTDHANDLES = 0x0100, 831 STARTF_USEHOTKEY = 0x0200; 832 833 // ??? 834 enum { 835 TC_NORMAL = 0, 836 TC_HARDERR = 1, 837 TC_GP_TRAP = 2, 838 TC_SIGNAL = 3 839 } 840 841 /+ These seem to be Windows CE-specific 842 enum { 843 AC_LINE_OFFLINE = 0, 844 AC_LINE_ONLINE = 1, 845 AC_LINE_BACKUP_POWER = 2, 846 AC_LINE_UNKNOWN = 255 847 } 848 849 enum { 850 BATTERY_FLAG_HIGH = 1, 851 BATTERY_FLAG_LOW = 2, 852 BATTERY_FLAG_CRITICAL = 4, 853 BATTERY_FLAG_CHARGING = 8, 854 BATTERY_FLAG_NO_BATTERY = 128, 855 BATTERY_FLAG_UNKNOWN = 255, 856 BATTERY_PERCENTAGE_UNKNOWN = 255, 857 BATTERY_LIFE_UNKNOWN = 0xFFFFFFFF 858 } 859 +/ 860 861 // ??? 862 const HINSTANCE_ERROR = 32; 863 864 // returned from GetFileSize() 865 const DWORD INVALID_FILE_SIZE = 0xFFFFFFFF; 866 867 const DWORD TLS_OUT_OF_INDEXES = 0xFFFFFFFF; 868 869 // GetWriteWatch() 870 const DWORD WRITE_WATCH_FLAG_RESET = 1; 871 872 // for LogonUser() 873 enum : DWORD { 874 LOGON32_LOGON_INTERACTIVE = 2, 875 LOGON32_LOGON_NETWORK = 3, 876 LOGON32_LOGON_BATCH = 4, 877 LOGON32_LOGON_SERVICE = 5, 878 LOGON32_LOGON_UNLOCK = 7 879 } 880 881 // for LogonUser() 882 enum : DWORD { 883 LOGON32_PROVIDER_DEFAULT, 884 LOGON32_PROVIDER_WINNT35, 885 LOGON32_PROVIDER_WINNT40, 886 LOGON32_PROVIDER_WINNT50 887 } 888 889 // for MoveFileEx() 890 const DWORD 891 MOVEFILE_REPLACE_EXISTING = 1, 892 MOVEFILE_COPY_ALLOWED = 2, 893 MOVEFILE_DELAY_UNTIL_REBOOT = 4, 894 MOVEFILE_WRITE_THROUGH = 8; 895 896 // DefineDosDevice() 897 const DWORD 898 DDD_RAW_TARGET_PATH = 1, 899 DDD_REMOVE_DEFINITION = 2, 900 DDD_EXACT_MATCH_ON_REMOVE = 4; 901 902 static if (_WIN32_WINNT >= 0x500) { 903 enum : DWORD { 904 LOGON32_LOGON_NETWORK_CLEARTEXT = 8, 905 LOGON32_LOGON_NEW_CREDENTIALS = 9 906 } 907 908 // ReplaceFile() 909 const DWORD 910 REPLACEFILE_WRITE_THROUGH = 1, 911 REPLACEFILE_IGNORE_MERGE_ERRORS = 2; 912 } 913 914 static if (_WIN32_WINNT >= 0x501) { 915 const DWORD 916 GET_MODULE_HANDLE_EX_FLAG_PIN = 1, 917 GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2, 918 GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4; 919 920 // for ACTCTX 921 const DWORD 922 ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = 0x01, 923 ACTCTX_FLAG_LANGID_VALID = 0x02, 924 ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID = 0x04, 925 ACTCTX_FLAG_RESOURCE_NAME_VALID = 0x08, 926 ACTCTX_FLAG_SET_PROCESS_DEFAULT = 0x10, 927 ACTCTX_FLAG_APPLICATION_NAME_VALID = 0x20, 928 ACTCTX_FLAG_HMODULE_VALID = 0x80; 929 930 // DeactivateActCtx() 931 const DWORD DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = 1; 932 // FindActCtxSectionString() 933 const DWORD FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX = 1; 934 // QueryActCtxW() 935 const DWORD 936 QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX = 0x04, 937 QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE = 0x08, 938 QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS = 0x10; 939 940 enum { 941 LOGON_WITH_PROFILE = 1, 942 LOGON_NETCREDENTIALS_ONLY 943 } 944 } 945 946 // ---- 947 948 struct FILETIME { 949 DWORD dwLowDateTime; 950 DWORD dwHighDateTime; 951 } 952 alias FILETIME* PFILETIME, LPFILETIME; 953 954 struct BY_HANDLE_FILE_INFORMATION { 955 DWORD dwFileAttributes; 956 FILETIME ftCreationTime; 957 FILETIME ftLastAccessTime; 958 FILETIME ftLastWriteTime; 959 DWORD dwVolumeSerialNumber; 960 DWORD nFileSizeHigh; 961 DWORD nFileSizeLow; 962 DWORD nNumberOfLinks; 963 DWORD nFileIndexHigh; 964 DWORD nFileIndexLow; 965 } 966 alias BY_HANDLE_FILE_INFORMATION* LPBY_HANDLE_FILE_INFORMATION; 967 968 struct DCB { 969 DWORD DCBlength = DCB.sizeof; 970 DWORD BaudRate; 971 /+ 972 DWORD fBinary:1; // Binary Mode (skip EOF check) 973 DWORD fParity:1; // Enable parity checking 974 DWORD fOutxCtsFlow:1; // CTS handshaking on output 975 DWORD fOutxDsrFlow:1; // DSR handshaking on output 976 DWORD fDtrControl:2; // DTR Flow control 977 DWORD fDsrSensitivity:1; // DSR Sensitivity 978 DWORD fTXContinueOnXoff:1; // Continue TX when Xoff sent 979 DWORD fOutX:1; // Enable output X-ON/X-OFF 980 DWORD fInX:1; // Enable input X-ON/X-OFF 981 DWORD fErrorChar:1; // Enable Err Replacement 982 DWORD fNull:1; // Enable Null stripping 983 DWORD fRtsControl:2; // Rts Flow control 984 DWORD fAbortOnError:1; // Abort all reads and writes on Error 985 DWORD fDummy2:17; // Reserved 986 +/ 987 uint _bf; 988 bool fBinary(bool f) { _bf = (_bf & ~0x0001) | f; return f; } 989 bool fParity(bool f) { _bf = (_bf & ~0x0002) | (f<<1); return f; } 990 bool fOutxCtsFlow(bool f) { _bf = (_bf & ~0x0004) | (f<<2); return f; } 991 bool fOutxDsrFlow(bool f) { _bf = (_bf & ~0x0008) | (f<<3); return f; } 992 byte fDtrControl(byte x) { _bf = (_bf & ~0x0030) | (x<<4); return cast(byte)(x & 3); } 993 bool fDsrSensitivity(bool f) { _bf = (_bf & ~0x0040) | (f<<6); return f; } 994 bool fTXContinueOnXoff(bool f) { _bf = (_bf & ~0x0080) | (f<<7); return f; } 995 bool fOutX(bool f) { _bf = (_bf & ~0x0100) | (f<<8); return f; } 996 bool fInX(bool f) { _bf = (_bf & ~0x0200) | (f<<9); return f; } 997 bool fErrorChar(bool f) { _bf = (_bf & ~0x0400) | (f<<10); return f; } 998 bool fNull(bool f) { _bf = (_bf & ~0x0800) | (f<<11); return f; } 999 byte fRtsControl(byte x) { _bf = (_bf & ~0x3000) | (x<<12); return cast(byte)(x & 3); } 1000 bool fAbortOnError(bool f) { _bf = (_bf & ~0x4000) | (f<<14); return f; } 1001 1002 bool fBinary() { return cast(bool) (_bf & 1); } 1003 bool fParity() { return cast(bool) (_bf & 2); } 1004 bool fOutxCtsFlow() { return cast(bool) (_bf & 4); } 1005 bool fOutxDsrFlow() { return cast(bool) (_bf & 8); } 1006 byte fDtrControl() { return cast(byte) ((_bf & (32+16))>>4); } 1007 bool fDsrSensitivity() { return cast(bool) (_bf & 64); } 1008 bool fTXContinueOnXoff() { return cast(bool) (_bf & 128); } 1009 bool fOutX() { return cast(bool) (_bf & 256); } 1010 bool fInX() { return cast(bool) (_bf & 512); } 1011 bool fErrorChar() { return cast(bool) (_bf & 1024); } 1012 bool fNull() { return cast(bool) (_bf & 2048); } 1013 byte fRtsControl() { return cast(byte) ((_bf & (4096+8192))>>12); } 1014 bool fAbortOnError() { return cast(bool) (_bf & 16384); } 1015 1016 WORD wReserved; 1017 WORD XonLim; 1018 WORD XoffLim; 1019 BYTE ByteSize; 1020 BYTE Parity; 1021 BYTE StopBits; 1022 char XonChar; 1023 char XoffChar; 1024 char ErrorChar; 1025 char EofChar; 1026 char EvtChar; 1027 WORD wReserved1; 1028 } 1029 alias DCB* LPDCB; 1030 1031 struct COMMCONFIG { 1032 DWORD dwSize = COMMCONFIG.sizeof; 1033 WORD wVersion; 1034 WORD wReserved; 1035 DCB dcb; 1036 DWORD dwProviderSubType; 1037 DWORD dwProviderOffset; 1038 DWORD dwProviderSize; 1039 WCHAR _wcProviderData; 1040 1041 WCHAR* wcProviderData() return scope { return &_wcProviderData; } 1042 } 1043 alias COMMCONFIG* LPCOMMCONFIG; 1044 1045 struct COMMTIMEOUTS { 1046 DWORD ReadIntervalTimeout; 1047 DWORD ReadTotalTimeoutMultiplier; 1048 DWORD ReadTotalTimeoutConstant; 1049 DWORD WriteTotalTimeoutMultiplier; 1050 DWORD WriteTotalTimeoutConstant; 1051 } 1052 alias COMMTIMEOUTS* LPCOMMTIMEOUTS; 1053 1054 struct COMSTAT { 1055 /+ 1056 DWORD fCtsHold:1; 1057 DWORD fDsrHold:1; 1058 DWORD fRlsdHold:1; 1059 DWORD fXoffHold:1; 1060 DWORD fXoffSent:1; 1061 DWORD fEof:1; 1062 DWORD fTxim:1; 1063 DWORD fReserved:25; 1064 +/ 1065 DWORD _bf; 1066 bool fCtsHold(bool f) { _bf = (_bf & ~1) | f; return f; } 1067 bool fDsrHold(bool f) { _bf = (_bf & ~2) | (f<<1); return f; } 1068 bool fRlsdHold(bool f) { _bf = (_bf & ~4) | (f<<2); return f; } 1069 bool fXoffHold(bool f) { _bf = (_bf & ~8) | (f<<3); return f; } 1070 bool fXoffSent(bool f) { _bf = (_bf & ~16) | (f<<4); return f; } 1071 bool fEof(bool f) { _bf = (_bf & ~32) | (f<<5); return f; } 1072 bool fTxim(bool f) { _bf = (_bf & ~64) | (f<<6); return f; } 1073 1074 bool fCtsHold() { return cast(bool) (_bf & 1); } 1075 bool fDsrHold() { return cast(bool) (_bf & 2); } 1076 bool fRlsdHold() { return cast(bool) (_bf & 4); } 1077 bool fXoffHold() { return cast(bool) (_bf & 8); } 1078 bool fXoffSent() { return cast(bool) (_bf & 16); } 1079 bool fEof() { return cast(bool) (_bf & 32); } 1080 bool fTxim() { return cast(bool) (_bf & 64); } 1081 1082 DWORD cbInQue; 1083 DWORD cbOutQue; 1084 } 1085 alias COMSTAT* LPCOMSTAT; 1086 1087 struct CREATE_PROCESS_DEBUG_INFO { 1088 HANDLE hFile; 1089 HANDLE hProcess; 1090 HANDLE hThread; 1091 LPVOID lpBaseOfImage; 1092 DWORD dwDebugInfoFileOffset; 1093 DWORD nDebugInfoSize; 1094 LPVOID lpThreadLocalBase; 1095 LPTHREAD_START_ROUTINE lpStartAddress; 1096 LPVOID lpImageName; 1097 WORD fUnicode; 1098 } 1099 alias CREATE_PROCESS_DEBUG_INFO* LPCREATE_PROCESS_DEBUG_INFO; 1100 1101 struct CREATE_THREAD_DEBUG_INFO { 1102 HANDLE hThread; 1103 LPVOID lpThreadLocalBase; 1104 LPTHREAD_START_ROUTINE lpStartAddress; 1105 } 1106 alias CREATE_THREAD_DEBUG_INFO* LPCREATE_THREAD_DEBUG_INFO; 1107 1108 struct EXCEPTION_DEBUG_INFO { 1109 EXCEPTION_RECORD ExceptionRecord; 1110 DWORD dwFirstChance; 1111 } 1112 alias EXCEPTION_DEBUG_INFO* LPEXCEPTION_DEBUG_INFO; 1113 1114 struct EXIT_THREAD_DEBUG_INFO { 1115 DWORD dwExitCode; 1116 } 1117 alias EXIT_THREAD_DEBUG_INFO* LPEXIT_THREAD_DEBUG_INFO; 1118 1119 struct EXIT_PROCESS_DEBUG_INFO { 1120 DWORD dwExitCode; 1121 } 1122 alias EXIT_PROCESS_DEBUG_INFO* LPEXIT_PROCESS_DEBUG_INFO; 1123 1124 struct LOAD_DLL_DEBUG_INFO { 1125 HANDLE hFile; 1126 LPVOID lpBaseOfDll; 1127 DWORD dwDebugInfoFileOffset; 1128 DWORD nDebugInfoSize; 1129 LPVOID lpImageName; 1130 WORD fUnicode; 1131 } 1132 alias LOAD_DLL_DEBUG_INFO* LPLOAD_DLL_DEBUG_INFO; 1133 1134 struct UNLOAD_DLL_DEBUG_INFO { 1135 LPVOID lpBaseOfDll; 1136 } 1137 alias UNLOAD_DLL_DEBUG_INFO* LPUNLOAD_DLL_DEBUG_INFO; 1138 1139 struct OUTPUT_DEBUG_STRING_INFO { 1140 LPSTR lpDebugStringData; 1141 WORD fUnicode; 1142 WORD nDebugStringLength; 1143 } 1144 alias OUTPUT_DEBUG_STRING_INFO* LPOUTPUT_DEBUG_STRING_INFO; 1145 1146 struct RIP_INFO { 1147 DWORD dwError; 1148 DWORD dwType; 1149 } 1150 alias RIP_INFO* LPRIP_INFO; 1151 1152 struct DEBUG_EVENT { 1153 DWORD dwDebugEventCode; 1154 DWORD dwProcessId; 1155 DWORD dwThreadId; 1156 union { 1157 EXCEPTION_DEBUG_INFO Exception; 1158 CREATE_THREAD_DEBUG_INFO CreateThread; 1159 CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; 1160 EXIT_THREAD_DEBUG_INFO ExitThread; 1161 EXIT_PROCESS_DEBUG_INFO ExitProcess; 1162 LOAD_DLL_DEBUG_INFO LoadDll; 1163 UNLOAD_DLL_DEBUG_INFO UnloadDll; 1164 OUTPUT_DEBUG_STRING_INFO DebugString; 1165 RIP_INFO RipInfo; 1166 } 1167 } 1168 alias DEBUG_EVENT* LPDEBUG_EVENT; 1169 1170 struct OVERLAPPED { 1171 ULONG_PTR Internal; 1172 ULONG_PTR InternalHigh; 1173 union { 1174 struct { 1175 DWORD Offset; 1176 DWORD OffsetHigh; 1177 } 1178 PVOID Pointer; 1179 } 1180 HANDLE hEvent; 1181 } 1182 alias OVERLAPPED* POVERLAPPED, LPOVERLAPPED; 1183 1184 struct STARTUPINFOA { 1185 DWORD cb = STARTUPINFOA.sizeof; 1186 LPSTR lpReserved; 1187 LPSTR lpDesktop; 1188 LPSTR lpTitle; 1189 DWORD dwX; 1190 DWORD dwY; 1191 DWORD dwXSize; 1192 DWORD dwYSize; 1193 DWORD dwXCountChars; 1194 DWORD dwYCountChars; 1195 DWORD dwFillAttribute; 1196 DWORD dwFlags; 1197 WORD wShowWindow; 1198 WORD cbReserved2; 1199 PBYTE lpReserved2; 1200 HANDLE hStdInput; 1201 HANDLE hStdOutput; 1202 HANDLE hStdError; 1203 } 1204 alias STARTUPINFOA* LPSTARTUPINFOA; 1205 1206 struct STARTUPINFOW { 1207 DWORD cb = STARTUPINFOW.sizeof; 1208 LPWSTR lpReserved; 1209 LPWSTR lpDesktop; 1210 LPWSTR lpTitle; 1211 DWORD dwX; 1212 DWORD dwY; 1213 DWORD dwXSize; 1214 DWORD dwYSize; 1215 DWORD dwXCountChars; 1216 DWORD dwYCountChars; 1217 DWORD dwFillAttribute; 1218 DWORD dwFlags; 1219 WORD wShowWindow; 1220 WORD cbReserved2; 1221 PBYTE lpReserved2; 1222 HANDLE hStdInput; 1223 HANDLE hStdOutput; 1224 HANDLE hStdError; 1225 } 1226 alias STARTUPINFOW* LPSTARTUPINFOW; 1227 1228 struct PROCESS_INFORMATION { 1229 HANDLE hProcess; 1230 HANDLE hThread; 1231 DWORD dwProcessId; 1232 DWORD dwThreadId; 1233 } 1234 alias PROCESS_INFORMATION* PPROCESS_INFORMATION, LPPROCESS_INFORMATION; 1235 1236 struct CRITICAL_SECTION_DEBUG { 1237 WORD Type; 1238 WORD CreatorBackTraceIndex; 1239 CRITICAL_SECTION* CriticalSection; 1240 LIST_ENTRY ProcessLocksList; 1241 DWORD EntryCount; 1242 DWORD ContentionCount; 1243 DWORD[2] Spare; 1244 } 1245 alias CRITICAL_SECTION_DEBUG* PCRITICAL_SECTION_DEBUG; 1246 1247 struct CRITICAL_SECTION { 1248 PCRITICAL_SECTION_DEBUG DebugInfo; 1249 LONG LockCount; 1250 LONG RecursionCount; 1251 HANDLE OwningThread; 1252 HANDLE LockSemaphore; 1253 DWORD SpinCount; 1254 } 1255 alias CRITICAL_SECTION* PCRITICAL_SECTION, LPCRITICAL_SECTION; 1256 1257 struct SYSTEMTIME { 1258 WORD wYear; 1259 WORD wMonth; 1260 WORD wDayOfWeek; 1261 WORD wDay; 1262 WORD wHour; 1263 WORD wMinute; 1264 WORD wSecond; 1265 WORD wMilliseconds; 1266 } 1267 alias SYSTEMTIME* LPSYSTEMTIME; 1268 1269 struct WIN32_FILE_ATTRIBUTE_DATA { 1270 DWORD dwFileAttributes; 1271 FILETIME ftCreationTime; 1272 FILETIME ftLastAccessTime; 1273 FILETIME ftLastWriteTime; 1274 DWORD nFileSizeHigh; 1275 DWORD nFileSizeLow; 1276 } 1277 alias WIN32_FILE_ATTRIBUTE_DATA* LPWIN32_FILE_ATTRIBUTE_DATA; 1278 1279 struct WIN32_FIND_DATAA { 1280 DWORD dwFileAttributes; 1281 FILETIME ftCreationTime; 1282 FILETIME ftLastAccessTime; 1283 FILETIME ftLastWriteTime; 1284 DWORD nFileSizeHigh; 1285 DWORD nFileSizeLow; 1286 // #ifdef _WIN32_WCE 1287 // DWORD dwOID; 1288 // #else 1289 DWORD dwReserved0; 1290 DWORD dwReserved1; 1291 // #endif 1292 CHAR[MAX_PATH] cFileName; 1293 // #ifndef _WIN32_WCE 1294 CHAR[14] cAlternateFileName; 1295 // #endif 1296 } 1297 alias WIN32_FIND_DATAA* PWIN32_FIND_DATAA, LPWIN32_FIND_DATAA; 1298 1299 struct WIN32_FIND_DATAW { 1300 DWORD dwFileAttributes; 1301 FILETIME ftCreationTime; 1302 FILETIME ftLastAccessTime; 1303 FILETIME ftLastWriteTime; 1304 DWORD nFileSizeHigh; 1305 DWORD nFileSizeLow; 1306 // #ifdef _WIN32_WCE 1307 // DWORD dwOID; 1308 // #else 1309 DWORD dwReserved0; 1310 DWORD dwReserved1; 1311 // #endif 1312 WCHAR[MAX_PATH] cFileName; 1313 // #ifndef _WIN32_WCE 1314 WCHAR[14] cAlternateFileName; 1315 // #endif 1316 } 1317 alias WIN32_FIND_DATAW* PWIN32_FIND_DATAW, LPWIN32_FIND_DATAW; 1318 1319 struct WIN32_STREAM_ID { 1320 DWORD dwStreamId; 1321 DWORD dwStreamAttributes; 1322 LARGE_INTEGER Size; 1323 DWORD dwStreamNameSize; 1324 WCHAR _cStreamName; 1325 1326 WCHAR* cStreamName() return scope { return &_cStreamName; } 1327 } 1328 alias WIN32_STREAM_ID* LPWIN32_STREAM_ID; 1329 1330 enum FINDEX_INFO_LEVELS { 1331 FindExInfoStandard, 1332 FindExInfoMaxInfoLevel 1333 } 1334 1335 enum FINDEX_SEARCH_OPS { 1336 FindExSearchNameMatch, 1337 FindExSearchLimitToDirectories, 1338 FindExSearchLimitToDevices, 1339 FindExSearchMaxSearchOp 1340 } 1341 1342 enum ACL_INFORMATION_CLASS { 1343 AclRevisionInformation = 1, 1344 AclSizeInformation 1345 } 1346 1347 struct HW_PROFILE_INFOA { 1348 DWORD dwDockInfo; 1349 CHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; 1350 CHAR[MAX_PROFILE_LEN] szHwProfileName; 1351 } 1352 alias HW_PROFILE_INFOA* LPHW_PROFILE_INFOA; 1353 1354 struct HW_PROFILE_INFOW { 1355 DWORD dwDockInfo; 1356 WCHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; 1357 WCHAR[MAX_PROFILE_LEN] szHwProfileName; 1358 } 1359 alias HW_PROFILE_INFOW* LPHW_PROFILE_INFOW; 1360 1361 /* ??? MSDN documents this only for Windows CE/Mobile, but it's used by 1362 * GetFileAttributesEx, which is in desktop Windows. 1363 */ 1364 enum GET_FILEEX_INFO_LEVELS { 1365 GetFileExInfoStandard, 1366 GetFileExMaxInfoLevel 1367 } 1368 1369 struct SYSTEM_INFO { 1370 union { 1371 DWORD dwOemId; 1372 struct { 1373 WORD wProcessorArchitecture; 1374 WORD wReserved; 1375 } 1376 } 1377 DWORD dwPageSize; 1378 PVOID lpMinimumApplicationAddress; 1379 PVOID lpMaximumApplicationAddress; 1380 DWORD_PTR dwActiveProcessorMask; 1381 DWORD dwNumberOfProcessors; 1382 DWORD dwProcessorType; 1383 DWORD dwAllocationGranularity; 1384 WORD wProcessorLevel; 1385 WORD wProcessorRevision; 1386 } 1387 alias SYSTEM_INFO* LPSYSTEM_INFO; 1388 1389 static if (_WIN32_WINNT >= 0x500) { 1390 struct SYSTEM_POWER_STATUS { 1391 BYTE ACLineStatus; 1392 BYTE BatteryFlag; 1393 BYTE BatteryLifePercent; 1394 BYTE Reserved1; 1395 DWORD BatteryLifeTime; 1396 DWORD BatteryFullLifeTime; 1397 } 1398 alias SYSTEM_POWER_STATUS* LPSYSTEM_POWER_STATUS; 1399 } 1400 1401 struct TIME_ZONE_INFORMATION { 1402 LONG Bias; 1403 WCHAR[32] StandardName; 1404 SYSTEMTIME StandardDate; 1405 LONG StandardBias; 1406 WCHAR[32] DaylightName; 1407 SYSTEMTIME DaylightDate; 1408 LONG DaylightBias; 1409 } 1410 alias TIME_ZONE_INFORMATION* LPTIME_ZONE_INFORMATION; 1411 1412 // MSDN documents this, possibly erroneously, as Win2000+. 1413 struct MEMORYSTATUS { 1414 DWORD dwLength; 1415 DWORD dwMemoryLoad; 1416 DWORD dwTotalPhys; 1417 DWORD dwAvailPhys; 1418 DWORD dwTotalPageFile; 1419 DWORD dwAvailPageFile; 1420 DWORD dwTotalVirtual; 1421 DWORD dwAvailVirtual; 1422 } 1423 alias MEMORYSTATUS* LPMEMORYSTATUS; 1424 1425 static if (_WIN32_WINNT >= 0x500) { 1426 struct MEMORYSTATUSEX { 1427 DWORD dwLength = MEMORYSTATUSEX.sizeof; 1428 DWORD dwMemoryLoad; 1429 DWORDLONG ullTotalPhys; 1430 DWORDLONG ullAvailPhys; 1431 DWORDLONG ullTotalPageFile; 1432 DWORDLONG ullAvailPageFile; 1433 DWORDLONG ullTotalVirtual; 1434 DWORDLONG ullAvailVirtual; 1435 DWORDLONG ullAvailExtendedVirtual; 1436 } 1437 alias MEMORYSTATUSEX* LPMEMORYSTATUSEX; 1438 } 1439 1440 struct LDT_ENTRY { 1441 WORD LimitLow; 1442 WORD BaseLow; 1443 struct { 1444 BYTE BaseMid; 1445 BYTE Flags1; 1446 BYTE Flags2; 1447 BYTE BaseHi; 1448 1449 byte Type(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0xE0) | f); return cast(byte)(f & 0x1F); } 1450 byte Dpl(byte f) { Flags1 = cast(BYTE) ((Flags1 & 0x9F) | (f<<5)); return cast(byte)(f & 3); } 1451 bool Pres(bool f) { Flags1 = cast(BYTE) ((Flags1 & 0x7F) | (f<<7)); return f; } 1452 1453 byte LimitHi(byte f) { Flags2 = cast(BYTE) ((Flags2 & 0xF0) | (f&0x0F)); return cast(byte)(f & 0x0F); } 1454 bool Sys(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xEF) | (f<<4)); return f; } 1455 // Next bit is reserved 1456 bool Default_Big(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xBF) | (f<<6)); return f; } 1457 bool Granularity(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0x7F) | (f<<7)); return f; } 1458 1459 byte Type() { return cast(byte) (Flags1 & 0x1F); } 1460 byte Dpl() { return cast(byte) ((Flags1 & 0x60)>>5); } 1461 bool Pres() { return cast(bool) (Flags1 & 0x80); } 1462 1463 byte LimitHi() { return cast(byte) (Flags2 & 0x0F); } 1464 bool Sys() { return cast(bool) (Flags2 & 0x10); } 1465 bool Default_Big() { return cast(bool) (Flags2 & 0x40); } 1466 bool Granularity() { return cast(bool) (Flags2 & 0x80); } 1467 } 1468 /+ 1469 union HighWord { 1470 struct Bytes { 1471 BYTE BaseMid; 1472 BYTE Flags1; 1473 BYTE Flags2; 1474 BYTE BaseHi; 1475 } 1476 struct Bits { 1477 DWORD BaseMid:8; 1478 DWORD Type:5; 1479 DWORD Dpl:2; 1480 DWORD Pres:1; 1481 DWORD LimitHi:4; 1482 DWORD Sys:1; 1483 DWORD Reserved_0:1; 1484 DWORD Default_Big:1; 1485 DWORD Granularity:1; 1486 DWORD BaseHi:8; 1487 } 1488 } 1489 +/ 1490 } 1491 alias LDT_ENTRY* PLDT_ENTRY, LPLDT_ENTRY; 1492 1493 /* As with the other memory management functions and structures, MSDN's 1494 * Windows version info shall be taken with a cup of salt. 1495 */ 1496 struct PROCESS_HEAP_ENTRY { 1497 PVOID lpData; 1498 DWORD cbData; 1499 BYTE cbOverhead; 1500 BYTE iRegionIndex; 1501 WORD wFlags; 1502 union { 1503 struct Block { 1504 HANDLE hMem; 1505 DWORD[3] dwReserved; 1506 } 1507 struct Region { 1508 DWORD dwCommittedSize; 1509 DWORD dwUnCommittedSize; 1510 LPVOID lpFirstBlock; 1511 LPVOID lpLastBlock; 1512 } 1513 } 1514 } 1515 alias PROCESS_HEAP_ENTRY* LPPROCESS_HEAP_ENTRY; 1516 1517 struct OFSTRUCT { 1518 BYTE cBytes = OFSTRUCT.sizeof; 1519 BYTE fFixedDisk; 1520 WORD nErrCode; 1521 WORD Reserved1; 1522 WORD Reserved2; 1523 CHAR[128] szPathName; // const OFS_MAXPATHNAME = 128; 1524 } 1525 alias OFSTRUCT* LPOFSTRUCT, POFSTRUCT; 1526 1527 /* ??? MSDN documents this only for Windows CE, but it's used by 1528 * ImageGetCertificateData, which is in desktop Windows. 1529 */ 1530 struct WIN_CERTIFICATE { 1531 DWORD dwLength; 1532 WORD wRevision; 1533 WORD wCertificateType; 1534 BYTE _bCertificate; 1535 1536 BYTE* bCertificate() return scope { return &_bCertificate; } 1537 } 1538 alias WIN_CERTIFICATE* LPWIN_CERTIFICATE; 1539 1540 static if (_WIN32_WINNT >= 0x500) { 1541 enum COMPUTER_NAME_FORMAT { 1542 ComputerNameNetBIOS, 1543 ComputerNameDnsHostname, 1544 ComputerNameDnsDomain, 1545 ComputerNameDnsFullyQualified, 1546 ComputerNamePhysicalNetBIOS, 1547 ComputerNamePhysicalDnsHostname, 1548 ComputerNamePhysicalDnsDomain, 1549 ComputerNamePhysicalDnsFullyQualified, 1550 ComputerNameMax 1551 } 1552 } 1553 1554 static if (_WIN32_WINNT >= 0x501) { 1555 struct ACTCTXA { 1556 ULONG cbSize = this.sizeof; 1557 DWORD dwFlags; 1558 LPCSTR lpSource; 1559 USHORT wProcessorArchitecture; 1560 LANGID wLangId; 1561 LPCSTR lpAssemblyDirectory; 1562 LPCSTR lpResourceName; 1563 LPCSTR lpApplicationName; 1564 HMODULE hModule; 1565 } 1566 alias ACTCTXA* PACTCTXA; 1567 alias const(ACTCTXA)* PCACTCTXA; 1568 1569 struct ACTCTXW { 1570 ULONG cbSize = this.sizeof; 1571 DWORD dwFlags; 1572 LPCWSTR lpSource; 1573 USHORT wProcessorArchitecture; 1574 LANGID wLangId; 1575 LPCWSTR lpAssemblyDirectory; 1576 LPCWSTR lpResourceName; 1577 LPCWSTR lpApplicationName; 1578 HMODULE hModule; 1579 } 1580 alias ACTCTXW* PACTCTXW; 1581 alias const(ACTCTXW)* PCACTCTXW; 1582 1583 struct ACTCTX_SECTION_KEYED_DATA { 1584 ULONG cbSize = this.sizeof; 1585 ULONG ulDataFormatVersion; 1586 PVOID lpData; 1587 ULONG ulLength; 1588 PVOID lpSectionGlobalData; 1589 ULONG ulSectionGlobalDataLength; 1590 PVOID lpSectionBase; 1591 ULONG ulSectionTotalLength; 1592 HANDLE hActCtx; 1593 HANDLE ulAssemblyRosterIndex; 1594 } 1595 alias ACTCTX_SECTION_KEYED_DATA* PACTCTX_SECTION_KEYED_DATA; 1596 alias const(ACTCTX_SECTION_KEYED_DATA)* PCACTCTX_SECTION_KEYED_DATA; 1597 1598 enum MEMORY_RESOURCE_NOTIFICATION_TYPE { 1599 LowMemoryResourceNotification, 1600 HighMemoryResourceNotification 1601 } 1602 1603 } // (_WIN32_WINNT >= 0x501) 1604 1605 static if (_WIN32_WINNT >= 0x410) { 1606 /* apparently used only by SetThreadExecutionState (Win2000+) 1607 * and DDK functions (version compatibility not established) 1608 */ 1609 alias DWORD EXECUTION_STATE; 1610 } 1611 1612 // Callbacks 1613 extern (Windows) { 1614 alias DWORD function(LPVOID) LPTHREAD_START_ROUTINE; 1615 alias DWORD function(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, 1616 DWORD, DWORD, HANDLE, HANDLE, LPVOID) LPPROGRESS_ROUTINE; 1617 alias void function(PVOID) LPFIBER_START_ROUTINE; 1618 1619 alias BOOL function(HMODULE, LPCSTR, LPCSTR, WORD, LONG) ENUMRESLANGPROCA; 1620 alias BOOL function(HMODULE, LPCWSTR, LPCWSTR, WORD, LONG) ENUMRESLANGPROCW; 1621 alias BOOL function(HMODULE, LPCSTR, LPSTR, LONG) ENUMRESNAMEPROCA; 1622 alias BOOL function(HMODULE, LPCWSTR, LPWSTR, LONG) ENUMRESNAMEPROCW; 1623 alias BOOL function(HMODULE, LPSTR, LONG) ENUMRESTYPEPROCA; 1624 alias BOOL function(HMODULE, LPWSTR, LONG) ENUMRESTYPEPROCW; 1625 alias void function(DWORD, DWORD, LPOVERLAPPED) LPOVERLAPPED_COMPLETION_ROUTINE; 1626 alias LONG function(LPEXCEPTION_POINTERS) PTOP_LEVEL_EXCEPTION_FILTER; 1627 alias PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; 1628 1629 alias void function(ULONG_PTR) PAPCFUNC; 1630 alias void function(PVOID, DWORD, DWORD) PTIMERAPCROUTINE; 1631 1632 static if (_WIN32_WINNT >= 0x500) { 1633 alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACK; 1634 } 1635 } 1636 1637 LPTSTR MAKEINTATOM()(ushort i) { 1638 return cast(LPTSTR) cast(size_t) i; 1639 } 1640 1641 extern (Windows) { 1642 HRESULT StringCchPrintf(LPWSTR, size_t, LPCWSTR, LPCWSTR, ...); 1643 ATOM AddAtomA(LPCSTR); 1644 ATOM AddAtomW(LPCWSTR); 1645 BOOL AreFileApisANSI(); 1646 BOOL Beep(DWORD, DWORD); 1647 HANDLE BeginUpdateResourceA(LPCSTR, BOOL); 1648 HANDLE BeginUpdateResourceW(LPCWSTR, BOOL); 1649 BOOL BuildCommDCBA(LPCSTR, LPDCB); 1650 BOOL BuildCommDCBW(LPCWSTR, LPDCB); 1651 BOOL BuildCommDCBAndTimeoutsA(LPCSTR, LPDCB, LPCOMMTIMEOUTS); 1652 BOOL BuildCommDCBAndTimeoutsW(LPCWSTR, LPDCB, LPCOMMTIMEOUTS); 1653 BOOL CallNamedPipeA(LPCSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); 1654 BOOL CallNamedPipeW(LPCWSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); 1655 BOOL CancelDeviceWakeupRequest(HANDLE); 1656 BOOL CheckTokenMembership(HANDLE, PSID, PBOOL); 1657 BOOL ClearCommBreak(HANDLE); 1658 BOOL ClearCommError(HANDLE, PDWORD, LPCOMSTAT); 1659 BOOL CloseHandle(HANDLE); 1660 BOOL CommConfigDialogA(LPCSTR, HWND, LPCOMMCONFIG); 1661 BOOL CommConfigDialogW(LPCWSTR, HWND, LPCOMMCONFIG); 1662 LONG CompareFileTime(const(FILETIME)*, const(FILETIME)*); 1663 BOOL ContinueDebugEvent(DWORD, DWORD, DWORD); 1664 BOOL CopyFileA(LPCSTR, LPCSTR, BOOL); 1665 BOOL CopyFileW(LPCWSTR, LPCWSTR, BOOL); 1666 BOOL CopyFileExA(LPCSTR, LPCSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); 1667 BOOL CopyFileExW(LPCWSTR, LPCWSTR, LPPROGRESS_ROUTINE, LPVOID, LPBOOL, DWORD); 1668 1669 /+ FIXME 1670 alias memmove RtlMoveMemory; 1671 alias memcpy RtlCopyMemory; 1672 1673 void RtlFillMemory(PVOID dest, SIZE_T len, BYTE fill) { 1674 memset(dest, fill, len); 1675 } 1676 1677 void RtlZeroMemory(PVOID dest, SIZE_T len) { 1678 RtlFillMemory(dest, len, 0); 1679 } 1680 1681 alias RtlMoveMemory MoveMemory; 1682 alias RtlCopyMemory CopyMemory; 1683 alias RtlFillMemory FillMemory; 1684 alias RtlZeroMemory ZeroMemory; 1685 +/ 1686 BOOL CreateDirectoryA(LPCSTR, LPSECURITY_ATTRIBUTES); 1687 BOOL CreateDirectoryW(LPCWSTR, LPSECURITY_ATTRIBUTES); 1688 BOOL CreateDirectoryExA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); 1689 BOOL CreateDirectoryExW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); 1690 HANDLE CreateEventA(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCSTR); 1691 HANDLE CreateEventW(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCWSTR); 1692 HANDLE CreateFileA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); 1693 HANDLE CreateFileW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); 1694 HANDLE CreateIoCompletionPort(HANDLE, HANDLE, ULONG_PTR, DWORD); 1695 HANDLE CreateMailslotA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); 1696 HANDLE CreateMailslotW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); 1697 HANDLE CreateMutexA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); 1698 HANDLE CreateMutexW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); 1699 BOOL CreatePipe(PHANDLE, PHANDLE, LPSECURITY_ATTRIBUTES, DWORD); 1700 BOOL CreateProcessA(LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); 1701 BOOL CreateProcessW(LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); 1702 HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCSTR); 1703 HANDLE CreateSemaphoreW(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCWSTR); 1704 HANDLE CreateThread(LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, PVOID, DWORD, PDWORD); 1705 BOOL DebugActiveProcess(DWORD); 1706 void DebugBreak(); 1707 ATOM DeleteAtom(ATOM); 1708 void DeleteCriticalSection(PCRITICAL_SECTION); 1709 BOOL DeleteFileA(LPCSTR); 1710 BOOL DeleteFileW(LPCWSTR); 1711 BOOL DisableThreadLibraryCalls(HMODULE); 1712 BOOL DosDateTimeToFileTime(WORD, WORD, LPFILETIME); 1713 BOOL DuplicateHandle(HANDLE, HANDLE, HANDLE, PHANDLE, DWORD, BOOL, DWORD); 1714 BOOL EndUpdateResourceA(HANDLE, BOOL); 1715 BOOL EndUpdateResourceW(HANDLE, BOOL); 1716 void EnterCriticalSection(LPCRITICAL_SECTION); 1717 BOOL EnumResourceLanguagesA(HMODULE, LPCSTR, LPCSTR, ENUMRESLANGPROC, LONG_PTR); 1718 BOOL EnumResourceLanguagesW(HMODULE, LPCWSTR, LPCWSTR, ENUMRESLANGPROC, LONG_PTR); 1719 BOOL EnumResourceNamesA(HMODULE, LPCSTR, ENUMRESNAMEPROC, LONG_PTR); 1720 BOOL EnumResourceNamesW(HMODULE, LPCWSTR, ENUMRESNAMEPROC, LONG_PTR); 1721 BOOL EnumResourceTypesA(HMODULE, ENUMRESTYPEPROC, LONG_PTR); 1722 BOOL EnumResourceTypesW(HMODULE, ENUMRESTYPEPROC, LONG_PTR); 1723 BOOL EscapeCommFunction(HANDLE, DWORD); 1724 void ExitProcess(UINT); // Never returns 1725 void ExitThread(DWORD); // Never returns 1726 DWORD ExpandEnvironmentStringsA(LPCSTR, LPSTR, DWORD); 1727 DWORD ExpandEnvironmentStringsW(LPCWSTR, LPWSTR, DWORD); 1728 void FatalAppExitA(UINT, LPCSTR); 1729 void FatalAppExitW(UINT, LPCWSTR); 1730 void FatalExit(int); 1731 BOOL FileTimeToDosDateTime(const(FILETIME)*, LPWORD, LPWORD); 1732 BOOL FileTimeToLocalFileTime(const(FILETIME)*, LPFILETIME); 1733 BOOL FileTimeToSystemTime(const(FILETIME)*, LPSYSTEMTIME); 1734 ATOM FindAtomA(LPCSTR); 1735 ATOM FindAtomW(LPCWSTR); 1736 BOOL FindClose(HANDLE); 1737 BOOL FindCloseChangeNotification(HANDLE); 1738 HANDLE FindFirstChangeNotificationA(LPCSTR, BOOL, DWORD); 1739 HANDLE FindFirstChangeNotificationW(LPCWSTR, BOOL, DWORD); 1740 HANDLE FindFirstFileA(LPCSTR, LPWIN32_FIND_DATAA); 1741 HANDLE FindFirstFileW(LPCWSTR, LPWIN32_FIND_DATAW); 1742 BOOL FindNextChangeNotification(HANDLE); 1743 BOOL FindNextFileA(HANDLE, LPWIN32_FIND_DATAA); 1744 BOOL FindNextFileW(HANDLE, LPWIN32_FIND_DATAW); 1745 HRSRC FindResourceA(HMODULE, LPCSTR, LPCSTR); 1746 HRSRC FindResourceW(HINSTANCE, LPCWSTR, LPCWSTR); 1747 HRSRC FindResourceExA(HINSTANCE, LPCSTR, LPCSTR, WORD); 1748 HRSRC FindResourceExW(HINSTANCE, LPCWSTR, LPCWSTR, WORD); 1749 BOOL FlushFileBuffers(HANDLE); 1750 BOOL FlushInstructionCache(HANDLE, PCVOID, DWORD); 1751 DWORD FormatMessageA(DWORD, PCVOID, DWORD, DWORD, LPSTR, DWORD, va_list*); 1752 DWORD FormatMessageW(DWORD, PCVOID, DWORD, DWORD, LPWSTR, DWORD, va_list*); 1753 BOOL FreeEnvironmentStringsA(LPSTR); 1754 BOOL FreeEnvironmentStringsW(LPWSTR); 1755 BOOL FreeLibrary(HMODULE); 1756 void FreeLibraryAndExitThread(HMODULE, DWORD); // never returns 1757 BOOL FreeResource(HGLOBAL); 1758 UINT GetAtomNameA(ATOM, LPSTR, int); 1759 UINT GetAtomNameW(ATOM, LPWSTR, int); 1760 LPSTR GetCommandLineA(); 1761 LPWSTR GetCommandLineW(); 1762 BOOL GetCommConfig(HANDLE, LPCOMMCONFIG, PDWORD); 1763 BOOL GetCommMask(HANDLE, PDWORD); 1764 BOOL GetCommModemStatus(HANDLE, PDWORD); 1765 BOOL GetCommProperties(HANDLE, LPCOMMPROP); 1766 BOOL GetCommState(HANDLE, LPDCB); 1767 BOOL GetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); 1768 BOOL GetComputerNameA(LPSTR, PDWORD); 1769 BOOL GetComputerNameW(LPWSTR, PDWORD); 1770 DWORD GetCurrentDirectoryA(DWORD, LPSTR); 1771 DWORD GetCurrentDirectoryW(DWORD, LPWSTR); 1772 HANDLE GetCurrentProcess(); 1773 DWORD GetCurrentProcessId(); 1774 HANDLE GetCurrentThread(); 1775 /* In MinGW: 1776 #ifdef _WIN32_WCE 1777 extern DWORD GetCurrentThreadId(void); 1778 #else 1779 WINBASEAPI DWORD WINAPI GetCurrentThreadId(void); 1780 #endif 1781 */ 1782 DWORD GetCurrentThreadId(); 1783 1784 alias GetTickCount GetCurrentTime; 1785 1786 BOOL GetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, PDWORD); 1787 BOOL GetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, PDWORD); 1788 BOOL GetDiskFreeSpaceA(LPCSTR, PDWORD, PDWORD, PDWORD, PDWORD); 1789 BOOL GetDiskFreeSpaceW(LPCWSTR, PDWORD, PDWORD, PDWORD, PDWORD); 1790 BOOL GetDiskFreeSpaceExA(LPCSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); 1791 BOOL GetDiskFreeSpaceExW(LPCWSTR, PULARGE_INTEGER, PULARGE_INTEGER, PULARGE_INTEGER); 1792 UINT GetDriveTypeA(LPCSTR); 1793 UINT GetDriveTypeW(LPCWSTR); 1794 LPSTR GetEnvironmentStrings(); // ??? 1795 LPSTR GetEnvironmentStringsA(); 1796 LPWSTR GetEnvironmentStringsW(); 1797 DWORD GetEnvironmentVariableA(LPCSTR, LPSTR, DWORD); 1798 DWORD GetEnvironmentVariableW(LPCWSTR, LPWSTR, DWORD); 1799 BOOL GetExitCodeProcess(HANDLE, PDWORD); 1800 BOOL GetExitCodeThread(HANDLE, PDWORD); 1801 DWORD GetFileAttributesA(LPCSTR); 1802 DWORD GetFileAttributesW(LPCWSTR); 1803 BOOL GetFileInformationByHandle(HANDLE, LPBY_HANDLE_FILE_INFORMATION); 1804 DWORD GetFileSize(HANDLE, PDWORD); 1805 BOOL GetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); 1806 DWORD GetFileType(HANDLE); 1807 DWORD GetFullPathNameA(LPCSTR, DWORD, LPSTR, LPSTR*); 1808 DWORD GetFullPathNameW(LPCWSTR, DWORD, LPWSTR, LPWSTR*); 1809 DWORD GetLastError(); 1810 void GetLocalTime(LPSYSTEMTIME); 1811 DWORD GetLogicalDrives(); 1812 DWORD GetLogicalDriveStringsA(DWORD, LPSTR); 1813 DWORD GetLogicalDriveStringsW(DWORD, LPWSTR); 1814 BOOL GetMailslotInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); 1815 DWORD GetModuleFileNameA(HINSTANCE, LPSTR, DWORD); 1816 DWORD GetModuleFileNameW(HINSTANCE, LPWSTR, DWORD); 1817 HMODULE GetModuleHandleA(LPCSTR); 1818 HMODULE GetModuleHandleW(LPCWSTR); 1819 BOOL GetNamedPipeHandleStateA(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); 1820 BOOL GetNamedPipeHandleStateW(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); 1821 BOOL GetNamedPipeInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); 1822 BOOL GetOverlappedResult(HANDLE, LPOVERLAPPED, PDWORD, BOOL); 1823 DWORD GetPriorityClass(HANDLE); 1824 UINT GetPrivateProfileIntA(LPCSTR, LPCSTR, INT, LPCSTR); 1825 UINT GetPrivateProfileIntW(LPCWSTR, LPCWSTR, INT, LPCWSTR); 1826 DWORD GetPrivateProfileSectionA(LPCSTR, LPSTR, DWORD, LPCSTR); 1827 DWORD GetPrivateProfileSectionW(LPCWSTR, LPWSTR, DWORD, LPCWSTR); 1828 DWORD GetPrivateProfileSectionNamesA(LPSTR, DWORD, LPCSTR); 1829 DWORD GetPrivateProfileSectionNamesW(LPWSTR, DWORD, LPCWSTR); 1830 DWORD GetPrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD, LPCSTR); 1831 DWORD GetPrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD, LPCWSTR); 1832 BOOL GetPrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); 1833 BOOL GetPrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); 1834 FARPROC GetProcAddress(HINSTANCE, LPCSTR); 1835 BOOL GetProcessAffinityMask(HANDLE, PDWORD, PDWORD); 1836 DWORD GetProcessVersion(DWORD); 1837 UINT GetProfileIntA(LPCSTR, LPCSTR, INT); 1838 UINT GetProfileIntW(LPCWSTR, LPCWSTR, INT); 1839 DWORD GetProfileSectionA(LPCSTR, LPSTR, DWORD); 1840 DWORD GetProfileSectionW(LPCWSTR, LPWSTR, DWORD); 1841 DWORD GetProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD); 1842 DWORD GetProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD); 1843 DWORD GetShortPathNameA(LPCSTR, LPSTR, DWORD); 1844 DWORD GetShortPathNameW(LPCWSTR, LPWSTR, DWORD); 1845 VOID GetStartupInfoA(LPSTARTUPINFOA); 1846 VOID GetStartupInfoW(LPSTARTUPINFOW); 1847 HANDLE GetStdHandle(DWORD); 1848 UINT GetSystemDirectoryA(LPSTR, UINT); 1849 UINT GetSystemDirectoryW(LPWSTR, UINT); 1850 VOID GetSystemInfo(LPSYSTEM_INFO); 1851 VOID GetSystemTime(LPSYSTEMTIME); 1852 BOOL GetSystemTimeAdjustment(PDWORD, PDWORD, PBOOL); 1853 void GetSystemTimeAsFileTime(LPFILETIME); 1854 UINT GetTempFileNameA(LPCSTR, LPCSTR, UINT, LPSTR); 1855 UINT GetTempFileNameW(LPCWSTR, LPCWSTR, UINT, LPWSTR); 1856 DWORD GetTempPathA(DWORD, LPSTR); 1857 DWORD GetTempPathW(DWORD, LPWSTR); 1858 BOOL GetThreadContext(HANDLE, LPCONTEXT); 1859 int GetThreadPriority(HANDLE); 1860 BOOL GetThreadSelectorEntry(HANDLE, DWORD, LPLDT_ENTRY); 1861 DWORD GetTickCount(); 1862 DWORD GetTimeZoneInformation(LPTIME_ZONE_INFORMATION); 1863 BOOL GetUserNameA (LPSTR, PDWORD); 1864 BOOL GetUserNameW(LPWSTR, PDWORD); 1865 DWORD GetVersion(); 1866 BOOL GetVersionExA(LPOSVERSIONINFOA); 1867 BOOL GetVersionExW(LPOSVERSIONINFOW); 1868 BOOL GetVolumeInformationA(LPCSTR, LPSTR, DWORD, PDWORD, PDWORD, PDWORD, LPSTR, DWORD); 1869 BOOL GetVolumeInformationW(LPCWSTR, LPWSTR, DWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); 1870 UINT GetWindowsDirectoryA(LPSTR, UINT); 1871 UINT GetWindowsDirectoryW(LPWSTR, UINT); 1872 DWORD GetWindowThreadProcessId(HWND, PDWORD); 1873 ATOM GlobalAddAtomA(LPCSTR); 1874 ATOM GlobalAddAtomW(LPCWSTR); 1875 ATOM GlobalDeleteAtom(ATOM); 1876 ATOM GlobalFindAtomA(LPCSTR); 1877 ATOM GlobalFindAtomW(LPCWSTR); 1878 UINT GlobalGetAtomNameA(ATOM, LPSTR, int); 1879 UINT GlobalGetAtomNameW(ATOM, LPWSTR, int); 1880 1881 bool HasOverlappedIoCompleted(LPOVERLAPPED lpOverlapped) { 1882 return lpOverlapped.Internal != STATUS_PENDING; 1883 } 1884 1885 BOOL InitAtomTable(DWORD); 1886 VOID InitializeCriticalSection(LPCRITICAL_SECTION); 1887 /* ??? The next two are allegedly obsolete and "supported only for 1888 * backward compatibility with the 16-bit Windows API". Yet the 1889 * replacements IsBadReadPtr and IsBadWritePtr are apparently Win2000+ 1890 * only. Where's the mistake? 1891 */ 1892 BOOL IsBadHugeReadPtr(PCVOID, UINT_PTR); 1893 BOOL IsBadHugeWritePtr(PVOID, UINT_PTR); 1894 BOOL IsBadReadPtr(PCVOID, UINT_PTR); 1895 BOOL IsBadStringPtrA(LPCSTR, UINT_PTR); 1896 BOOL IsBadStringPtrW(LPCWSTR, UINT_PTR); 1897 BOOL IsBadWritePtr(PVOID, UINT_PTR); 1898 void LeaveCriticalSection(LPCRITICAL_SECTION); 1899 HINSTANCE LoadLibraryA(LPCSTR); 1900 HINSTANCE LoadLibraryW(LPCWSTR); 1901 HINSTANCE LoadLibraryExA(LPCSTR, HANDLE, DWORD); 1902 HINSTANCE LoadLibraryExW(LPCWSTR, HANDLE, DWORD); 1903 DWORD LoadModule(LPCSTR, PVOID); 1904 HGLOBAL LoadResource(HINSTANCE, HRSRC); 1905 BOOL LocalFileTimeToFileTime(const(FILETIME)*, LPFILETIME); 1906 BOOL LockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); 1907 PVOID LockResource(HGLOBAL); 1908 1909 LPSTR lstrcatA(LPSTR, LPCSTR); 1910 LPWSTR lstrcatW(LPWSTR, LPCWSTR); 1911 int lstrcmpA(LPCSTR, LPCSTR); 1912 int lstrcmpiA(LPCSTR, LPCSTR); 1913 int lstrcmpiW(LPCWSTR, LPCWSTR); 1914 int lstrcmpW(LPCWSTR, LPCWSTR); 1915 LPSTR lstrcpyA(LPSTR, LPCSTR); 1916 LPSTR lstrcpynA(LPSTR, LPCSTR, int); 1917 LPWSTR lstrcpynW(LPWSTR, LPCWSTR, int); 1918 LPWSTR lstrcpyW(LPWSTR, LPCWSTR); 1919 int lstrlenA(LPCSTR); 1920 int lstrlenW(LPCWSTR); 1921 1922 BOOL MoveFileA(LPCSTR, LPCSTR); 1923 BOOL MoveFileW(LPCWSTR, LPCWSTR); 1924 int MulDiv(int, int, int); 1925 HANDLE OpenEventA(DWORD, BOOL, LPCSTR); 1926 HANDLE OpenEventW(DWORD, BOOL, LPCWSTR); 1927 deprecated HFILE OpenFile(LPCSTR, LPOFSTRUCT, UINT); 1928 HANDLE OpenMutexA(DWORD, BOOL, LPCSTR); 1929 HANDLE OpenMutexW(DWORD, BOOL, LPCWSTR); 1930 HANDLE OpenProcess(DWORD, BOOL, DWORD); 1931 HANDLE OpenSemaphoreA(DWORD, BOOL, LPCSTR); 1932 HANDLE OpenSemaphoreW(DWORD, BOOL, LPCWSTR); 1933 void OutputDebugStringA(LPCSTR); 1934 void OutputDebugStringW(LPCWSTR); 1935 BOOL PeekNamedPipe(HANDLE, PVOID, DWORD, PDWORD, PDWORD, PDWORD); 1936 BOOL PulseEvent(HANDLE); 1937 BOOL PurgeComm(HANDLE, DWORD); 1938 BOOL QueryPerformanceCounter(PLARGE_INTEGER); 1939 BOOL QueryPerformanceFrequency(PLARGE_INTEGER); 1940 DWORD QueueUserAPC(PAPCFUNC, HANDLE, ULONG_PTR); 1941 void RaiseException(DWORD, DWORD, DWORD, const(DWORD)*); 1942 BOOL ReadFile(HANDLE, PVOID, DWORD, PDWORD, LPOVERLAPPED); 1943 BOOL ReadFileEx(HANDLE, PVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); 1944 BOOL ReadProcessMemory(HANDLE, PCVOID, PVOID, SIZE_T, SIZE_T*); 1945 BOOL ReleaseMutex(HANDLE); 1946 BOOL ReleaseSemaphore(HANDLE, LONG, LPLONG); 1947 BOOL RemoveDirectoryA(LPCSTR); 1948 BOOL RemoveDirectoryW(LPCWSTR); 1949 /* In MinGW: 1950 #ifdef _WIN32_WCE 1951 extern BOOL ResetEvent(HANDLE); 1952 #else 1953 WINBASEAPI BOOL WINAPI ResetEvent(HANDLE); 1954 #endif 1955 */ 1956 BOOL ResetEvent(HANDLE); 1957 DWORD ResumeThread(HANDLE); 1958 DWORD SearchPathA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPSTR, LPSTR*); 1959 DWORD SearchPathW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPWSTR*); 1960 BOOL SetCommBreak(HANDLE); 1961 BOOL SetCommConfig(HANDLE, LPCOMMCONFIG, DWORD); 1962 BOOL SetCommMask(HANDLE, DWORD); 1963 BOOL SetCommState(HANDLE, LPDCB); 1964 BOOL SetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); 1965 BOOL SetComputerNameA(LPCSTR); 1966 BOOL SetComputerNameW(LPCWSTR); 1967 BOOL SetCurrentDirectoryA(LPCSTR); 1968 BOOL SetCurrentDirectoryW(LPCWSTR); 1969 BOOL SetDefaultCommConfigA(LPCSTR, LPCOMMCONFIG, DWORD); 1970 BOOL SetDefaultCommConfigW(LPCWSTR, LPCOMMCONFIG, DWORD); 1971 BOOL SetEndOfFile(HANDLE); 1972 BOOL SetEnvironmentVariableA(LPCSTR, LPCSTR); 1973 BOOL SetEnvironmentVariableW(LPCWSTR, LPCWSTR); 1974 UINT SetErrorMode(UINT); 1975 /* In MinGW: 1976 #ifdef _WIN32_WCE 1977 extern BOOL SetEvent(HANDLE); 1978 #else 1979 WINBASEAPI BOOL WINAPI SetEvent(HANDLE); 1980 #endif 1981 */ 1982 BOOL SetEvent(HANDLE); 1983 VOID SetFileApisToANSI(); 1984 VOID SetFileApisToOEM(); 1985 BOOL SetFileAttributesA(LPCSTR, DWORD); 1986 BOOL SetFileAttributesW(LPCWSTR, DWORD); 1987 DWORD SetFilePointer(HANDLE, LONG, PLONG, DWORD); 1988 BOOL SetFileTime(HANDLE, const(FILETIME)*, const(FILETIME)*, const(FILETIME)*); 1989 deprecated UINT SetHandleCount(UINT); 1990 void SetLastError(DWORD); 1991 void SetLastErrorEx(DWORD, DWORD); 1992 BOOL SetLocalTime(const(SYSTEMTIME)*); 1993 BOOL SetMailslotInfo(HANDLE, DWORD); 1994 BOOL SetNamedPipeHandleState(HANDLE, PDWORD, PDWORD, PDWORD); 1995 BOOL SetPriorityClass(HANDLE, DWORD); 1996 BOOL SetStdHandle(DWORD, HANDLE); 1997 BOOL SetSystemTime(const(SYSTEMTIME)*); 1998 DWORD SetThreadAffinityMask(HANDLE, DWORD); 1999 BOOL SetThreadContext(HANDLE, const(CONTEXT)*); 2000 BOOL SetThreadPriority(HANDLE, int); 2001 BOOL SetTimeZoneInformation(const(TIME_ZONE_INFORMATION)*); 2002 LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER); 2003 BOOL SetupComm(HANDLE, DWORD, DWORD); 2004 BOOL SetVolumeLabelA(LPCSTR, LPCSTR); 2005 BOOL SetVolumeLabelW(LPCWSTR, LPCWSTR); 2006 2007 DWORD SizeofResource(HINSTANCE, HRSRC); 2008 void Sleep(DWORD); 2009 DWORD SleepEx(DWORD, BOOL); 2010 DWORD SuspendThread(HANDLE); 2011 BOOL SystemTimeToFileTime(const(SYSTEMTIME)*, LPFILETIME); 2012 BOOL TerminateProcess(HANDLE, UINT); 2013 BOOL TerminateThread(HANDLE, DWORD); 2014 DWORD TlsAlloc(); 2015 BOOL TlsFree(DWORD); 2016 PVOID TlsGetValue(DWORD); 2017 BOOL TlsSetValue(DWORD, PVOID); 2018 BOOL TransactNamedPipe(HANDLE, PVOID, DWORD, PVOID, DWORD, PDWORD, LPOVERLAPPED); 2019 BOOL TransmitCommChar(HANDLE, char); 2020 LONG UnhandledExceptionFilter(LPEXCEPTION_POINTERS); 2021 BOOL UnlockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); 2022 BOOL WaitCommEvent(HANDLE, PDWORD, LPOVERLAPPED); 2023 BOOL WaitForDebugEvent(LPDEBUG_EVENT, DWORD); 2024 DWORD WaitForMultipleObjects(DWORD, const(HANDLE)*, BOOL, DWORD); 2025 DWORD WaitForMultipleObjectsEx(DWORD, const(HANDLE)*, BOOL, DWORD, BOOL); 2026 DWORD WaitForSingleObject(HANDLE, DWORD); 2027 DWORD WaitForSingleObjectEx(HANDLE, DWORD, BOOL); 2028 BOOL WaitNamedPipeA(LPCSTR, DWORD); 2029 BOOL WaitNamedPipeW(LPCWSTR, DWORD); 2030 // undocumented on MSDN 2031 BOOL WinLoadTrustProvider(GUID*); 2032 BOOL WriteFile(HANDLE, PCVOID, DWORD, PDWORD, LPOVERLAPPED); 2033 BOOL WriteFileEx(HANDLE, PCVOID, DWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); 2034 BOOL WritePrivateProfileSectionA(LPCSTR, LPCSTR, LPCSTR); 2035 BOOL WritePrivateProfileSectionW(LPCWSTR, LPCWSTR, LPCWSTR); 2036 BOOL WritePrivateProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPCSTR); 2037 BOOL WritePrivateProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPCWSTR); 2038 BOOL WritePrivateProfileStructA(LPCSTR, LPCSTR, LPVOID, UINT, LPCSTR); 2039 BOOL WritePrivateProfileStructW(LPCWSTR, LPCWSTR, LPVOID, UINT, LPCWSTR); 2040 BOOL WriteProcessMemory(HANDLE, LPVOID, LPCVOID, SIZE_T, SIZE_T*); 2041 BOOL WriteProfileSectionA(LPCSTR, LPCSTR); 2042 BOOL WriteProfileSectionW(LPCWSTR, LPCWSTR); 2043 BOOL WriteProfileStringA(LPCSTR, LPCSTR, LPCSTR); 2044 BOOL WriteProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR); 2045 2046 /* Memory allocation functions. 2047 * MSDN documents these erroneously as Win2000+; thus it is uncertain what 2048 * version compatibility they really have. 2049 */ 2050 HGLOBAL GlobalAlloc(UINT, DWORD); 2051 HGLOBAL GlobalDiscard(HGLOBAL); 2052 HGLOBAL GlobalFree(HGLOBAL); 2053 HGLOBAL GlobalHandle(PCVOID); 2054 LPVOID GlobalLock(HGLOBAL); 2055 VOID GlobalMemoryStatus(LPMEMORYSTATUS); 2056 HGLOBAL GlobalReAlloc(HGLOBAL, DWORD, UINT); 2057 DWORD GlobalSize(HGLOBAL); 2058 BOOL GlobalUnlock(HGLOBAL); 2059 PVOID HeapAlloc(HANDLE, DWORD, DWORD); 2060 SIZE_T HeapCompact(HANDLE, DWORD); 2061 HANDLE HeapCreate(DWORD, DWORD, DWORD); 2062 BOOL HeapDestroy(HANDLE); 2063 BOOL HeapFree(HANDLE, DWORD, PVOID); 2064 BOOL HeapLock(HANDLE); 2065 PVOID HeapReAlloc(HANDLE, DWORD, PVOID, DWORD); 2066 DWORD HeapSize(HANDLE, DWORD, PCVOID); 2067 BOOL HeapUnlock(HANDLE); 2068 BOOL HeapValidate(HANDLE, DWORD, PCVOID); 2069 BOOL HeapWalk(HANDLE, LPPROCESS_HEAP_ENTRY); 2070 HLOCAL LocalAlloc(UINT, SIZE_T); 2071 HLOCAL LocalDiscard(HLOCAL); 2072 HLOCAL LocalFree(HLOCAL); 2073 HLOCAL LocalHandle(LPCVOID); 2074 PVOID LocalLock(HLOCAL); 2075 HLOCAL LocalReAlloc(HLOCAL, SIZE_T, UINT); 2076 UINT LocalSize(HLOCAL); 2077 BOOL LocalUnlock(HLOCAL); 2078 PVOID VirtualAlloc(PVOID, DWORD, DWORD, DWORD); 2079 PVOID VirtualAllocEx(HANDLE, PVOID, DWORD, DWORD, DWORD); 2080 BOOL VirtualFree(PVOID, DWORD, DWORD); 2081 BOOL VirtualFreeEx(HANDLE, PVOID, DWORD, DWORD); 2082 BOOL VirtualLock(PVOID, DWORD); 2083 BOOL VirtualProtect(PVOID, DWORD, DWORD, PDWORD); 2084 BOOL VirtualProtectEx(HANDLE, PVOID, DWORD, DWORD, PDWORD); 2085 DWORD VirtualQuery(LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); 2086 DWORD VirtualQueryEx(HANDLE, LPCVOID, PMEMORY_BASIC_INFORMATION, DWORD); 2087 BOOL VirtualUnlock(PVOID, DWORD); 2088 // not in MinGW 4.0 - ??? 2089 static if (_WIN32_WINNT >= 0x600) { 2090 BOOL GetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, LPVOID, DWORD, PDWORD); 2091 BOOL CancelIoEx(HANDLE, LPOVERLAPPED); 2092 } 2093 2094 BOOL CancelIo(HANDLE); 2095 BOOL CancelWaitableTimer(HANDLE); 2096 PVOID ConvertThreadToFiber(PVOID); 2097 LPVOID CreateFiber(SIZE_T, LPFIBER_START_ROUTINE, LPVOID); 2098 HANDLE CreateWaitableTimerA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); 2099 HANDLE CreateWaitableTimerW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); 2100 void DeleteFiber(PVOID); 2101 BOOL GetFileAttributesExA(LPCSTR, GET_FILEEX_INFO_LEVELS, PVOID); 2102 BOOL GetFileAttributesExW(LPCWSTR, GET_FILEEX_INFO_LEVELS, PVOID); 2103 DWORD GetLongPathNameA(LPCSTR, LPSTR, DWORD); 2104 DWORD GetLongPathNameW(LPCWSTR, LPWSTR, DWORD); 2105 BOOL InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION, DWORD); 2106 BOOL IsDebuggerPresent(); 2107 HANDLE OpenWaitableTimerA(DWORD, BOOL, LPCSTR); 2108 HANDLE OpenWaitableTimerW(DWORD, BOOL, LPCWSTR); 2109 DWORD QueryDosDeviceA(LPCSTR, LPSTR, DWORD); 2110 DWORD QueryDosDeviceW(LPCWSTR, LPWSTR, DWORD); 2111 version(LDC){}else BOOL SetWaitableTimer(HANDLE, const(LARGE_INTEGER)*, LONG, PTIMERAPCROUTINE, PVOID, BOOL); 2112 BOOL SetWaitableTimer(HANDLE, const(LARGE_INTEGER)*, LONG, VOID*, PVOID, BOOL); 2113 void SwitchToFiber(PVOID); 2114 2115 static if (_WIN32_WINNT >= 0x500) { 2116 HANDLE OpenThread(DWORD, BOOL, DWORD); 2117 } 2118 2119 BOOL AccessCheck(PSECURITY_DESCRIPTOR, HANDLE, DWORD, PGENERIC_MAPPING, PPRIVILEGE_SET, PDWORD, PDWORD, PBOOL); 2120 BOOL AccessCheckAndAuditAlarmA(LPCSTR, LPVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); 2121 BOOL AccessCheckAndAuditAlarmW(LPCWSTR, LPVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); 2122 BOOL AddAccessAllowedAce(PACL, DWORD, DWORD, PSID); 2123 BOOL AddAccessDeniedAce(PACL, DWORD, DWORD, PSID); 2124 BOOL AddAce(PACL, DWORD, DWORD, PVOID, DWORD); 2125 BOOL AddAuditAccessAce(PACL, DWORD, DWORD, PSID, BOOL, BOOL); 2126 BOOL AdjustTokenGroups(HANDLE, BOOL, PTOKEN_GROUPS, DWORD, PTOKEN_GROUPS, PDWORD); 2127 BOOL AdjustTokenPrivileges(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD); 2128 BOOL AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*); 2129 BOOL AllocateLocallyUniqueId(PLUID); 2130 BOOL AreAllAccessesGranted(DWORD, DWORD); 2131 BOOL AreAnyAccessesGranted(DWORD, DWORD); 2132 BOOL BackupEventLogA(HANDLE, LPCSTR); 2133 BOOL BackupEventLogW(HANDLE, LPCWSTR); 2134 BOOL BackupRead(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); 2135 BOOL BackupSeek(HANDLE, DWORD, DWORD, LPDWORD, LPDWORD, LPVOID*); 2136 BOOL BackupWrite(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); 2137 BOOL ClearEventLogA(HANDLE, LPCSTR); 2138 BOOL ClearEventLogW(HANDLE, LPCWSTR); 2139 BOOL CloseEventLog(HANDLE); 2140 BOOL ConnectNamedPipe(HANDLE, LPOVERLAPPED); 2141 BOOL CopySid(DWORD, PSID, PSID); 2142 HANDLE CreateNamedPipeA(LPCSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); 2143 HANDLE CreateNamedPipeW(LPCWSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); 2144 BOOL CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, BOOL, HANDLE, PGENERIC_MAPPING); 2145 BOOL CreateProcessAsUserA(HANDLE, LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); 2146 BOOL CreateProcessAsUserW(HANDLE, LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); 2147 HANDLE CreateRemoteThread(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD); 2148 DWORD CreateTapePartition(HANDLE, DWORD, DWORD, DWORD); 2149 BOOL DefineDosDeviceA(DWORD, LPCSTR, LPCSTR); 2150 BOOL DefineDosDeviceW(DWORD, LPCWSTR, LPCWSTR); 2151 BOOL DeleteAce(PACL, DWORD); 2152 BOOL DeregisterEventSource(HANDLE); 2153 BOOL DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*); 2154 BOOL DeviceIoControl(HANDLE, DWORD, PVOID, DWORD, PVOID, DWORD, PDWORD, POVERLAPPED); 2155 BOOL DisconnectNamedPipe(HANDLE); 2156 BOOL DuplicateToken(HANDLE, SECURITY_IMPERSONATION_LEVEL, PHANDLE); 2157 BOOL DuplicateTokenEx(HANDLE, DWORD, LPSECURITY_ATTRIBUTES, SECURITY_IMPERSONATION_LEVEL, TOKEN_TYPE, PHANDLE); 2158 BOOL EqualPrefixSid(PSID, PSID); 2159 BOOL EqualSid(PSID, PSID); 2160 DWORD EraseTape(HANDLE, DWORD, BOOL); 2161 HANDLE FindFirstFileExA(LPCSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); 2162 HANDLE FindFirstFileExW(LPCWSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); 2163 BOOL FindFirstFreeAce(PACL, PVOID*); 2164 PVOID FreeSid(PSID); 2165 BOOL GetAce(PACL, DWORD, LPVOID*); 2166 BOOL GetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); 2167 BOOL GetBinaryTypeA(LPCSTR, PDWORD); 2168 BOOL GetBinaryTypeW(LPCWSTR, PDWORD); 2169 DWORD GetCompressedFileSizeA(LPCSTR, PDWORD); 2170 DWORD GetCompressedFileSizeW(LPCWSTR, PDWORD); 2171 BOOL GetCurrentHwProfileA(LPHW_PROFILE_INFOA); 2172 BOOL GetCurrentHwProfileW(LPHW_PROFILE_INFOW); 2173 BOOL GetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); 2174 BOOL GetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); 2175 BOOL GetHandleInformation(HANDLE, PDWORD); 2176 BOOL GetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); 2177 DWORD GetLengthSid(PSID); 2178 BOOL GetNumberOfEventLogRecords(HANDLE, PDWORD); 2179 BOOL GetOldestEventLogRecord(HANDLE, PDWORD); 2180 BOOL GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); 2181 BOOL GetProcessPriorityBoost(HANDLE, PBOOL); 2182 BOOL GetProcessShutdownParameters(PDWORD, PDWORD); 2183 BOOL GetProcessTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); 2184 HWINSTA GetProcessWindowStation(); 2185 BOOL GetProcessWorkingSetSize(HANDLE, PSIZE_T, PSIZE_T); 2186 BOOL GetQueuedCompletionStatus(HANDLE, PDWORD, PULONG_PTR, LPOVERLAPPED*, DWORD); 2187 BOOL GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL, PDWORD); 2188 BOOL GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); 2189 BOOL GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); 2190 DWORD GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR); 2191 BOOL GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); 2192 BOOL GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); 2193 PSID_IDENTIFIER_AUTHORITY GetSidIdentifierAuthority(PSID); 2194 DWORD GetSidLengthRequired(UCHAR); 2195 PDWORD GetSidSubAuthority(PSID, DWORD); 2196 PUCHAR GetSidSubAuthorityCount(PSID); 2197 DWORD GetTapeParameters(HANDLE, DWORD, PDWORD, PVOID); 2198 DWORD GetTapePosition(HANDLE, DWORD, PDWORD, PDWORD, PDWORD); 2199 DWORD GetTapeStatus(HANDLE); 2200 BOOL GetThreadPriorityBoost(HANDLE, PBOOL); 2201 BOOL GetThreadTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); 2202 BOOL ImpersonateLoggedOnUser(HANDLE); 2203 BOOL ImpersonateNamedPipeClient(HANDLE); 2204 BOOL ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); 2205 BOOL InitializeAcl(PACL, DWORD, DWORD); 2206 DWORD SetCriticalSectionSpinCount(LPCRITICAL_SECTION, DWORD); 2207 BOOL InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR, DWORD); 2208 BOOL InitializeSid(PSID, PSID_IDENTIFIER_AUTHORITY, BYTE); 2209 BOOL IsProcessorFeaturePresent(DWORD); 2210 BOOL IsTextUnicode(PCVOID, int, LPINT); 2211 BOOL IsValidAcl(PACL); 2212 BOOL IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR); 2213 BOOL IsValidSid(PSID); 2214 BOOL CreateWellKnownSid(WELL_KNOWN_SID_TYPE, PSID, PSID, PDWORD); 2215 BOOL LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED); 2216 BOOL LogonUserA(LPSTR, LPSTR, LPSTR, DWORD, DWORD, PHANDLE); 2217 BOOL LogonUserW(LPWSTR, LPWSTR, LPWSTR, DWORD, DWORD, PHANDLE); 2218 BOOL LookupAccountNameA(LPCSTR, LPCSTR, PSID, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); 2219 BOOL LookupAccountNameW(LPCWSTR, LPCWSTR, PSID, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); 2220 BOOL LookupAccountSidA(LPCSTR, PSID, LPSTR, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); 2221 BOOL LookupAccountSidW(LPCWSTR, PSID, LPWSTR, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); 2222 BOOL LookupPrivilegeDisplayNameA(LPCSTR, LPCSTR, LPSTR, PDWORD, PDWORD); 2223 BOOL LookupPrivilegeDisplayNameW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, PDWORD); 2224 BOOL LookupPrivilegeNameA(LPCSTR, PLUID, LPSTR, PDWORD); 2225 BOOL LookupPrivilegeNameW(LPCWSTR, PLUID, LPWSTR, PDWORD); 2226 BOOL LookupPrivilegeValueA(LPCSTR, LPCSTR, PLUID); 2227 BOOL LookupPrivilegeValueW(LPCWSTR, LPCWSTR, PLUID); 2228 BOOL MakeAbsoluteSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD, PACL, PDWORD, PACL, PDWORD, PSID, PDWORD, PSID, PDWORD); 2229 BOOL MakeSelfRelativeSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD); 2230 VOID MapGenericMask(PDWORD, PGENERIC_MAPPING); 2231 BOOL MoveFileExA(LPCSTR, LPCSTR, DWORD); 2232 BOOL MoveFileExW(LPCWSTR, LPCWSTR, DWORD); 2233 BOOL NotifyChangeEventLog(HANDLE, HANDLE); 2234 BOOL ObjectCloseAuditAlarmA(LPCSTR, PVOID, BOOL); 2235 BOOL ObjectCloseAuditAlarmW(LPCWSTR, PVOID, BOOL); 2236 BOOL ObjectDeleteAuditAlarmA(LPCSTR, PVOID, BOOL); 2237 BOOL ObjectDeleteAuditAlarmW(LPCWSTR, PVOID, BOOL); 2238 BOOL ObjectOpenAuditAlarmA(LPCSTR, PVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); 2239 BOOL ObjectOpenAuditAlarmW(LPCWSTR, PVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, HANDLE, DWORD, DWORD, PPRIVILEGE_SET, BOOL, BOOL, PBOOL); 2240 BOOL ObjectPrivilegeAuditAlarmA(LPCSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); 2241 BOOL ObjectPrivilegeAuditAlarmW(LPCWSTR, PVOID, HANDLE, DWORD, PPRIVILEGE_SET, BOOL); 2242 HANDLE OpenBackupEventLogA(LPCSTR, LPCSTR); 2243 HANDLE OpenBackupEventLogW(LPCWSTR, LPCWSTR); 2244 HANDLE OpenEventLogA(LPCSTR, LPCSTR); 2245 HANDLE OpenEventLogW(LPCWSTR, LPCWSTR); 2246 BOOL OpenProcessToken(HANDLE, DWORD, PHANDLE); 2247 BOOL OpenThreadToken(HANDLE, DWORD, BOOL, PHANDLE); 2248 BOOL PostQueuedCompletionStatus(HANDLE, DWORD, ULONG_PTR, LPOVERLAPPED); 2249 DWORD PrepareTape(HANDLE, DWORD, BOOL); 2250 BOOL PrivilegeCheck(HANDLE, PPRIVILEGE_SET, PBOOL); 2251 BOOL PrivilegedServiceAuditAlarmA(LPCSTR, LPCSTR, HANDLE, PPRIVILEGE_SET, BOOL); 2252 BOOL PrivilegedServiceAuditAlarmW(LPCWSTR, LPCWSTR, HANDLE, PPRIVILEGE_SET, BOOL); 2253 BOOL ReadDirectoryChangesW(HANDLE, PVOID, DWORD, BOOL, DWORD, PDWORD, LPOVERLAPPED, LPOVERLAPPED_COMPLETION_ROUTINE); 2254 BOOL ReadEventLogA(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); 2255 BOOL ReadEventLogW(HANDLE, DWORD, DWORD, PVOID, DWORD, DWORD*, DWORD*); 2256 BOOL ReadFileScatter(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); 2257 HANDLE RegisterEventSourceA (LPCSTR, LPCSTR); 2258 HANDLE RegisterEventSourceW(LPCWSTR, LPCWSTR); 2259 BOOL ReportEventA(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCSTR*, PVOID); 2260 BOOL ReportEventW(HANDLE, WORD, WORD, DWORD, PSID, WORD, DWORD, LPCWSTR*, PVOID); 2261 BOOL RevertToSelf(); 2262 BOOL SetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); 2263 BOOL SetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); 2264 BOOL SetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); 2265 BOOL SetHandleInformation(HANDLE, DWORD, DWORD); 2266 BOOL SetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR); 2267 BOOL SetPrivateObjectSecurity(SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, PGENERIC_MAPPING, HANDLE); 2268 BOOL SetProcessAffinityMask(HANDLE, DWORD); 2269 BOOL SetProcessPriorityBoost(HANDLE, BOOL); 2270 BOOL SetProcessShutdownParameters(DWORD, DWORD); 2271 BOOL SetProcessWorkingSetSize(HANDLE, SIZE_T, SIZE_T); 2272 BOOL SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); 2273 BOOL SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID, BOOL); 2274 BOOL SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID, BOOL); 2275 BOOL SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, BOOL, PACL, BOOL); 2276 BOOL SetSystemTimeAdjustment(DWORD, BOOL); 2277 DWORD SetTapeParameters(HANDLE, DWORD, PVOID); 2278 DWORD SetTapePosition(HANDLE, DWORD, DWORD, DWORD, DWORD, BOOL); 2279 BOOL SetThreadPriorityBoost(HANDLE, BOOL); 2280 BOOL SetThreadToken(PHANDLE, HANDLE); 2281 BOOL SetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PTOKEN_ELEVATION_TYPE, DWORD); 2282 DWORD SignalObjectAndWait(HANDLE, HANDLE, DWORD, BOOL); 2283 BOOL SwitchToThread(); 2284 BOOL SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION, LPSYSTEMTIME, LPSYSTEMTIME); 2285 BOOL TryEnterCriticalSection(LPCRITICAL_SECTION); 2286 BOOL UnlockFileEx(HANDLE, DWORD, DWORD, DWORD, LPOVERLAPPED); 2287 BOOL UpdateResourceA(HANDLE, LPCSTR, LPCSTR, WORD, PVOID, DWORD); 2288 BOOL UpdateResourceW(HANDLE, LPCWSTR, LPCWSTR, WORD, PVOID, DWORD); 2289 BOOL WriteFileGather(HANDLE, FILE_SEGMENT_ELEMENT*, DWORD, LPDWORD, LPOVERLAPPED); 2290 DWORD WriteTapemark(HANDLE, DWORD, DWORD, BOOL); 2291 2292 static if (_WIN32_WINNT >= 0x500) { 2293 BOOL AddAccessAllowedAceEx(PACL, DWORD, DWORD, DWORD, PSID); 2294 BOOL AddAccessDeniedAceEx(PACL, DWORD, DWORD, DWORD, PSID); 2295 PVOID AddVectoredExceptionHandler(ULONG, PVECTORED_EXCEPTION_HANDLER); 2296 BOOL AllocateUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); 2297 BOOL AssignProcessToJobObject(HANDLE, HANDLE); 2298 BOOL ChangeTimerQueueTimer(HANDLE,HANDLE,ULONG,ULONG); 2299 LPVOID CreateFiberEx(SIZE_T, SIZE_T, DWORD, LPFIBER_START_ROUTINE, LPVOID); 2300 HANDLE CreateFileMappingA(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR); 2301 HANDLE CreateFileMappingW(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCWSTR); 2302 BOOL CreateHardLinkA(LPCSTR, LPCSTR, LPSECURITY_ATTRIBUTES); 2303 BOOL CreateHardLinkW(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); 2304 HANDLE CreateJobObjectA(LPSECURITY_ATTRIBUTES, LPCSTR); 2305 HANDLE CreateJobObjectW(LPSECURITY_ATTRIBUTES, LPCWSTR); 2306 BOOL CreateProcessWithLogonW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPCWSTR, LPWSTR, DWORD, LPVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); 2307 HANDLE CreateTimerQueue(); 2308 BOOL CreateTimerQueueTimer(PHANDLE, HANDLE, WAITORTIMERCALLBACK, PVOID, DWORD, DWORD, ULONG); 2309 BOOL DeleteTimerQueue(HANDLE); 2310 BOOL DeleteTimerQueueEx(HANDLE, HANDLE); 2311 BOOL DeleteTimerQueueTimer(HANDLE, HANDLE, HANDLE); 2312 BOOL DeleteVolumeMountPointA(LPCSTR); 2313 BOOL DeleteVolumeMountPointW(LPCWSTR); 2314 BOOL DnsHostnameToComputerNameA(LPCSTR, LPSTR, LPDWORD); 2315 BOOL DnsHostnameToComputerNameW(LPCWSTR, LPWSTR, LPDWORD); 2316 BOOL EncryptFileA(LPCSTR); 2317 BOOL EncryptFileW(LPCWSTR); 2318 BOOL FileEncryptionStatusA(LPCSTR, LPDWORD); 2319 BOOL FileEncryptionStatusW(LPCWSTR, LPDWORD); 2320 HANDLE FindFirstVolumeA(LPCSTR, DWORD); 2321 HANDLE FindFirstVolumeMountPointA(LPSTR, LPSTR, DWORD); 2322 HANDLE FindFirstVolumeMountPointW(LPWSTR, LPWSTR, DWORD); 2323 HANDLE FindFirstVolumeW(LPCWSTR, DWORD); 2324 BOOL FindNextVolumeA(HANDLE, LPCSTR, DWORD); 2325 BOOL FindNextVolumeW(HANDLE, LPWSTR, DWORD); 2326 BOOL FindNextVolumeMountPointA(HANDLE, LPSTR, DWORD); 2327 BOOL FindNextVolumeMountPointW(HANDLE, LPWSTR, DWORD); 2328 BOOL FindVolumeClose(HANDLE); 2329 BOOL FindVolumeMountPointClose(HANDLE); 2330 BOOL FlushViewOfFile(PCVOID, DWORD); 2331 BOOL FreeUserPhysicalPages(HANDLE, PULONG_PTR, PULONG_PTR); 2332 BOOL GetComputerNameExA(COMPUTER_NAME_FORMAT, LPSTR, LPDWORD); 2333 BOOL GetComputerNameExW(COMPUTER_NAME_FORMAT, LPWSTR, LPDWORD); 2334 BOOL GetFileSizeEx(HANDLE, PLARGE_INTEGER); 2335 BOOL GetModuleHandleExA(DWORD, LPCSTR, HMODULE*); 2336 BOOL GetModuleHandleExW(DWORD, LPCWSTR, HMODULE*); 2337 HANDLE GetProcessHeap(); 2338 DWORD GetProcessHeaps(DWORD, PHANDLE); 2339 BOOL GetProcessIoCounters(HANDLE, PIO_COUNTERS); 2340 BOOL GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); 2341 UINT GetSystemWindowsDirectoryA(LPSTR, UINT); 2342 UINT GetSystemWindowsDirectoryW(LPWSTR, UINT); 2343 BOOL GetVolumeNameForVolumeMountPointA(LPCSTR, LPSTR, DWORD); 2344 BOOL GetVolumeNameForVolumeMountPointW(LPCWSTR, LPWSTR, DWORD); 2345 BOOL GetVolumePathNameA(LPCSTR, LPSTR, DWORD); 2346 BOOL GetVolumePathNameW(LPCWSTR, LPWSTR, DWORD); 2347 BOOL GlobalMemoryStatusEx(LPMEMORYSTATUSEX); 2348 BOOL IsBadCodePtr(FARPROC); 2349 BOOL IsSystemResumeAutomatic(); 2350 BOOL MapUserPhysicalPages(PVOID, ULONG_PTR, PULONG_PTR); 2351 BOOL MapUserPhysicalPagesScatter(PVOID*, ULONG_PTR, PULONG_PTR); 2352 PVOID MapViewOfFile(HANDLE, DWORD, DWORD, DWORD, DWORD); 2353 PVOID MapViewOfFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, PVOID); 2354 HANDLE OpenFileMappingA(DWORD, BOOL, LPCSTR); 2355 HANDLE OpenFileMappingW(DWORD, BOOL, LPCWSTR); 2356 BOOL ProcessIdToSessionId(DWORD, DWORD*); 2357 BOOL QueryInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD, LPDWORD); 2358 ULONG RemoveVectoredExceptionHandler(PVOID); 2359 BOOL ReplaceFileA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPVOID, LPVOID); 2360 BOOL ReplaceFileW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPVOID, LPVOID); 2361 BOOL SetComputerNameExA(COMPUTER_NAME_FORMAT, LPCSTR); 2362 BOOL SetComputerNameExW(COMPUTER_NAME_FORMAT, LPCWSTR); 2363 BOOL SetFilePointerEx(HANDLE, LARGE_INTEGER, PLARGE_INTEGER, DWORD); 2364 BOOL SetInformationJobObject(HANDLE, JOBOBJECTINFOCLASS, LPVOID, DWORD); 2365 BOOL SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, SECURITY_DESCRIPTOR_CONTROL, SECURITY_DESCRIPTOR_CONTROL); 2366 BOOL SetSystemPowerState(BOOL, BOOL); 2367 EXECUTION_STATE SetThreadExecutionState(EXECUTION_STATE); 2368 DWORD SetThreadIdealProcessor(HANDLE, DWORD); 2369 BOOL SetVolumeMountPointA(LPCSTR, LPCSTR); 2370 BOOL SetVolumeMountPointW(LPCWSTR, LPCWSTR); 2371 BOOL TerminateJobObject(HANDLE, UINT); 2372 BOOL UnmapViewOfFile(PVOID); 2373 BOOL UnregisterWait(HANDLE); 2374 BOOL UnregisterWaitEx(HANDLE, HANDLE); 2375 BOOL VerifyVersionInfoA(LPOSVERSIONINFOEXA, DWORD, DWORDLONG); 2376 BOOL VerifyVersionInfoW(LPOSVERSIONINFOEXW, DWORD, DWORDLONG); 2377 } 2378 2379 static if (_WIN32_WINNT >= 0x501) { 2380 BOOL ActivateActCtx(HANDLE, ULONG_PTR*); 2381 void AddRefActCtx(HANDLE); 2382 BOOL CheckNameLegalDOS8Dot3A(LPCSTR, LPSTR, DWORD, PBOOL, PBOOL); 2383 BOOL CheckNameLegalDOS8Dot3W(LPCWSTR, LPSTR, DWORD, PBOOL, PBOOL); 2384 BOOL CheckRemoteDebuggerPresent(HANDLE, PBOOL); 2385 BOOL ConvertFiberToThread(); 2386 HANDLE CreateActCtxA(PCACTCTXA); 2387 HANDLE CreateActCtxW(PCACTCTXW); 2388 HANDLE CreateMemoryResourceNotification(MEMORY_RESOURCE_NOTIFICATION_TYPE); 2389 BOOL DeactivateActCtx(DWORD, ULONG_PTR); 2390 BOOL DebugActiveProcessStop(DWORD); 2391 BOOL DebugBreakProcess(HANDLE); 2392 BOOL DebugSetProcessKillOnExit(BOOL); 2393 BOOL FindActCtxSectionGuid(DWORD, const(GUID)*, ULONG, const(GUID)*, 2394 PACTCTX_SECTION_KEYED_DATA); 2395 BOOL FindActCtxSectionStringA(DWORD, const(GUID)*, ULONG, LPCSTR, 2396 PACTCTX_SECTION_KEYED_DATA); 2397 BOOL FindActCtxSectionStringW(DWORD, const(GUID)*, ULONG, LPCWSTR, 2398 PACTCTX_SECTION_KEYED_DATA); 2399 BOOL GetCurrentActCtx(HANDLE*); 2400 VOID GetNativeSystemInfo(LPSYSTEM_INFO); 2401 BOOL GetProcessHandleCount(HANDLE, PDWORD); 2402 BOOL GetSystemRegistryQuota(PDWORD, PDWORD); 2403 BOOL GetSystemTimes(LPFILETIME, LPFILETIME, LPFILETIME); 2404 UINT GetSystemWow64DirectoryA(LPSTR, UINT); 2405 UINT GetSystemWow64DirectoryW(LPWSTR, UINT); 2406 BOOL GetThreadIOPendingFlag(HANDLE, PBOOL); 2407 BOOL GetVolumePathNamesForVolumeNameA(LPCSTR, LPSTR, DWORD, PDWORD); 2408 BOOL GetVolumePathNamesForVolumeNameW(LPCWSTR, LPWSTR, DWORD, PDWORD); 2409 UINT GetWriteWatch(DWORD, PVOID, SIZE_T, PVOID*, PULONG_PTR, PULONG); 2410 BOOL HeapQueryInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T, PSIZE_T); 2411 BOOL HeapSetInformation(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T); 2412 BOOL IsProcessInJob(HANDLE, HANDLE, PBOOL); 2413 BOOL IsWow64Process(HANDLE, PBOOL); 2414 BOOL QueryActCtxW(DWORD, HANDLE, PVOID, ULONG, PVOID, SIZE_T, SIZE_T*); 2415 BOOL QueryMemoryResourceNotification(HANDLE, PBOOL); 2416 void ReleaseActCtx(HANDLE); 2417 UINT ResetWriteWatch(LPVOID, SIZE_T); 2418 BOOL SetFileShortNameA(HANDLE, LPCSTR); 2419 BOOL SetFileShortNameW(HANDLE, LPCWSTR); 2420 BOOL SetFileValidData(HANDLE, LONGLONG); 2421 BOOL ZombifyActCtx(HANDLE); 2422 } 2423 2424 static if (_WIN32_WINNT >= 0x502) { 2425 DWORD GetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); 2426 DWORD GetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); 2427 DWORD GetDllDirectoryA(DWORD, LPSTR); 2428 DWORD GetDllDirectoryW(DWORD, LPWSTR); 2429 DWORD GetThreadId(HANDLE); 2430 DWORD GetProcessId(HANDLE); 2431 HANDLE ReOpenFile(HANDLE, DWORD, DWORD, DWORD); 2432 BOOL SetDllDirectoryA(LPCSTR); 2433 BOOL SetDllDirectoryW(LPCWSTR); 2434 BOOL SetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); 2435 BOOL SetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); 2436 DWORD WTSGetActiveConsoleSessionId(); 2437 BOOL WTSQueryUserToken(ULONG, PHANDLE); 2438 2439 } 2440 2441 // ??? 2442 static if (_WIN32_WINNT >= 0x510) { 2443 VOID RestoreLastError(DWORD); 2444 } 2445 } 2446 2447 mixin DECLARE_AW!("STARTUPINFO"); 2448 version (Unicode) { 2449 //alias STARTUPINFOW STARTUPINFO; 2450 alias WIN32_FIND_DATAW WIN32_FIND_DATA; 2451 alias ENUMRESLANGPROCW ENUMRESLANGPROC; 2452 alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; 2453 alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; 2454 alias AddAtomW AddAtom; 2455 alias BeginUpdateResourceW BeginUpdateResource; 2456 alias BuildCommDCBW BuildCommDCB; 2457 alias BuildCommDCBAndTimeoutsW BuildCommDCBAndTimeouts; 2458 alias CallNamedPipeW CallNamedPipe; 2459 alias CommConfigDialogW CommConfigDialog; 2460 alias CopyFileW CopyFile; 2461 alias CopyFileExW CopyFileEx; 2462 alias CreateDirectoryW CreateDirectory; 2463 alias CreateDirectoryExW CreateDirectoryEx; 2464 alias CreateEventW CreateEvent; 2465 alias CreateFileW CreateFile; 2466 alias CreateMailslotW CreateMailslot; 2467 alias CreateMutexW CreateMutex; 2468 alias CreateProcessW CreateProcess; 2469 alias CreateSemaphoreW CreateSemaphore; 2470 alias DeleteFileW DeleteFile; 2471 alias EndUpdateResourceW EndUpdateResource; 2472 alias EnumResourceLanguagesW EnumResourceLanguages; 2473 alias EnumResourceNamesW EnumResourceNames; 2474 alias EnumResourceTypesW EnumResourceTypes; 2475 alias ExpandEnvironmentStringsW ExpandEnvironmentStrings; 2476 alias FatalAppExitW FatalAppExit; 2477 alias FindAtomW FindAtom; 2478 alias FindFirstChangeNotificationW FindFirstChangeNotification; 2479 alias FindFirstFileW FindFirstFile; 2480 alias FindNextFileW FindNextFile; 2481 alias FindResourceW FindResource; 2482 alias FindResourceExW FindResourceEx; 2483 alias FormatMessageW FormatMessage; 2484 alias FreeEnvironmentStringsW FreeEnvironmentStrings; 2485 alias GetAtomNameW GetAtomName; 2486 alias GetCommandLineW GetCommandLine; 2487 alias GetComputerNameW GetComputerName; 2488 alias GetCurrentDirectoryW GetCurrentDirectory; 2489 alias GetDefaultCommConfigW GetDefaultCommConfig; 2490 alias GetDiskFreeSpaceW GetDiskFreeSpace; 2491 alias GetDiskFreeSpaceExW GetDiskFreeSpaceEx; 2492 alias GetDriveTypeW GetDriveType; 2493 alias GetEnvironmentStringsW GetEnvironmentStrings; 2494 alias GetEnvironmentVariableW GetEnvironmentVariable; 2495 alias GetFileAttributesW GetFileAttributes; 2496 alias GetFullPathNameW GetFullPathName; 2497 alias GetLogicalDriveStringsW GetLogicalDriveStrings; 2498 alias GetModuleFileNameW GetModuleFileName; 2499 alias GetModuleHandleW GetModuleHandle; 2500 alias GetNamedPipeHandleStateW GetNamedPipeHandleState; 2501 alias GetPrivateProfileIntW GetPrivateProfileInt; 2502 alias GetPrivateProfileSectionW GetPrivateProfileSection; 2503 alias GetPrivateProfileSectionNamesW GetPrivateProfileSectionNames; 2504 alias GetPrivateProfileStringW GetPrivateProfileString; 2505 alias GetPrivateProfileStructW GetPrivateProfileStruct; 2506 alias GetProfileIntW GetProfileInt; 2507 alias GetProfileSectionW GetProfileSection; 2508 alias GetProfileStringW GetProfileString; 2509 alias GetShortPathNameW GetShortPathName; 2510 alias GetStartupInfoW GetStartupInfo; 2511 alias GetSystemDirectoryW GetSystemDirectory; 2512 alias GetTempFileNameW GetTempFileName; 2513 alias GetTempPathW GetTempPath; 2514 alias GetUserNameW GetUserName; 2515 alias GetVersionExW GetVersionEx; 2516 alias GetVolumeInformationW GetVolumeInformation; 2517 alias GetWindowsDirectoryW GetWindowsDirectory; 2518 alias GlobalAddAtomW GlobalAddAtom; 2519 alias GlobalFindAtomW GlobalFindAtom; 2520 alias GlobalGetAtomNameW GlobalGetAtomName; 2521 alias IsBadStringPtrW IsBadStringPtr; 2522 alias LoadLibraryW LoadLibrary; 2523 alias LoadLibraryExW LoadLibraryEx; 2524 alias lstrcatW lstrcat; 2525 alias lstrcmpW lstrcmp; 2526 alias lstrcmpiW lstrcmpi; 2527 alias lstrcpyW lstrcpy; 2528 alias lstrcpynW lstrcpyn; 2529 alias lstrlenW lstrlen; 2530 alias MoveFileW MoveFile; 2531 alias OpenEventW OpenEvent; 2532 alias OpenMutexW OpenMutex; 2533 alias OpenSemaphoreW OpenSemaphore; 2534 alias OutputDebugStringW OutputDebugString; 2535 alias RemoveDirectoryW RemoveDirectory; 2536 alias SearchPathW SearchPath; 2537 alias SetComputerNameW SetComputerName; 2538 alias SetCurrentDirectoryW SetCurrentDirectory; 2539 alias SetDefaultCommConfigW SetDefaultCommConfig; 2540 alias SetEnvironmentVariableW SetEnvironmentVariable; 2541 alias SetFileAttributesW SetFileAttributes; 2542 alias SetVolumeLabelW SetVolumeLabel; 2543 alias WaitNamedPipeW WaitNamedPipe; 2544 alias WritePrivateProfileSectionW WritePrivateProfileSection; 2545 alias WritePrivateProfileStringW WritePrivateProfileString; 2546 alias WritePrivateProfileStructW WritePrivateProfileStruct; 2547 alias WriteProfileSectionW WriteProfileSection; 2548 alias WriteProfileStringW WriteProfileString; 2549 alias CreateWaitableTimerW CreateWaitableTimer; 2550 alias GetFileAttributesExW GetFileAttributesEx; 2551 alias GetLongPathNameW GetLongPathName; 2552 alias QueryDosDeviceW QueryDosDevice; 2553 2554 alias HW_PROFILE_INFOW HW_PROFILE_INFO; 2555 alias AccessCheckAndAuditAlarmW AccessCheckAndAuditAlarm; 2556 alias BackupEventLogW BackupEventLog; 2557 alias ClearEventLogW ClearEventLog; 2558 alias CreateNamedPipeW CreateNamedPipe; 2559 alias CreateProcessAsUserW CreateProcessAsUser; 2560 alias DefineDosDeviceW DefineDosDevice; 2561 alias FindFirstFileExW FindFirstFileEx; 2562 alias GetBinaryTypeW GetBinaryType; 2563 alias GetCompressedFileSizeW GetCompressedFileSize; 2564 alias GetFileSecurityW GetFileSecurity; 2565 alias LogonUserW LogonUser; 2566 alias LookupAccountNameW LookupAccountName; 2567 alias LookupAccountSidW LookupAccountSid; 2568 alias LookupPrivilegeDisplayNameW LookupPrivilegeDisplayName; 2569 alias LookupPrivilegeNameW LookupPrivilegeName; 2570 alias LookupPrivilegeValueW LookupPrivilegeValue; 2571 alias MoveFileExW MoveFileEx; 2572 alias ObjectCloseAuditAlarmW ObjectCloseAuditAlarm; 2573 alias ObjectDeleteAuditAlarmW ObjectDeleteAuditAlarm; 2574 alias ObjectOpenAuditAlarmW ObjectOpenAuditAlarm; 2575 alias ObjectPrivilegeAuditAlarmW ObjectPrivilegeAuditAlarm; 2576 alias OpenBackupEventLogW OpenBackupEventLog; 2577 alias OpenEventLogW OpenEventLog; 2578 alias PrivilegedServiceAuditAlarmW PrivilegedServiceAuditAlarm; 2579 alias ReadEventLogW ReadEventLog; 2580 alias RegisterEventSourceW RegisterEventSource; 2581 alias ReportEventW ReportEvent; 2582 alias SetFileSecurityW SetFileSecurity; 2583 alias UpdateResourceW UpdateResource; 2584 2585 static if (_WIN32_WINNT >= 0x500) { 2586 alias CreateFileMappingW CreateFileMapping; 2587 alias CreateHardLinkW CreateHardLink; 2588 alias CreateJobObjectW CreateJobObject; 2589 alias DeleteVolumeMountPointW DeleteVolumeMountPoint; 2590 alias DnsHostnameToComputerNameW DnsHostnameToComputerName; 2591 alias EncryptFileW EncryptFile; 2592 alias FileEncryptionStatusW FileEncryptionStatus; 2593 alias FindFirstVolumeW FindFirstVolume; 2594 alias FindFirstVolumeMountPointW FindFirstVolumeMountPoint; 2595 alias FindNextVolumeW FindNextVolume; 2596 alias FindNextVolumeMountPointW FindNextVolumeMountPoint; 2597 alias GetModuleHandleExW GetModuleHandleEx; 2598 alias GetSystemWindowsDirectoryW GetSystemWindowsDirectory; 2599 alias GetVolumeNameForVolumeMountPointW GetVolumeNameForVolumeMountPoint; 2600 alias GetVolumePathNameW GetVolumePathName; 2601 alias OpenFileMappingW OpenFileMapping; 2602 alias ReplaceFileW ReplaceFile; 2603 alias SetVolumeMountPointW SetVolumeMountPoint; 2604 alias VerifyVersionInfoW VerifyVersionInfo; 2605 } 2606 2607 static if (_WIN32_WINNT >= 0x501) { 2608 alias ACTCTXW ACTCTX; 2609 alias CheckNameLegalDOS8Dot3W CheckNameLegalDOS8Dot3; 2610 alias CreateActCtxW CreateActCtx; 2611 alias FindActCtxSectionStringW FindActCtxSectionString; 2612 alias GetSystemWow64DirectoryW GetSystemWow64Directory; 2613 alias GetVolumePathNamesForVolumeNameW GetVolumePathNamesForVolumeName; 2614 alias SetFileShortNameW SetFileShortName; 2615 } 2616 2617 static if (_WIN32_WINNT >= 0x502) { 2618 alias SetFirmwareEnvironmentVariableW SetFirmwareEnvironmentVariable; 2619 alias SetDllDirectoryW SetDllDirectory; 2620 alias GetDllDirectoryW GetDllDirectory; 2621 } 2622 2623 } else { 2624 //alias STARTUPINFOA STARTUPINFO; 2625 alias WIN32_FIND_DATAA WIN32_FIND_DATA; 2626 alias ENUMRESLANGPROCW ENUMRESLANGPROC; 2627 alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; 2628 alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; 2629 alias AddAtomA AddAtom; 2630 alias BeginUpdateResourceA BeginUpdateResource; 2631 alias BuildCommDCBA BuildCommDCB; 2632 alias BuildCommDCBAndTimeoutsA BuildCommDCBAndTimeouts; 2633 alias CallNamedPipeA CallNamedPipe; 2634 alias CommConfigDialogA CommConfigDialog; 2635 alias CopyFileA CopyFile; 2636 alias CopyFileExA CopyFileEx; 2637 alias CreateDirectoryA CreateDirectory; 2638 alias CreateDirectoryExA CreateDirectoryEx; 2639 alias CreateEventA CreateEvent; 2640 alias CreateFileA CreateFile; 2641 alias CreateMailslotA CreateMailslot; 2642 alias CreateMutexA CreateMutex; 2643 alias CreateProcessA CreateProcess; 2644 alias CreateSemaphoreA CreateSemaphore; 2645 alias DeleteFileA DeleteFile; 2646 alias EndUpdateResourceA EndUpdateResource; 2647 alias EnumResourceLanguagesA EnumResourceLanguages; 2648 alias EnumResourceNamesA EnumResourceNames; 2649 alias EnumResourceTypesA EnumResourceTypes; 2650 alias ExpandEnvironmentStringsA ExpandEnvironmentStrings; 2651 alias FatalAppExitA FatalAppExit; 2652 alias FindAtomA FindAtom; 2653 alias FindFirstChangeNotificationA FindFirstChangeNotification; 2654 alias FindFirstFileA FindFirstFile; 2655 alias FindNextFileA FindNextFile; 2656 alias FindResourceA FindResource; 2657 alias FindResourceExA FindResourceEx; 2658 alias FormatMessageA FormatMessage; 2659 alias FreeEnvironmentStringsA FreeEnvironmentStrings; 2660 alias GetAtomNameA GetAtomName; 2661 alias GetCommandLineA GetCommandLine; 2662 alias GetComputerNameA GetComputerName; 2663 alias GetCurrentDirectoryA GetCurrentDirectory; 2664 alias GetDefaultCommConfigA GetDefaultCommConfig; 2665 alias GetDiskFreeSpaceA GetDiskFreeSpace; 2666 alias GetDiskFreeSpaceExA GetDiskFreeSpaceEx; 2667 alias GetDriveTypeA GetDriveType; 2668 alias GetEnvironmentVariableA GetEnvironmentVariable; 2669 alias GetFileAttributesA GetFileAttributes; 2670 alias GetFullPathNameA GetFullPathName; 2671 alias GetLogicalDriveStringsA GetLogicalDriveStrings; 2672 alias GetNamedPipeHandleStateA GetNamedPipeHandleState; 2673 alias GetModuleHandleA GetModuleHandle; 2674 alias GetModuleFileNameA GetModuleFileName; 2675 alias GetPrivateProfileIntA GetPrivateProfileInt; 2676 alias GetPrivateProfileSectionA GetPrivateProfileSection; 2677 alias GetPrivateProfileSectionNamesA GetPrivateProfileSectionNames; 2678 alias GetPrivateProfileStringA GetPrivateProfileString; 2679 alias GetPrivateProfileStructA GetPrivateProfileStruct; 2680 alias GetProfileIntA GetProfileInt; 2681 alias GetProfileSectionA GetProfileSection; 2682 alias GetProfileStringA GetProfileString; 2683 alias GetShortPathNameA GetShortPathName; 2684 alias GetStartupInfoA GetStartupInfo; 2685 alias GetSystemDirectoryA GetSystemDirectory; 2686 alias GetTempFileNameA GetTempFileName; 2687 alias GetTempPathA GetTempPath; 2688 alias GetUserNameA GetUserName; 2689 alias GetVersionExA GetVersionEx; 2690 alias GetVolumeInformationA GetVolumeInformation; 2691 alias GetWindowsDirectoryA GetWindowsDirectory; 2692 alias GlobalAddAtomA GlobalAddAtom; 2693 alias GlobalFindAtomA GlobalFindAtom; 2694 alias GlobalGetAtomNameA GlobalGetAtomName; 2695 alias IsBadStringPtrA IsBadStringPtr; 2696 alias LoadLibraryA LoadLibrary; 2697 alias LoadLibraryExA LoadLibraryEx; 2698 alias lstrcatA lstrcat; 2699 alias lstrcmpA lstrcmp; 2700 alias lstrcmpiA lstrcmpi; 2701 alias lstrcpyA lstrcpy; 2702 alias lstrcpynA lstrcpyn; 2703 alias lstrlenA lstrlen; 2704 alias MoveFileA MoveFile; 2705 alias OpenEventA OpenEvent; 2706 alias OpenMutexA OpenMutex; 2707 alias OpenSemaphoreA OpenSemaphore; 2708 alias OutputDebugStringA OutputDebugString; 2709 alias RemoveDirectoryA RemoveDirectory; 2710 alias SearchPathA SearchPath; 2711 alias SetComputerNameA SetComputerName; 2712 alias SetCurrentDirectoryA SetCurrentDirectory; 2713 alias SetDefaultCommConfigA SetDefaultCommConfig; 2714 alias SetEnvironmentVariableA SetEnvironmentVariable; 2715 alias SetFileAttributesA SetFileAttributes; 2716 alias SetVolumeLabelA SetVolumeLabel; 2717 alias WaitNamedPipeA WaitNamedPipe; 2718 alias WritePrivateProfileSectionA WritePrivateProfileSection; 2719 alias WritePrivateProfileStringA WritePrivateProfileString; 2720 alias WritePrivateProfileStructA WritePrivateProfileStruct; 2721 alias WriteProfileSectionA WriteProfileSection; 2722 alias WriteProfileStringA WriteProfileString; 2723 alias CreateWaitableTimerA CreateWaitableTimer; 2724 alias GetFileAttributesExA GetFileAttributesEx; 2725 alias GetLongPathNameA GetLongPathName; 2726 alias QueryDosDeviceA QueryDosDevice; 2727 2728 alias HW_PROFILE_INFOA HW_PROFILE_INFO; 2729 alias AccessCheckAndAuditAlarmA AccessCheckAndAuditAlarm; 2730 alias BackupEventLogA BackupEventLog; 2731 alias ClearEventLogA ClearEventLog; 2732 alias CreateNamedPipeA CreateNamedPipe; 2733 alias CreateProcessAsUserA CreateProcessAsUser; 2734 alias DefineDosDeviceA DefineDosDevice; 2735 alias FindFirstFileExA FindFirstFileEx; 2736 alias GetBinaryTypeA GetBinaryType; 2737 alias GetCompressedFileSizeA GetCompressedFileSize; 2738 alias GetFileSecurityA GetFileSecurity; 2739 alias LogonUserA LogonUser; 2740 alias LookupAccountNameA LookupAccountName; 2741 alias LookupAccountSidA LookupAccountSid; 2742 alias LookupPrivilegeDisplayNameA LookupPrivilegeDisplayName; 2743 alias LookupPrivilegeNameA LookupPrivilegeName; 2744 alias LookupPrivilegeValueA LookupPrivilegeValue; 2745 alias MoveFileExA MoveFileEx; 2746 alias ObjectCloseAuditAlarmA ObjectCloseAuditAlarm; 2747 alias ObjectDeleteAuditAlarmA ObjectDeleteAuditAlarm; 2748 alias ObjectOpenAuditAlarmA ObjectOpenAuditAlarm; 2749 alias ObjectPrivilegeAuditAlarmA ObjectPrivilegeAuditAlarm; 2750 alias OpenBackupEventLogA OpenBackupEventLog; 2751 alias OpenEventLogA OpenEventLog; 2752 alias PrivilegedServiceAuditAlarmA PrivilegedServiceAuditAlarm; 2753 alias ReadEventLogA ReadEventLog; 2754 alias RegisterEventSourceA RegisterEventSource; 2755 alias ReportEventA ReportEvent; 2756 alias SetFileSecurityA SetFileSecurity; 2757 alias UpdateResourceA UpdateResource; 2758 2759 static if (_WIN32_WINNT >= 0x500) { 2760 alias CreateFileMappingA CreateFileMapping; 2761 alias CreateHardLinkA CreateHardLink; 2762 alias CreateJobObjectA CreateJobObject; 2763 alias DeleteVolumeMountPointA DeleteVolumeMountPoint; 2764 alias DnsHostnameToComputerNameA DnsHostnameToComputerName; 2765 alias EncryptFileA EncryptFile; 2766 alias FileEncryptionStatusA FileEncryptionStatus; 2767 alias FindFirstVolumeA FindFirstVolume; 2768 alias FindFirstVolumeMountPointA FindFirstVolumeMountPoint; 2769 alias FindNextVolumeA FindNextVolume; 2770 alias FindNextVolumeMountPointA FindNextVolumeMountPoint; 2771 alias GetModuleHandleExA GetModuleHandleEx; 2772 alias GetSystemWindowsDirectoryA GetSystemWindowsDirectory; 2773 alias GetVolumeNameForVolumeMountPointA GetVolumeNameForVolumeMountPoint; 2774 alias GetVolumePathNameA GetVolumePathName; 2775 alias OpenFileMappingA OpenFileMapping; 2776 alias ReplaceFileA ReplaceFile; 2777 alias SetVolumeMountPointA SetVolumeMountPoint; 2778 alias VerifyVersionInfoA VerifyVersionInfo; 2779 } 2780 2781 static if (_WIN32_WINNT >= 0x501) { 2782 alias ACTCTXA ACTCTX; 2783 alias CheckNameLegalDOS8Dot3A CheckNameLegalDOS8Dot3; 2784 alias CreateActCtxA CreateActCtx; 2785 alias FindActCtxSectionStringA FindActCtxSectionString; 2786 alias GetSystemWow64DirectoryA GetSystemWow64Directory; 2787 alias GetVolumePathNamesForVolumeNameA GetVolumePathNamesForVolumeName; 2788 alias SetFileShortNameA SetFileShortName; 2789 } 2790 2791 static if (_WIN32_WINNT >= 0x502) { 2792 alias GetDllDirectoryA GetDllDirectory; 2793 alias SetDllDirectoryA SetDllDirectory; 2794 alias SetFirmwareEnvironmentVariableA SetFirmwareEnvironmentVariable; 2795 } 2796 } 2797 2798 alias STARTUPINFO* LPSTARTUPINFO; 2799 alias WIN32_FIND_DATA* LPWIN32_FIND_DATA; 2800 2801 alias HW_PROFILE_INFO* LPHW_PROFILE_INFO; 2802 2803 static if (_WIN32_WINNT >= 0x501) { 2804 alias ACTCTX* PACTCTX, PCACTCTX; 2805 }