Changeset 208

Show
Ignore:
Timestamp:
09/04/07 20:23:02 (2 years ago)
Author:
smjg
Message:

Massive cleanup of winbase.d in progress

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/win32/winbase.d

    r207 r208  
    3131 SIZE_T GlobalCompact(DWORD); 
    3232 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 
    3336 UINT GlobalFlags(HGLOBAL); 
    3437 VOID GlobalUnfix(HGLOBAL); 
     
    9093+/ 
    9194 
    92 // ---- 
    9395// COMMPROP structure, used by GetCommProperties() 
     96// ----------------------------------------------- 
    9497 
    9598// Communications provider type 
    9699enum : DWORD { 
    97     PST_UNSPECIFIED=0
     100    PST_UNSPECIFIED
    98101    PST_RS232, 
    99102    PST_PARALLELPORT, 
     
    101104    PST_RS423, 
    102105    PST_RS449, 
    103     PST_MODEM, // =
    104     PST_FAX            = 0x21, 
    105     PST_SCANNER        = 0x22, 
    106     PST_NETWORK_BRIDGE = 0x100, 
    107     PST_LAT            = 0x101, 
    108     PST_TCPIP_TELNET   = 0x102, 
    109     PST_X25            = 0x103 
     106    PST_MODEM,      // =     
     107    PST_FAX            = 0x0021, 
     108    PST_SCANNER        = 0x0022, 
     109    PST_NETWORK_BRIDGE = 0x0100, 
     110    PST_LAT            = 0x0101, 
     111    PST_TCPIP_TELNET   = 0x0102, 
     112    PST_X25            = 0x0103 
    110113} 
    111114 
    112115// Max baud rate 
    113116enum : DWORD { 
    114     BAUD_075    = 1, 
    115     BAUD_110    = 2, 
    116     BAUD_134_5  = 4, 
    117     BAUD_150    = 8, 
    118     BAUD_300    = 16, 
    119     BAUD_600    = 32, 
    120     BAUD_1200   = 64, 
    121     BAUD_1800   = 128, 
    122     BAUD_2400   = 256, 
    123     BAUD_4800   = 512, 
    124     BAUD_7200   = 1024, 
    125     BAUD_9600   = 2048, 
    126     BAUD_14400  = 4096, 
    127     BAUD_19200  = 8192, 
    128     BAUD_38400  = 16384, 
    129     BAUD_56K    = 32768, 
    130     BAUD_128K   = 65536, 
    131  
    132     BAUD_57600  = 262144, 
    133     BAUD_115200 = 131072, 
     117    BAUD_075    = 0x00000001, 
     118    BAUD_110    = 0x00000002, 
     119    BAUD_134_5  = 0x00000004, 
     120    BAUD_150    = 0x00000008, 
     121    BAUD_300    = 0x00000010, 
     122    BAUD_600    = 0x00000020, 
     123    BAUD_1200   = 0x00000040, 
     124    BAUD_1800   = 0x00000080, 
     125    BAUD_2400   = 0x00000100, 
     126    BAUD_4800   = 0x00000200, 
     127    BAUD_7200   = 0x00000400, 
     128    BAUD_9600   = 0x00000800, 
     129    BAUD_14400  = 0x00001000, 
     130    BAUD_19200  = 0x00002000, 
     131    BAUD_38400  = 0x00004000, 
     132    BAUD_56K    = 0x00008000, 
     133    BAUD_128K   = 0x00010000, 
     134    BAUD_115200 = 0x00020000, 
     135    BAUD_57600  = 0x00040000, 
    134136    BAUD_USER   = 0x10000000 
    135137} 
     
    137139// Comm capabilities 
    138140enum : DWORD { 
    139     PCF_DTRDSR       = 1, 
    140     PCF_RTSCTS       = 2, 
    141     PCF_RLSD         = 4, 
    142     PCF_PARITY_CHECK = 8, 
    143     PCF_XONXOFF      = 16
    144     PCF_SETXCHAR     = 32
    145     PCF_TOTALTIMEOUTS= 64
    146     PCF_INTTIMEOUTS  = 128
    147     PCF_SPECIALCHARS = 256
    148     PCF_16BITMODE    = 512 
     141    PCF_DTRDSR        = 0x0001, 
     142    PCF_RTSCTS        = 0x0002, 
     143    PCF_RLSD          = 0x0004, 
     144    PCF_PARITY_CHECK = 0x0008, 
     145    PCF_XONXOFF      = 0x0010
     146    PCF_SETXCHAR      = 0x0020
     147    PCF_TOTALTIMEOUTS = 0x0040
     148    PCF_INTTIMEOUTS  = 0x0080
     149    PCF_SPECIALCHARS = 0x0100
     150    PCF_16BITMODE    = 0x0200 
    149151} 
    150152 
     
    169171 
    170172enum : WORD { 
    171     STOPBITS_10  = 1, 
    172     STOPBITS_15  = 2, 
    173     STOPBITS_20  = 4, 
    174     PARITY_NONE  = 256
    175     PARITY_ODD   = 512
    176     PARITY_EVEN  = 1024
    177     PARITY_MARK  = 2048
    178     PARITY_SPACE = 4096 
     173    STOPBITS_10  = 0x0001, 
     174    STOPBITS_15  = 0x0002, 
     175    STOPBITS_20  = 0x0004, 
     176    PARITY_NONE  = 0x0100
     177    PARITY_ODD   = 0x0200
     178    PARITY_EVEN  = 0x0400
     179    PARITY_MARK  = 0x0800
     180    PARITY_SPACE = 0x1000 
    179181} 
    180182 
     
    183185 
    184186struct COMMPROP { 
    185     WORD     wPacketLength; 
    186     WORD     wPacketVersion; 
    187     DWORD    dwServiceMask; 
    188     DWORD    dwReserved1; 
    189     DWORD    dwMaxTxQueue; 
    190     DWORD    dwMaxRxQueue; 
    191     DWORD    dwMaxBaud; 
    192     DWORD    dwProvSubType; 
    193     DWORD    dwProvCapabilities; 
    194     DWORD    dwSettableParams; 
    195     DWORD    dwSettableBaud; 
    196     WORD     wSettableData; 
    197     WORD     wSettableStopParity; 
    198     DWORD    dwCurrentTxQueue; 
    199     DWORD    dwCurrentRxQueue; 
    200     DWORD    dwProvSpec1; 
    201     DWORD    dwProvSpec2; 
    202     WCHAR[1] wcProvChar; 
     187    WORD  wPacketLength; 
     188    WORD  wPacketVersion; 
     189    DWORD dwServiceMask; 
     190    DWORD dwReserved1; 
     191    DWORD dwMaxTxQueue; 
     192    DWORD dwMaxRxQueue; 
     193    DWORD dwMaxBaud; 
     194    DWORD dwProvSubType; 
     195    DWORD dwProvCapabilities; 
     196    DWORD dwSettableParams; 
     197    DWORD dwSettableBaud; 
     198    WORD  wSettableData; 
     199    WORD  wSettableStopParity; 
     200    DWORD dwCurrentTxQueue; 
     201    DWORD dwCurrentRxQueue; 
     202    DWORD dwProvSpec1; 
     203    DWORD dwProvSpec2; 
     204    WCHAR _wcProvChar; 
     205 
     206    WCHAR* wcProvChar() { return &_wcProvChar; } 
    203207} 
    204208alias COMMPROP* LPCOMMPROP; 
    205209 
    206 //------- 
     210// ---------- 
     211 
    207212// for DEBUG_EVENT 
    208213enum : DWORD { 
     
    218223} 
    219224 
    220 const HFILE HFILE_ERROR = cast(HFILE)(-1); 
     225const HFILE HFILE_ERROR = cast(HFILE) (-1); 
    221226 
    222227// for SetFilePointer() 
     
    231236// for OpenFile() 
    232237deprecated enum : UINT { 
    233     OF_READ      = 0, 
    234     OF_WRITE     = 1, 
    235     OF_READWRITE = 2, 
     238    OF_READ             = 0, 
     239    OF_WRITE            = 0x0001, 
     240    OF_READWRITE        = 0x0002, 
    236241    OF_SHARE_COMPAT     = 0, 
    237     OF_SHARE_EXCLUSIVE  = 16
    238     OF_SHARE_DENY_WRITE = 32
    239     OF_SHARE_DENY_READ  = 48
    240     OF_SHARE_DENY_NONE  = 64
    241     OF_PARSE   = 256
    242     OF_DELETE  = 512
    243     OF_VERIFY  = 1024
    244     OF_CANCEL  = 2048
    245     OF_CREATE  = 4096
    246     OF_PROMPT  = 8192
    247     OF_EXIST   = 16384
    248     OF_REOPEN  = 32768 
     242    OF_SHARE_EXCLUSIVE  = 0x0010
     243    OF_SHARE_DENY_WRITE = 0x0020
     244    OF_SHARE_DENY_READ  = 0x0030
     245    OF_SHARE_DENY_NONE  = 0x0040
     246    OF_PARSE            = 0x0100
     247    OF_DELETE           = 0x0200
     248    OF_VERIFY           = 0x0400
     249    OF_CANCEL           = 0x0800
     250    OF_CREATE           = 0x1000
     251    OF_PROMPT           = 0x2000
     252    OF_EXIST            = 0x4000
     253    OF_REOPEN           = 0x8000 
    249254} 
    250255 
    251256enum : DWORD { 
    252     NMPWAIT_NOWAIT           = 1, 
     257    NMPWAIT_NOWAIT           = 1, 
    253258    NMPWAIT_WAIT_FOREVER     = -1, 
    254     NMPWAIT_USE_DEFAULT_WAIT =
     259    NMPWAIT_USE_DEFAULT_WAIT =
    255260} 
    256261 
    257262// for ClearCommError() 
    258263const DWORD 
    259     CE_RXOVER   = 1, 
    260     CE_OVERRUN  = 2, 
    261     CE_RXPARITY = 4, 
    262     CE_FRAME    = 8, 
    263     CE_BREAK    = 16
    264     CE_TXFULL   = 256
    265     CE_PTO      = 512
    266     CE_IOE      = 1024
    267     CE_DNS      = 2048
    268     CE_OOP      = 4096
    269     CE_MODE     = 32768
     264    CE_RXOVER   = 0x0001, 
     265    CE_OVERRUN  = 0x0002, 
     266    CE_RXPARITY = 0x0004, 
     267    CE_FRAME    = 0x0008, 
     268    CE_BREAK    = 0x0010
     269    CE_TXFULL   = 0x0100
     270    CE_PTO      = 0x0200
     271    CE_IOE      = 0x0400
     272    CE_DNS      = 0x0800
     273    CE_OOP      = 0x1000
     274    CE_MODE     = 0x8000
    270275 
    271276// for CopyProgressRoutine callback. 
     
    292297    FILE_MAP_WRITE      = 2, 
    293298    FILE_MAP_READ       = 4, 
    294     FILE_MAP_ALL_ACCESS = 0xf001f 
    295 
    296  
    297 const DWORD 
    298     MUTEX_ALL_ACCESS       = 0x1f0001, 
    299     MUTEX_MODIFY_STATE     = 1, 
    300     SEMAPHORE_ALL_ACCESS   = 0x1f0003, 
    301     SEMAPHORE_MODIFY_STATE = 2, 
    302     EVENT_ALL_ACCESS       = 0x1f0003, 
    303     EVENT_MODIFY_STATE     = 2; 
     299    FILE_MAP_ALL_ACCESS = 0x000F001F 
     300
     301 
     302enum : DWORD { 
     303    MUTEX_ALL_ACCESS       = 0x001f0001, 
     304    MUTEX_MODIFY_STATE     = 0x00000001, 
     305    SEMAPHORE_ALL_ACCESS   = 0x001f0003, 
     306    SEMAPHORE_MODIFY_STATE = 0x00000002, 
     307    EVENT_ALL_ACCESS       = 0x001f0003, 
     308    EVENT_MODIFY_STATE     = 0x00000002 
     309
    304310 
    305311// CreateNamedPipe() 
     
    326332 
    327333// dwCreationFlags for CreateProcess() and CreateProcessAsUser() 
    328 enum : DWORD
     334enum : DWORD
    329335    DEBUG_PROCESS               = 0x00000001, 
    330336    DEBUG_ONLY_THIS_PROCESS     = 0x00000002, 
     
    352358} 
    353359 
    354 const CONSOLE_TEXTMODE_BUFFER = 1; 
     360const DWORD CONSOLE_TEXTMODE_BUFFER = 1; 
    355361 
    356362// CreateFile() 
     
    364370 
    365371// CreateFile() 
    366 enum : DWORD { 
     372const DWORD 
    367373    FILE_FLAG_WRITE_THROUGH      = 0x80000000, 
    368     FILE_FLAG_OVERLAPPED         = 1073741824, 
    369     FILE_FLAG_NO_BUFFERING       = 536870912, 
    370     FILE_FLAG_RANDOM_ACCESS      = 268435456, 
    371     FILE_FLAG_SEQUENTIAL_SCAN    = 134217728, 
    372     FILE_FLAG_DELETE_ON_CLOSE    = 67108864, 
    373     FILE_FLAG_BACKUP_SEMANTICS   = 33554432, 
    374     FILE_FLAG_POSIX_SEMANTICS    = 16777216, 
    375     FILE_FLAG_OPEN_REPARSE_POINT = 2097152, 
    376     FILE_FLAG_OPEN_NO_RECALL     = 1048576 
     374    FILE_FLAG_OVERLAPPED         = 0x40000000, 
     375    FILE_FLAG_NO_BUFFERING       = 0x20000000, 
     376    FILE_FLAG_RANDOM_ACCESS      = 0x10000000, 
     377    FILE_FLAG_SEQUENTIAL_SCAN    = 0x08000000, 
     378    FILE_FLAG_DELETE_ON_CLOSE    = 0x04000000, 
     379    FILE_FLAG_BACKUP_SEMANTICS   = 0x02000000, 
     380    FILE_FLAG_POSIX_SEMANTICS    = 0x01000000, 
     381    FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000, 
     382    FILE_FLAG_OPEN_NO_RECALL     = 0x00100000; 
     383 
     384static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { 
     385    const DWORD FILE_FLAG_FIRST_PIPE_INSTANCE = 0x00080000; 
    377386} 
    378387 
    379388// for CreateFile() 
    380389const DWORD 
    381     SECURITY_ANONYMOUS        = (SECURITY_IMPERSONATION_LEVEL.SecurityAnonymous<<16), 
    382     SECURITY_IDENTIFICATION   = (SECURITY_IMPERSONATION_LEVEL.SecurityIdentification<<16), 
    383     SECURITY_IMPERSONATION    = (SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation<<16), 
    384     SECURITY_DELEGATION       = (SECURITY_IMPERSONATION_LEVEL.SecurityDelegation<<16), 
    385     SECURITY_CONTEXT_TRACKING = 0x40000, 
    386     SECURITY_EFFECTIVE_ONLY   = 0x80000, 
    387     SECURITY_SQOS_PRESENT     = 0x100000, 
    388     SECURITY_VALID_SQOS_FLAGS = 0x1F0000; 
    389  
    390  
    391 static if (_WIN32_WINNT >= 0x0500) { 
    392     const FILE_FLAG_FIRST_PIPE_INSTANCE = 524288; 
    393 
     390    SECURITY_ANONYMOUS        = SECURITY_IMPERSONATION_LEVEL.SecurityAnonymous<<16, 
     391    SECURITY_IDENTIFICATION   = SECURITY_IMPERSONATION_LEVEL.SecurityIdentification<<16, 
     392    SECURITY_IMPERSONATION    = SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation<<16, 
     393    SECURITY_DELEGATION       = SECURITY_IMPERSONATION_LEVEL.SecurityDelegation<<16, 
     394    SECURITY_CONTEXT_TRACKING = 0x00040000, 
     395    SECURITY_EFFECTIVE_ONLY   = 0x00080000, 
     396    SECURITY_SQOS_PRESENT     = 0x00100000, 
     397    SECURITY_VALID_SQOS_FLAGS = 0x001F0000; 
     398 
    394399 
    395400// Thread exit code 
    396401const DWORD STILL_ACTIVE = 0x103; 
    397402 
    398 const FIND_FIRST_EX_CASE_SENSITIVE = 1; 
     403/*  ??? The only documentation of this seems to be about Windows CE and to 
     404 *  state what _doesn't_ support it. 
     405 */ 
     406const DWORD FIND_FIRST_EX_CASE_SENSITIVE = 1; 
    399407 
    400408// GetBinaryType() 
     
    408416} 
    409417 
    410 const MAX_COMPUTERNAME_LENGTH = 15; 
    411  
    412 const HW_PROFILE_GUIDLEN = 39; 
    413  
    414 const MAX_PROFILE_LEN = 80; 
     418const size_t 
     419    MAX_COMPUTERNAME_LENGTH = 15, 
     420    HW_PROFILE_GUIDLEN      = 39, 
     421    MAX_PROFILE_LEN         = 80; 
    415422 
    416423// HW_PROFILE_INFO 
     
    421428    DOCKINFO_USER_UNDOCKED = DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED, 
    422429    DOCKINFO_USER_DOCKED   = DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED; 
    423  
    424430 
    425431// DriveType(), RealDriveType() 
     
    449455 
    450456enum : DWORD { 
    451     STD_INPUT_HANDLE  = 0xfffffff6, 
    452     STD_OUTPUT_HANDLE = 0xfffffff5, 
    453     STD_ERROR_HANDLE  = 0xfffffff4 
    454 
    455  
    456 const INVALID_HANDLE_VALUE = cast(HANDLE)(-1); 
    457  
    458 const GET_TAPE_MEDIA_INFORMATION = 0; 
    459 const GET_TAPE_DRIVE_INFORMATION = 1; 
    460 const SET_TAPE_MEDIA_INFORMATION = 0; 
    461 const SET_TAPE_DRIVE_INFORMATION = 1; 
     457    STD_INPUT_HANDLE  = 0xFFFFFFF6, 
     458    STD_OUTPUT_HANDLE = 0xFFFFFFF5, 
     459    STD_ERROR_HANDLE  = 0xFFFFFFF4 
     460
     461 
     462const HANDLE INVALID_HANDLE_VALUE = cast(HANDLE) (-1); 
     463 
     464enum : DWORD { 
     465    GET_TAPE_MEDIA_INFORMATION = 0, 
     466    GET_TAPE_DRIVE_INFORMATION = 1 
     467
     468 
     469enum : DWORD { 
     470    SET_TAPE_MEDIA_INFORMATION = 0, 
     471    SET_TAPE_DRIVE_INFORMATION = 1 
     472
    462473 
    463474// SetThreadPriority()/GetThreadPriority() 
    464 const int 
    465     THREAD_PRIORITY_ABOVE_NORMAL  = 1, 
    466     THREAD_PRIORITY_BELOW_NORMAL  = -1, 
    467     THREAD_PRIORITY_HIGHEST       = 2, 
     475enum : int { 
    468476    THREAD_PRIORITY_IDLE          = -15, 
    469     THREAD_PRIORITY_LOWEST        = -2, 
    470     THREAD_PRIORITY_NORMAL        = 0, 
    471     THREAD_PRIORITY_TIME_CRITICAL = 15; 
    472  
    473 const int THREAD_PRIORITY_ERROR_RETURN = 2147483647; 
    474  
    475 const TIME_ZONE_ID_UNKNOWN  = 0; 
    476 const TIME_ZONE_ID_STANDARD = 1; 
    477 const TIME_ZONE_ID_DAYLIGHT = 2; 
    478 const TIME_ZONE_ID_INVALID  = 0xFFFFFFFF; 
    479  
    480 const FS_CASE_SENSITIVE         = 1; 
    481 const FS_CASE_IS_PRESERVED      = 2; 
    482 const FS_UNICODE_STORED_ON_DISK = 4; 
    483 const FS_PERSISTENT_ACLS        = 8; 
    484 const FS_FILE_COMPRESSION       = 16; 
    485 const FS_VOL_IS_COMPRESSED      = 32768; 
     477    THREAD_PRIORITY_LOWEST        =  -2, 
     478    THREAD_PRIORITY_BELOW_NORMAL  =  -1, 
     479    THREAD_PRIORITY_NORMAL        =   0, 
     480    THREAD_PRIORITY_ABOVE_NORMAL  =   1, 
     481    THREAD_PRIORITY_HIGHEST       =   2, 
     482    THREAD_PRIORITY_TIME_CRITICAL =  15, 
     483    THREAD_PRIORITY_ERROR_RETURN  = 2147483647 
     484
     485 
     486enum : DWORD { 
     487    TIME_ZONE_ID_UNKNOWN, 
     488    TIME_ZONE_ID_STANDARD, 
     489    TIME_ZONE_ID_DAYLIGHT, 
     490    TIME_ZONE_ID_INVALID = 0xFFFFFFFF 
     491
     492 
     493const DWORD 
     494    FS_CASE_SENSITIVE         =     1, 
     495    FS_CASE_IS_PRESERVED      =     2, 
     496    FS_UNICODE_STORED_ON_DISK =     4, 
     497    FS_PERSISTENT_ACLS        =     8, 
     498    FS_FILE_COMPRESSION       =    16, 
     499    FS_VOL_IS_COMPRESSED      = 32768; 
    486500 
    487501// Flags for GlobalAlloc 
    488 enum : SIZE_T { 
    489     GMEM_FIXED    = 0, 
    490     GMEM_MOVEABLE = 2, 
    491     GMEM_ZEROINIT = 64, 
    492     GPTR          = 66, 
    493     // Used only for GlobalRealloc 
    494     GMEM_MODIFY = 128 
     502const UINT 
     503    GMEM_FIXED       = 0, 
     504    GMEM_MOVEABLE    = 0x0002, 
     505    GMEM_ZEROINIT    = 0x0040, 
     506    GPTR             = 0x0040, 
     507    GHND             = 0x0042, 
     508    GMEM_MODIFY      = 0x0080,  // used only for GlobalRealloc 
     509    GMEM_VALID_FLAGS = 0x7F72; 
    495510 
    496511/+  // Obselete flags (Win16 only) 
     
    504519 
    505520    GMEM_LOCKCOUNT=255; 
     521 
     522// for GlobalFlags() 
     523    GMEM_DISCARDED      = 16384; 
     524    GMEM_INVALID_HANDLE = 32768; 
     525 
     526    GMEM_NOTIFY         = 16384; 
    506527+/ 
    507 
    508  
    509 // for GlobalFlags(). 
    510 const GMEM_DISCARDED      = 16384; 
    511 const GMEM_INVALID_HANDLE = 32768; 
    512  
    513 const GMEM_NOTIFY         = 16384; 
    514 const GMEM_VALID_FLAGS    = 32626; 
    515  
    516 const GHND = 64; 
    517  
    518 const LMEM_FIXED          = 0; 
    519 const LMEM_MOVEABLE       = 2; 
    520 const LMEM_NONZEROLHND    = 2; 
    521 const LMEM_NONZEROLPTR    = 0; 
    522 const LMEM_DISCARDABLE    = 3840; 
    523 const LMEM_NOCOMPACT      = 16; 
    524 const LMEM_NODISCARD      = 32; 
    525 const LMEM_ZEROINIT       = 64; 
    526 const LMEM_MODIFY         = 128; 
    527 const LMEM_LOCKCOUNT      = 255; 
    528 const LMEM_DISCARDED      = 16384; 
    529 const LMEM_INVALID_HANDLE = 32768; 
    530  
    531 const LPTR = 64; 
    532 const LHND = 66; 
    533  
    534 const NONZEROLHND = 2; 
    535 const NONZEROLPTR = 0; 
     528 
     529const UINT 
     530    LMEM_FIXED          = 0, 
     531    LMEM_MOVEABLE       = 0x0002, 
     532    LMEM_NONZEROLPTR    = 0, 
     533    NONZEROLPTR         = 0, 
     534    LMEM_NONZEROLHND    = 0x0002, 
     535    NONZEROLHND         = 0x0002, 
     536    LMEM_DISCARDABLE    = 0x0F00, 
     537    LMEM_NOCOMPACT      = 0x0010, 
     538    LMEM_NODISCARD      = 0x0020, 
     539    LMEM_ZEROINIT       = 0x0040, 
     540    LPTR                = 0x0040, 
     541    LHND                = 0x0042, 
     542    LMEM_MODIFY         = 0x0080, 
     543    LMEM_LOCKCOUNT      = 0x00FF, 
     544    LMEM_DISCARDED      = 0x4000, 
     545    LMEM_INVALID_HANDLE = 0x8000; 
     546 
     547 
    536548 
    537549// used in EXCEPTION_RECORD 
     
    601613// for PROCESS_HEAP_ENTRY 
    602614const WORD 
    603     PROCESS_HEAP_REGION            = 1, 
    604     PROCESS_HEAP_UNCOMMITTED_RANGE = 2, 
    605     PROCESS_HEAP_ENTRY_BUSY        = 4, 
     615    PROCESS_HEAP_REGION            = 1, 
     616    PROCESS_HEAP_UNCOMMITTED_RANGE = 2, 
     617    PROCESS_HEAP_ENTRY_BUSY        = 4, 
    606618    PROCESS_HEAP_ENTRY_MOVEABLE    = 16, 
    607619    PROCESS_HEAP_ENTRY_DDESHARE    = 32; 
     
    609621// for LoadLibraryEx() 
    610622const DWORD 
    611     DONT_RESOLVE_DLL_REFERENCES   = 1, // not for WinME and earlier 
    612     LOAD_LIBRARY_AS_DATAFILE      = 2, 
    613     LOAD_WITH_ALTERED_SEARCH_PATH = 8, 
     623    DONT_RESOLVE_DLL_REFERENCES   = 0x01, // not for WinME and earlier 
     624    LOAD_LIBRARY_AS_DATAFILE      = 0x02, 
     625    LOAD_WITH_ALTERED_SEARCH_PATH = 0x08, 
    614626    LOAD_IGNORE_CODE_AUTHZ_LEVEL  = 0x10; // only for XP and later 
    615627 
     
    619631    LOCKFILE_EXCLUSIVE_LOCK   = 2; 
    620632 
    621 static if (_WIN32_WINNT_ONLY) { 
    622     // for LogonUser() 
    623     enum : DWORD { 
    624         LOGON32_LOGON_INTERACTIVE = 2, 
    625         LOGON32_LOGON_NETWORK     = 3, 
    626         LOGON32_LOGON_BATCH       = 4, 
    627         LOGON32_LOGON_SERVICE     = 5, 
    628         LOGON32_LOGON_UNLOCK      = 7 
    629     } 
    630  
    631     static if (_WIN32_WINNT >= 0x500) enum : DWORD { 
    632         LOGON32_LOGON_NETWORK_CLEARTEXT = 8, 
    633         LOGON32_LOGON_NEW_CREDENTIALS   = 9 
    634     } 
    635  
    636     // for LogonUser() 
    637     enum : DWORD { 
    638         LOGON32_PROVIDER_DEFAULT = 0, 
    639         LOGON32_PROVIDER_WINNT35 = 1, 
    640         LOGON32_PROVIDER_WINNT40 = 2, 
    641         LOGON32_PROVIDER_WINNT50 = 3 
    642     } 
    643 } 
    644  
    645 // for MoveFileEx() 
    646 const DWORD 
    647     MOVEFILE_REPLACE_EXISTING   = 1, 
    648     MOVEFILE_COPY_ALLOWED       = 2, 
    649     MOVEFILE_DELAY_UNTIL_REBOOT = 4, 
    650     MOVEFILE_WRITE_THROUGH      = 8; 
    651  
    652633const MAXIMUM_WAIT_OBJECTS  = 64; 
    653634const MAXIMUM_SUSPEND_COUNT = 0x7F; 
     
    659640 
    660641enum : DWORD { 
    661     WAIT_IO_COMPLETION = 0xC0, 
    662     WAIT_ABANDONED     = 128
     642    WAIT_IO_COMPLETION = 0x000000C0, 
     643    WAIT_ABANDONED     = 0x00000080
    663644    WAIT_FAILED        = 0xFFFFFFFF 
    664645} 
     
    690671// FormatMessage() 
    691672const DWORD 
    692     FORMAT_MESSAGE_ALLOCATE_BUFFER = 256
    693     FORMAT_MESSAGE_IGNORE_INSERTS  = 512
    694     FORMAT_MESSAGE_FROM_STRING     = 1024
    695     FORMAT_MESSAGE_FROM_HMODULE    = 2048
    696     FORMAT_MESSAGE_FROM_SYSTEM     = 4096
    697     FORMAT_MESSAGE_ARGUMENT_ARRAY  = 8192
     673    FORMAT_MESSAGE_ALLOCATE_BUFFER = 0x0100
     674    FORMAT_MESSAGE_IGNORE_INSERTS  = 0x0200
     675    FORMAT_MESSAGE_FROM_STRING     = 0x0400
     676    FORMAT_MESSAGE_FROM_HMODULE    = 0x0800
     677    FORMAT_MESSAGE_FROM_SYSTEM     = 0x1000
     678    FORMAT_MESSAGE_ARGUMENT_ARRAY  = 0x2000
    698679 
    699680const DWORD FORMAT_MESSAGE_MAX_WIDTH_MASK = 255; 
     
    719700// Return type for exception filters. 
    720701enum : LONG { 
    721     EXCEPTION_EXECUTE_HANDLER    = 1, 
     702    EXCEPTION_EXECUTE_HANDLER    = 1, 
    722703    EXCEPTION_CONTINUE_EXECUTION = -1, 
    723     EXCEPTION_CONTINUE_SEARCH    =
     704    EXCEPTION_CONTINUE_SEARCH    =
    724705} 
    725706 
     
    729710} 
    730711 
    731 const IGNORE = 0; 
     712const IGNORE   = 0; 
    732713const INFINITE = 0xFFFFFFFF; 
    733714 
    734715// EscapeCommFunction() 
    735716enum { 
    736     SETXOFF = 1, 
     717    SETXOFF    = 1, 
    737718    SETXON, 
    738719    SETRTS, 
    739720    CLRRTS, 
    740721    SETDTR, 
    741     CLRDTR, // =
    742     SETBREAK = 8, 
    743     CLRBREAK = 9 
     722    CLRDTR, // =
     723    SETBREAK   = 8, 
     724    CLRBREAK   = 9 
    744725} 
    745726 
     
    747728// for SetCommMask() 
    748729const DWORD 
    749     EV_RXCHAR   = 1, 
    750     EV_RXFLAG   = 2, 
    751     EV_TXEMPTY  = 4, 
    752     EV_CTS      = 8, 
    753     EV_DSR      = 16
    754     EV_RLSD     = 32
    755     EV_BREAK    = 64
    756     EV_ERR      = 128
    757     EV_RING     = 256
    758     EV_PERR     = 512
    759     EV_RX80FULL = 1024
    760     EV_EVENT1   = 2048
    761     EV_EVENT2   = 4096
     730    EV_RXCHAR   = 0x0001, 
     731    EV_RXFLAG   = 0x0002, 
     732    EV_TXEMPTY  = 0x0004, 
     733    EV_CTS      = 0x0008, 
     734    EV_DSR      = 0x0010
     735    EV_RLSD     = 0x0020
     736    EV_BREAK    = 0x0040
     737    EV_ERR      = 0x0080
     738    EV_RING     = 0x0100
     739    EV_PERR     = 0x0200
     740    EV_RX80FULL = 0x0400
     741    EV_EVENT1   = 0x0800
     742    EV_EVENT2   = 0x1000
    762743 
    763744// GetCommModemStatus() 
    764745const DWORD 
    765     MS_CTS_ON  = 16
    766     MS_DSR_ON  = 32
    767     MS_RING_ON = 64
    768     MS_RLSD_ON = 128
     746    MS_CTS_ON  = 0x0010
     747    MS_DSR_ON  = 0x0020
     748    MS_RING_ON = 0x0040
     749    MS_RLSD_ON = 0x0080
    769750 
    770751 
     
    785766// DCB 
    786767enum : DWORD { 
    787     CBR_110    = 110, 
    788     CBR_300    = 300, 
    789     CBR_600    = 600, 
    790     CBR_1200   = 1200, 
    791     CBR_2400   = 2400, 
    792     CBR_4800   = 4800, 
    793     CBR_9600   = 9600, 
    794     CBR_14400  = 14400, 
    795     CBR_19200  = 19200, 
    796     CBR_38400  = 38400, 
    797     CBR_56000  = 56000, 
    798     CBR_57600  = 57600, 
     768    CBR_110    =    110, 
     769    CBR_300    =    300, 
     770    CBR_600    =    600, 
     771    CBR_1200   =   1200, 
     772    CBR_2400   =   2400, 
     773    CBR_4800   =   4800, 
     774    CBR_9600   =   9600, 
     775    CBR_14400  = 14400, 
     776    CBR_19200  = 19200, 
     777    CBR_38400  = 38400, 
     778    CBR_56000  = 56000, 
     779    CBR_57600  = 57600, 
    799780    CBR_115200 = 115200, 
    800781    CBR_128000 = 128000, 
     
    840821// STARTUPINFO 
    841822const DWORD 
    842     STARTF_USESHOWWINDOW    = 1, 
    843     STARTF_USESIZE          = 2, 
    844     STARTF_USEPOSITION      = 4, 
    845     STARTF_USECOUNTCHARS    = 8, 
    846     STARTF_USEFILLATTRIBUTE = 16
    847     STARTF_RUNFULLSCREEN    = 32
    848     STARTF_FORCEONFEEDBACK  = 64
    849     STARTF_FORCEOFFFEEDBACK = 128
    850     STARTF_USESTDHANDLES    = 256
    851     STARTF_USEHOTKEY        = 512
     823    STARTF_USESHOWWINDOW    = 0x0001, 
     824    STARTF_USESIZE          = 0x0002, 
     825    STARTF_USEPOSITION      = 0x0004, 
     826    STARTF_USECOUNTCHARS    = 0x0008, 
     827    STARTF_USEFILLATTRIBUTE = 0x0010
     828    STARTF_RUNFULLSCREEN    = 0x0020
     829    STARTF_FORCEONFEEDBACK  = 0x0040
     830    STARTF_FORCEOFFFEEDBACK = 0x0080
     831    STARTF_USESTDHANDLES    = 0x0100
     832    STARTF_USEHOTKEY        = 0x0200
    852833 
    853834// ??? 
     
    859840} 
    860841 
    861 // ??? 
     842/+ These seem to be Windows CE-specific 
    862843enum { 
    863844    AC_LINE_OFFLINE      = 0, 
     
    867848} 
    868849 
    869 // ??? 
    870850enum { 
    871851    BATTERY_FLAG_HIGH          = 1, 
     
    878858    BATTERY_LIFE_UNKNOWN       = 0xFFFFFFFF 
    879859} 
    880  
    881 // DefineDosDevice() 
    882 const DWORD 
    883     DDD_RAW_TARGET_PATH       = 1, 
    884     DDD_REMOVE_DEFINITION     = 2, 
    885     DDD_EXACT_MATCH_ON_REMOVE = 4; 
     860+/ 
    886861 
    887862// ??? 
     
    893868const DWORD TLS_OUT_OF_INDEXES = 0xFFFFFFFF; 
    894869 
    895 static if (WINVER >= 0x501) { 
    896     const DWORD 
    897         GET_MODULE_HANDLE_EX_FLAG_PIN                = 1, 
    898         GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2, 
    899         GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS       = 4; 
    900 } 
    901  
    902 static if (_WIN32_WINNT >= 0x0501) { 
    903     // for ACTCTX 
    904     const DWORD 
    905         ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = 0x00000001, 
    906         ACTCTX_FLAG_LANGID_VALID                 = 0x00000002, 
    907         ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID     = 0x00000004, 
    908         ACTCTX_FLAG_RESOURCE_NAME_VALID          = 0x00000008, 
    909         ACTCTX_FLAG_SET_PROCESS_DEFAULT          = 0x00000010, 
    910         ACTCTX_FLAG_APPLICATION_NAME_VALID       = 0x00000020, 
    911         ACTCTX_FLAG_HMODULE_VALID                = 0x00000080; 
    912  
    913     // DeactivateActCtx() 
    914     const DWORD DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = 0x00000001; 
    915     // FindActCtxSectionString() 
    916     const DWORD FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX          = 0x00000001; 
    917     // QueryActCtxW() 
    918     const DWORD 
    919         QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX             = 0x00000004, 
    920         QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE             = 0x00000008, 
    921         QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS             = 0x00000010; 
    922 } 
    923  
    924 static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x0500) { 
    925     // ReplaceFile() 
    926     const DWORD 
    927         REPLACEFILE_WRITE_THROUGH       = 0x00000001, 
    928         REPLACEFILE_IGNORE_MERGE_ERRORS = 0x00000002; 
    929 } 
    930  
    931870// GetWriteWatch() 
    932871const DWORD WRITE_WATCH_FLAG_RESET = 1; 
     872 
     873static if (_WIN32_WINNT_ONLY) { 
     874    // for LogonUser() 
     875    enum : DWORD { 
     876        LOGON32_LOGON_INTERACTIVE = 2, 
     877        LOGON32_LOGON_NETWORK     = 3, 
     878        LOGON32_LOGON_BATCH       = 4, 
     879        LOGON32_LOGON_SERVICE     = 5, 
     880        LOGON32_LOGON_UNLOCK      = 7 
     881    } 
     882 
     883    static if (_WIN32_WINNT >= 0x500) { 
     884        enum : DWORD { 
     885            LOGON32_LOGON_NETWORK_CLEARTEXT = 8, 
     886            LOGON32_LOGON_NEW_CREDENTIALS   = 9 
     887        } 
     888    } 
     889 
     890    // for LogonUser() 
     891    enum : DWORD { 
     892        LOGON32_PROVIDER_DEFAULT, 
     893        LOGON32_PROVIDER_WINNT35, 
     894        LOGON32_PROVIDER_WINNT40, 
     895        LOGON32_PROVIDER_WINNT50 
     896    } 
     897 
     898    // for MoveFileEx() 
     899    const DWORD 
     900        MOVEFILE_REPLACE_EXISTING   = 1, 
     901        MOVEFILE_COPY_ALLOWED       = 2, 
     902        MOVEFILE_DELAY_UNTIL_REBOOT = 4, 
     903        MOVEFILE_WRITE_THROUGH      = 8; 
     904 
     905    // DefineDosDevice() 
     906    const DWORD 
     907        DDD_RAW_TARGET_PATH       = 1, 
     908        DDD_REMOVE_DEFINITION     = 2, 
     909        DDD_EXACT_MATCH_ON_REMOVE = 4; 
     910 
     911    static if (_WIN32_WINNT >= 0x500) { 
     912        // ReplaceFile() 
     913        const DWORD 
     914            REPLACEFILE_WRITE_THROUGH       = 1, 
     915            REPLACEFILE_IGNORE_MERGE_ERRORS = 2; 
     916    } 
     917 
     918    static if (_WIN32_WINNT >= 0x501) { 
     919        const DWORD 
     920            GET_MODULE_HANDLE_EX_FLAG_PIN                = 1, 
     921            GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2, 
     922            GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS       = 4; 
     923 
     924        // for ACTCTX 
     925        const DWORD 
     926            ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID = 0x01, 
     927            ACTCTX_FLAG_LANGID_VALID                 = 0x02, 
     928            ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID     = 0x04, 
     929            ACTCTX_FLAG_RESOURCE_NAME_VALID          = 0x08, 
     930            ACTCTX_FLAG_SET_PROCESS_DEFAULT          = 0x10, 
     931            ACTCTX_FLAG_APPLICATION_NAME_VALID       = 0x20, 
     932            ACTCTX_FLAG_HMODULE_VALID                = 0x80; 
     933 
     934        // DeactivateActCtx() 
     935        const DWORD DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION = 1; 
     936        // FindActCtxSectionString() 
     937        const DWORD FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX          = 1; 
     938        // QueryActCtxW() 
     939        const DWORD 
     940            QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX             = 0x04, 
     941            QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE             = 0x08, 
     942            QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS             = 0x10; 
     943    } 
     944} 
    933945 
    934946// ---- 
     
    974986+/ 
    975987    uint _bf; 
    976     void fBinary(bool f)         { _bf = (_bf & ~1) | f; } 
    977     void fParity(bool f)         { _bf = (_bf & ~2) | (f<<1); } 
    978     void fOutxCtsFlow(bool f)    { _bf = (_bf & ~4)| (f<<2); } 
    979     void fOutxDsrFlow(bool f)    { _bf = (_bf & ~8) | (f<<3);
    980     void fDtrControl(byte x)     { _bf = (_bf & ~(32+16)) | (x<<4); } 
    981     void fDsrSensitivity(bool f) { _bf = (_bf & ~64) | (f<<6); } 
    982     void fTXContinueOnXoff(bool f) { _bf = (_bf & ~128) | (f<<7); } 
    983     void fOutX(bool f)           { _bf = (_bf & ~256) | (f<<8); } 
    984     void fInX(bool f)            { _bf = (_bf & ~512) | (f<<9); } 
    985     void fErrorChar(bool f)      { _bf = (_bf & ~1024) | (f<<10); } 
    986     void fNull(bool f)           { _bf = (_bf & ~2048) | (f<<11); } 
    987     void fRtsControl(byte x)     { _bf = (_bf & ~(4096+8192)) | (x<<12); } 
    988     void fAbortOnError(bool f)   { _bf = (_bf & ~16384) | (f<<14); } 
    989  
    990     bool fBinary()         { return cast(bool) (_bf & 1); } 
    991     bool fParity()         { return cast(bool) (_bf & 2); } 
    992     bool fOutxCtsFlow()    { return cast(bool) (_bf & 4); } 
    993     bool fOutxDsrFlow()    { return cast(bool) (_bf & 8); } 
    994     byte fDtrControl()     { return cast(byte) ((_bf & (32+16))>>4); } 
    995     bool fDsrSensitivity() { return cast(bool) (_bf & 64); } 
     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 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 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); } 
    9961008    bool fTXContinueOnXoff() { return cast(bool) (_bf & 128); } 
    997     bool fOutX()           { return cast(bool) (_bf & 256); } 
    998     bool fInX()            { return cast(bool) (_bf & 512); } 
    999     bool fErrorChar()      { return cast(bool) (_bf & 1024); } 
    1000     bool fNull()           { return cast(bool) (_bf & 2048); } 
    1001     byte fRtsControl()     { return cast(byte) ((_bf & (4096+8192))>>12); } 
    1002     bool fAbortOnError()   { return cast(bool) (_bf & 16384); } 
     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); } 
    10031015 
    10041016    WORD wReserved; 
     
    10181030 
    10191031struct COMMCONFIG { 
    1020     DWORD dwSize
     1032    DWORD dwSize = COMMCONFIG.sizeof
    10211033    WORD  wVersion; 
    10221034    WORD  wReserved; 
     
    10251037    DWORD dwProviderOffset; 
    10261038    DWORD dwProviderSize; 
    1027     WCHAR wcProviderData[1]; 
     1039    WCHAR _wcProviderData; 
     1040 
     1041    WCHAR* wcProviderData() { return &_wcProviderData; } 
    10281042} 
    10291043alias COMMCONFIG* LPCOMMCONFIG; 
     
    10501064+/ 
    10511065    DWORD _bf; 
    1052     void fCtsHold(bool f)  { _bf = (_bf & ~1) | f ; } 
    1053     void fDsrHold(bool f)  { _bf = (_bf & ~2) | (f<<1); } 
    1054     void fRlsdHold(bool f) { _bf = (_bf & ~4) | (f<<2); } 
    1055     void fXoffHold(bool f) { _bf = (_bf & ~8) | (f<<3); } 
    1056     void fXoffSent(bool f) { _bf = (_bf & ~16) | (f<<4); } 
    1057     void fEof(bool f)      { _bf = (_bf & ~32) | (f<<5); } 
    1058     void fTxim(bool f)     { _bf = (_bf & ~64) | (f<<6); } 
     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; } 
    10591073 
    10601074    bool fCtsHold()  { return cast(bool) (_bf & 1); } 
     
    10761090    HANDLE hThread; 
    10771091    LPVOID lpBaseOfImage; 
    1078     DWORD dwDebugInfoFileOffset; 
    1079     DWORD nDebugInfoSize; 
     1092    DWORD dwDebugInfoFileOffset; 
     1093    DWORD nDebugInfoSize; 
    10801094    LPVOID lpThreadLocalBase; 
    10811095    LPTHREAD_START_ROUTINE lpStartAddress; 
    10821096    LPVOID lpImageName; 
    1083     WORD fUnicode; 
     1097    WORD   fUnicode; 
    10841098} 
    10851099alias CREATE_PROCESS_DEBUG_INFO* LPCREATE_PROCESS_DEBUG_INFO; 
     
    10941108struct EXCEPTION_DEBUG_INFO { 
    10951109    EXCEPTION_RECORD ExceptionRecord; 
    1096     DWORD dwFirstChance; 
     1110    DWORD            dwFirstChance; 
    10971111} 
    10981112alias EXCEPTION_DEBUG_INFO* LPEXCEPTION_DEBUG_INFO; 
     
    11111125    HANDLE hFile; 
    11121126    LPVOID lpBaseOfDll; 
    1113     DWORD dwDebugInfoFileOffset; 
    1114     DWORD nDebugInfoSize; 
     1127    DWORD dwDebugInfoFileOffset; 
     1128    DWORD nDebugInfoSize; 
    11151129    LPVOID lpImageName; 
    1116     WORD fUnicode; 
     1130    WORD   fUnicode; 
    11171131} 
    11181132alias LOAD_DLL_DEBUG_INFO* LPLOAD_DLL_DEBUG_INFO; 
     
    11251139struct OUTPUT_DEBUG_STRING_INFO { 
    11261140    LPSTR lpDebugStringData; 
    1127     WORD fUnicode; 
    1128     WORD nDebugStringLength; 
     1141    WORD fUnicode; 
     1142    WORD nDebugStringLength; 
    11291143} 
    11301144alias OUTPUT_DEBUG_STRING_INFO* LPOUTPUT_DEBUG_STRING_INFO; 
     
    11411155    DWORD dwThreadId; 
    11421156    union { 
    1143         EXCEPTION_DEBUG_INFO Exception; 
    1144         CREATE_THREAD_DEBUG_INFO CreateThread; 
     1157        EXCEPTION_DEBUG_INFO      Exception; 
     1158        CREATE_THREAD_DEBUG_INFO CreateThread; 
    11451159        CREATE_PROCESS_DEBUG_INFO CreateProcessInfo; 
    1146         EXIT_THREAD_DEBUG_INFO ExitThread; 
    1147         EXIT_PROCESS_DEBUG_INFO ExitProcess; 
    1148         LOAD_DLL_DEBUG_INFO LoadDll; 
    1149         UNLOAD_DLL_DEBUG_INFO UnloadDll; 
    1150         OUTPUT_DEBUG_STRING_INFO DebugString; 
    1151         RIP_INFO RipInfo; 
     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; 
    11521166    } 
    11531167} 
     
    12101224    HANDLE hProcess; 
    12111225    HANDLE hThread; 
    1212     DWORD dwProcessId; 
    1213     DWORD dwThreadId; 
     1226    DWORD dwProcessId; 
     1227    DWORD dwThreadId; 
    12141228} 
    12151229alias PROCESS_INFORMATION* PPROCESS_INFORMATION, LPPROCESS_INFORMATION; 
    12161230 
    12171231struct CRITICAL_SECTION_DEBUG { 
    1218     WORD Type; 
    1219     WORD CreatorBackTraceIndex; 
     1232    WORD              Type; 
     1233    WORD              CreatorBackTraceIndex; 
    12201234    CRITICAL_SECTION* CriticalSection; 
    1221     LIST_ENTRY ProcessLocksList; 
    1222     DWORD EntryCount; 
    1223     DWORD ContentionCount; 
    1224     DWORD Spare [2]
     1235    LIST_ENTRY        ProcessLocksList; 
     1236    DWORD             EntryCount; 
     1237    DWORD             ContentionCount; 
     1238    DWORD[2]          Spare
    12251239} 
    12261240alias CRITICAL_SECTION_DEBUG* PCRITICAL_SECTION_DEBUG; 
     
    12281242struct CRITICAL_SECTION { 
    12291243    PCRITICAL_SECTION_DEBUG DebugInfo; 
    1230     LONG LockCount; 
    1231     LONG RecursionCount; 
     1244    LONG   LockCount; 
     1245    LONG   RecursionCount; 
    12321246    HANDLE OwningThread; 
    12331247    HANDLE LockSemaphore; 
    1234     DWORD SpinCount; 
     1248    DWORD SpinCount; 
    12351249} 
    12361250alias CRITICAL_SECTION* PCRITICAL_SECTION, LPCRITICAL_SECTION; 
     
    12481262alias SYSTEMTIME* LPSYSTEMTIME; 
    12491263 
    1250 struct WIN32_FILE_ATTRIBUTE_DATA { 
    1251     DWORD    dwFileAttributes; 
    1252     FILETIME ftCreationTime; 
    1253     FILETIME ftLastAccessTime; 
    1254     FILETIME ftLastWriteTime; 
    1255     DWORD    nFileSizeHigh; 
    1256     DWORD    nFileSizeLow; 
    1257 
    1258 alias WIN32_FILE_ATTRIBUTE_DATA* LPWIN32_FILE_ATTRIBUTE_DATA; 
     1264static if (_WIN32_WINDOWS >= 0x410) { 
     1265    struct WIN32_FILE_ATTRIBUTE_DATA { 
     1266        DWORD    dwFileAttributes; 
     1267        FILETIME ftCreationTime; 
     1268        FILETIME ftLastAccessTime; 
     1269        FILETIME ftLastWriteTime; 
     1270        DWORD    nFileSizeHigh; 
     1271        DWORD    nFileSizeLow; 
     1272    } 
     1273    alias WIN32_FILE_ATTRIBUTE_DATA* LPWIN32_FILE_ATTRIBUTE_DATA; 
     1274
    12591275 
    12601276struct WIN32_FIND_DATAA { 
     
    12981314alias WIN32_FIND_DATAW* PWIN32_FIND_DATAW, LPWIN32_FIND_DATAW; 
    12991315 
    1300 struct WIN32_STREAM_ID { 
    1301     DWORD dwStreamId; 
    1302     DWORD dwStreamAttributes; 
    1303     LARGE_INTEGER Size; 
    1304     DWORD dwStreamNameSize; 
    1305     WCHAR cStreamName[ANYSIZE_ARRAY]; 
    1306 
    1307 alias WIN32_STREAM_ID* LPWIN32_STREAM_ID; 
    1308  
    1309 enum FINDEX_INFO_LEVELS { 
    1310     FindExInfoStandard, 
    1311     FindExInfoMaxInfoLevel 
    1312 
    1313  
    1314 enum FINDEX_SEARCH_OPS { 
    1315     FindExSearchNameMatch, 
    1316     FindExSearchLimitToDirectories, 
    1317     FindExSearchLimitToDevices, 
    1318     FindExSearchMaxSearchOp 
    1319 
    1320  
    1321 enum ACL_INFORMATION_CLASS { 
    1322     AclRevisionInformation=1, 
    1323     AclSizeInformation 
    1324 
    1325  
    1326 struct HW_PROFILE_INFOA { 
    1327     DWORD dwDockInfo; 
    1328     CHAR szHwProfileGuid[HW_PROFILE_GUIDLEN]; 
    1329     CHAR szHwProfileName[MAX_PROFILE_LEN]; 
    1330 
    1331 alias HW_PROFILE_INFOA* LPHW_PROFILE_INFOA; 
    1332  
    1333 struct HW_PROFILE_INFOW { 
    1334     DWORD dwDockInfo; 
    1335     WCHAR szHwProfileGuid[HW_PROFILE_GUIDLEN]; 
    1336     WCHAR szHwProfileName[MAX_PROFILE_LEN]; 
    1337 
    1338 alias HW_PROFILE_INFOW* LPHW_PROFILE_INFOW; 
    1339  
     1316static if (_WIN32_WINNT_ONLY) { 
     1317    struct WIN32_STREAM_ID { 
     1318        DWORD         dwStreamId; 
     1319        DWORD         dwStreamAttributes; 
     1320        LARGE_INTEGER Size; 
     1321        DWORD         dwStreamNameSize; 
     1322        WCHAR         _cStreamName; 
     1323 
     1324        WCHAR* cStreamName() { return &_cStreamName; } 
     1325    } 
     1326    alias WIN32_STREAM_ID* LPWIN32_STREAM_ID; 
     1327 
     1328    enum FINDEX_INFO_LEVELS { 
     1329        FindExInfoStandard, 
     1330        FindExInfoMaxInfoLevel 
     1331    } 
     1332 
     1333    enum FINDEX_SEARCH_OPS { 
     1334        FindExSearchNameMatch, 
     1335        FindExSearchLimitToDirectories, 
     1336        FindExSearchLimitToDevices, 
     1337        FindExSearchMaxSearchOp 
     1338    } 
     1339 
     1340    enum ACL_INFORMATION_CLASS { 
     1341        AclRevisionInformation = 1, 
     1342        AclSizeInformation 
     1343    } 
     1344 
     1345    struct HW_PROFILE_INFOA { 
     1346        DWORD dwDockInfo; 
     1347        CHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; 
     1348        CHAR[MAX_PROFILE_LEN]    szHwProfileName; 
     1349    } 
     1350    alias HW_PROFILE_INFOA* LPHW_PROFILE_INFOA; 
     1351 
     1352    struct HW_PROFILE_INFOW { 
     1353        DWORD dwDockInfo; 
     1354        WCHAR[HW_PROFILE_GUIDLEN] szHwProfileGuid; 
     1355        WCHAR[MAX_PROFILE_LEN]    szHwProfileName; 
     1356    } 
     1357    alias HW_PROFILE_INFOW* LPHW_PROFILE_INFOW; 
     1358
     1359 
     1360/*  ??? MSDN documents this only for Windows CE/Mobile, but it's used by 
     1361 *  GetFileAttributesEx, which is in desktop Windows. 
     1362 */ 
    13401363enum GET_FILEEX_INFO_LEVELS { 
    13411364    GetFileExInfoStandard, 
     
    13581381    DWORD dwProcessorType; 
    13591382    DWORD dwAllocationGranularity; 
    1360     WORD wProcessorLevel; 
    1361     WORD wProcessorRevision; 
     1383    WORD wProcessorLevel; 
     1384    WORD wProcessorRevision; 
    13621385} 
    13631386alias SYSTEM_INFO* LPSYSTEM_INFO; 
    13641387 
    1365 struct SYSTEM_POWER_STATUS { 
    1366     BYTE ACLineStatus; 
    1367     BYTE BatteryFlag; 
    1368     BYTE BatteryLifePercent; 
    1369     BYTE Reserved1; 
    1370     DWORD BatteryLifeTime; 
    1371     DWORD BatteryFullLifeTime; 
    1372 
    1373 alias SYSTEM_POWER_STATUS* LPSYSTEM_POWER_STATUS; 
     1388static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { 
     1389    struct SYSTEM_POWER_STATUS { 
     1390        BYTE ACLineStatus; 
     1391        BYTE BatteryFlag; 
     1392        BYTE BatteryLifePercent; 
     1393        BYTE Reserved1; 
     1394        DWORD BatteryLifeTime; 
     1395        DWORD BatteryFullLifeTime; 
     1396    } 
     1397    alias SYSTEM_POWER_STATUS* LPSYSTEM_POWER_STATUS; 
     1398
    13741399 
    13751400struct TIME_ZONE_INFORMATION { 
    1376     LONG Bias; 
    1377     WCHAR StandardName[32]
     1401    LONG       Bias; 
     1402    WCHAR[32]  StandardName
    13781403    SYSTEMTIME StandardDate; 
    1379     LONG StandardBias; 
    1380     WCHAR DaylightName[32]
     1404    LONG       StandardBias; 
     1405    WCHAR[32]  DaylightName
    13811406    SYSTEMTIME DaylightDate; 
    1382     LONG DaylightBias; 
     1407    LONG       DaylightBias; 
    13831408} 
    13841409alias TIME_ZONE_INFORMATION* LPTIME_ZONE_INFORMATION; 
    13851410 
     1411// MSDN documents this, possibly erroneously, as Win2000+. 
    13861412struct MEMORYSTATUS { 
    13871413    DWORD dwLength; 
     
    13961422alias MEMORYSTATUS* LPMEMORYSTATUS; 
    13971423 
    1398 static if (_WIN32_WINNT >= 0x0500) { 
     1424static if (_WIN32_WINNT >= 0x500) { 
    13991425    struct MEMORYSTATUSEX { 
    1400         DWORD dwLength; 
    1401         DWORD dwMemoryLoad; 
     1426        DWORD     dwLength; 
     1427        DWORD     dwMemoryLoad; 
    14021428        DWORDLONG ullTotalPhys; 
    14031429        DWORDLONG ullAvailPhys; 
     
    14201446        BYTE BaseHi; 
    14211447 
    1422         void Type(byte f)  { Flags1 = cast(BYTE)((Flags1 & 0xE0) | f); } 
    1423         void Dpl(byte f)   { Flags1 = cast(BYTE)((Flags1 & 0x9F) | (f<<5)); } 
    1424         void Pres(bool f)  { Flags1 = cast(BYTE)((Flags1 & 0x7F) | (f<<7)); } 
    1425  
    1426         void LimitHi(byte f) { Flags2 = cast(BYTE)((Flags2 & 0xF0) | (f&0x0F)); } 
    1427         void Sys(bool f)     { Flags2 = cast(BYTE)((Flags2 & 0xEF) | (f<<4)); } 
     1448        byte Type(byte f)        { Flags1 = cast(BYTE) ((Flags1 & 0xE0) | f); return f & 0x1F; } 
     1449        byte Dpl(byte f)         { Flags1 = cast(BYTE) ((Flags1 & 0x9F) | (f<<5)); return f & 3; } 
     1450        bool Pres(bool f)        { Flags1 = cast(BYTE) ((Flags1 & 0x7F) | (f<<7)); return f; } 
     1451 
     1452        byte LimitHi(byte f)     { Flags2 = cast(BYTE) ((Flags2 & 0xF0) | (f&0x0F)); return f & 0x0F; } 
     1453        bool Sys(bool f)         { Flags2 = cast(BYTE) ((Flags2 & 0xEF) | (f<<4)); return f; } 
    14281454        // Next bit is reserved 
    1429         void Default_Big(bool f) { Flags2 = cast(BYTE)((Flags2 & 0xBF) | (f<<6)); } 
    1430         void Granularity(bool f)  { Flags2 = cast(BYTE)((Flags2 & 0x7F) | (f<<7)); } 
    1431  
    1432         byte Type()  { return cast(byte)(Flags1 & 0x1F); } 
    1433         byte Dpl()   { return cast(byte)((Flags1 & 0x60)>>5); } 
    1434         bool Pres()  { return cast(bool) (Flags1 & 0x80); } 
    1435  
    1436         byte LimitHi() { return cast(byte)(Flags2 & 0x0F); } 
    1437         bool Sys() { return cast(bool) (Flags2 & 0x10); } 
     1455        bool Default_Big(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0xBF) | (f<<6)); return f; } 
     1456        bool Granularity(bool f) { Flags2 = cast(BYTE) ((Flags2 & 0x7F) | (f<<7)); return f; } 
     1457 
     1458        byte Type()        { return cast(byte) (Flags1 & 0x1F); } 
     1459        byte Dpl()         { return cast(byte) ((Flags1 & 0x60)>>5); } 
     1460        bool Pres()        { return cast(bool) (Flags1 & 0x80); } 
     1461 
     1462        byte LimitHi()     { return cast(byte) (Flags2 & 0x0F); } 
     1463        bool Sys()         { return cast(bool) (Flags2 & 0x10); } 
    14381464        bool Default_Big() { return cast(bool) (Flags2 & 0x40); } 
    14391465        bool Granularity() { return cast(bool) (Flags2 & 0x80); } 
     
    14641490alias LDT_ENTRY* PLDT_ENTRY, LPLDT_ENTRY; 
    14651491 
     1492/*  As with the other memory management functions and structures, MSDN's 
     1493 *  Windows version info shall be taken with a cup of salt. 
     1494 */ 
    14661495struct PROCESS_HEAP_ENTRY { 
    14671496    PVOID lpData; 
    14681497    DWORD cbData; 
    1469     BYTE cbOverhead; 
    1470     BYTE iRegionIndex; 
    1471     WORD wFlags; 
     1498    BYTE cbOverhead; 
     1499    BYTE iRegionIndex; 
     1500    WORD wFlags; 
    14721501    union { 
    14731502        struct Block { 
    1474             HANDLE hMem; 
    1475             DWORD dwReserved[3]
     1503            HANDLE   hMem; 
     1504            DWORD[3] dwReserved
    14761505        } 
    14771506        struct Region { 
    1478             DWORD dwCommittedSize; 
    1479             DWORD dwUnCommittedSize; 
    1480             LPVOID lpFirstBlock; 
    1481             LPVOID lpLastBlock; 
     1507            DWORD    dwCommittedSize; 
     1508            DWORD    dwUnCommittedSize; 
     1509            LPVOID   lpFirstBlock; 
     1510            LPVOID   lpLastBlock; 
    14821511        } 
    14831512    } 
     
    14861515 
    14871516deprecated { 
    1488  
    1489 struct OFSTRUCT { 
    1490     BYTE cBytes; 
    1491     BYTE fFixedDisk; 
    1492     WORD nErrCode; 
    1493     WORD Reserved1; 
    1494     WORD Reserved2; 
    1495     CHAR szPathName[128]; // const OFS_MAXPATHNAME = 128; 
    1496 
    1497 alias OFSTRUCT* LPOFSTRUCT, POFSTRUCT; 
    1498  
    1499 
    1500  
     1517    struct OFSTRUCT { 
     1518        BYTE      cBytes; 
     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 
     1528/*  ??? MSDN documents this only for Windows CE, but it's used by 
     1529 *  ImageGetCertificateData, which is in desktop Windows. 
     1530 */ 
    15011531struct WIN_CERTIFICATE { 
    15021532    DWORD dwLength; 
    1503     WORD wRevision; 
    1504     WORD wCertificateType; 
    1505     BYTE bCertificate[1]; 
     1533    WORD  wRevision; 
     1534    WORD  wCertificateType; 
     1535    BYTE  _bCertificate; 
     1536 
     1537    BYTE* bCertificate() { return &_bCertificate; } 
    15061538} 
    15071539alias WIN_CERTIFICATE* LPWIN_CERTIFICATE; 
    15081540 
    1509 static if (_WIN32_WINNT >= 0x0500) { 
     1541static if (_WIN32_WINNT >= 0x500) { 
    15101542    enum COMPUTER_NAME_FORMAT { 
    15111543        ComputerNameNetBIOS, 
     
    15221554} 
    15231555 
    1524 static if (_WIN32_WINNT >= 0x0501) { 
    1525  
     1556static if (_WIN32_WINNT >= 0x501) { 
    15261557    struct ACTCTXA { 
    15271558        ULONG cbSize; 
     
    15761607 
    15771608// Callbacks 
    1578 extern(Windows) { 
     1609extern (Windows) { 
    15791610    alias DWORD function(LPVOID) LPTHREAD_START_ROUTINE; 
    15801611    alias DWORD function(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, 
     
    15951626    alias void function(PVOID, DWORD, DWORD) PTIMERAPCROUTINE; 
    15961627 
    1597     static if (_WIN32_WINNT >= 0x0500) { 
     1628    static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { 
    15981629        alias void function(PVOID, BOOLEAN) WAITORTIMERCALLBACK; 
    15991630    } 
     
    16051636 
    16061637extern (Windows) { 
    1607     BOOL AccessCheck(PSECURITY_DESCRIPTOR, HANDLE, DWORD, PGENERIC_MAPPING, PPRIVILEGE_SET, PDWORD, PDWORD, PBOOL); 
    1608     BOOL AccessCheckAndAuditAlarmA(LPCSTR, LPVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); 
    1609     BOOL AccessCheckAndAuditAlarmW(LPCWSTR, LPVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); 
    1610     BOOL AddAccessAllowedAce(PACL, DWORD, DWORD, PSID); 
    1611     BOOL AddAccessDeniedAce(PACL, DWORD, DWORD, PSID); 
    1612     BOOL AddAce(PACL, DWORD, DWORD, PVOID, DWORD); 
    16131638    ATOM AddAtomA(LPCSTR); 
    16141639    ATOM AddAtomW(LPCWSTR); 
    1615     BOOL AddAuditAccessAce(PACL, DWORD, DWORD, PSID, BOOL, BOOL); 
    1616     BOOL AdjustTokenGroups(HANDLE, BOOL, PTOKEN_GROUPS, DWORD, PTOKEN_GROUPS, PDWORD); 
    1617     BOOL AdjustTokenPrivileges(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD); 
    1618     BOOL AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*); 
    1619     BOOL AllocateLocallyUniqueId(PLUID); 
    1620     BOOL AreAllAccessesGranted(DWORD, DWORD); 
    1621     BOOL AreAnyAccessesGranted(DWORD, DWORD); 
    16221640    BOOL AreFileApisANSI(); 
    1623     BOOL BackupEventLogA(HANDLE, LPCSTR); 
    1624     BOOL BackupEventLogW(HANDLE, LPCWSTR); 
    1625     BOOL BackupRead(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); 
    1626     BOOL BackupSeek(HANDLE, DWORD, DWORD, LPDWORD, LPDWORD, LPVOID*); 
    1627     BOOL BackupWrite(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); 
    16281641    BOOL Beep(DWORD, DWORD); 
    16291642    HANDLE BeginUpdateResourceA(LPCSTR, BOOL); 
     
    16361649    BOOL CallNamedPipeW(LPCWSTR, PVOID, DWORD, PVOID, DWORD, PDWORD, DWORD); 
    16371650    BOOL CancelDeviceWakeupRequest(HANDLE); 
    1638     BOOL CancelIo(HANDLE); 
    1639     BOOL CancelWaitableTimer(HANDLE); 
    16401651    BOOL ClearCommBreak(HANDLE); 
    16411652    BOOL ClearCommError(HANDLE, PDWORD, LPCOMSTAT); 
    1642     BOOL ClearEventLogA(HANDLE, LPCSTR); 
    1643     BOOL ClearEventLogW(HANDLE, LPCWSTR); 
    1644     BOOL CloseEventLog(HANDLE); 
    16451653    BOOL CloseHandle(HANDLE); 
    16461654    BOOL CommConfigDialogA(LPCSTR, HWND, LPCOMMCONFIG); 
    16471655    BOOL CommConfigDialogW(LPCWSTR, HWND, LPCOMMCONFIG); 
    16481656    LONG CompareFileTime(FILETIME*, FILETIME*); 
    1649     BOOL ConnectNamedPipe(HANDLE, LPOVERLAPPED); 
    16501657    BOOL ContinueDebugEvent(DWORD, DWORD, DWORD); 
    1651     PVOID ConvertThreadToFiber(PVOID); 
    16521658    BOOL CopyFileA(LPCSTR, LPCSTR, BOOL); 
    16531659    BOOL CopyFileW(LPCWSTR, LPCWSTR, BOOL); 
     
    16721678    alias RtlZeroMemory ZeroMemory; 
    16731679    +/ 
    1674  
    1675     BOOL CopySid(DWORD, PSID, PSID); 
    16761680    BOOL CreateDirectoryA(LPCSTR, LPSECURITY_ATTRIBUTES); 
    16771681    BOOL CreateDirectoryW(LPCWSTR, LPSECURITY_ATTRIBUTES); 
     
    16801684    HANDLE CreateEventA(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCSTR); 
    16811685    HANDLE CreateEventW(LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCWSTR); 
    1682     LPVOID CreateFiber(SIZE_T, LPFIBER_START_ROUTINE, LPVOID); 
    16831686    HANDLE CreateFileA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); 
    16841687    HANDLE CreateFileW(LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE); 
    1685     HANDLE CreateFileMappingA(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR); 
    1686     HANDLE CreateFileMappingW(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCWSTR); 
    16871688    HANDLE CreateIoCompletionPort(HANDLE, HANDLE, ULONG_PTR, DWORD); 
    16881689    HANDLE CreateMailslotA(LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES); 
     
    16901691    HANDLE CreateMutexA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); 
    16911692    HANDLE CreateMutexW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); 
    1692     HANDLE CreateNamedPipeA(LPCSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); 
    1693     HANDLE CreateNamedPipeW(LPCWSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); 
    16941693    BOOL CreatePipe(PHANDLE, PHANDLE, LPSECURITY_ATTRIBUTES, DWORD); 
    1695     BOOL CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, BOOL, HANDLE, PGENERIC_MAPPING); 
    16961694    BOOL CreateProcessA(LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); 
    16971695    BOOL CreateProcessW(LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); 
    1698     BOOL CreateProcessAsUserA(HANDLE, LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); 
    1699     BOOL CreateProcessAsUserW(HANDLE, LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); 
    1700     HANDLE CreateRemoteThread(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD); 
    17011696    HANDLE CreateSemaphoreA(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCSTR); 
    17021697    HANDLE CreateSemaphoreW(LPSECURITY_ATTRIBUTES, LONG, LONG, LPCWSTR); 
    1703     DWORD CreateTapePartition(HANDLE, DWORD, DWORD, DWORD); 
    17041698    HANDLE CreateThread(LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, PVOID, DWORD, PDWORD); 
    1705     HANDLE CreateWaitableTimerA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); 
    1706     HANDLE CreateWaitableTimerW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); 
    17071699    BOOL DebugActiveProcess(DWORD); 
    17081700    void DebugBreak(); 
    1709     BOOL DefineDosDeviceA(DWORD, LPCSTR, LPCSTR); 
    1710     BOOL DefineDosDeviceW(DWORD, LPCWSTR, LPCWSTR); 
    1711     BOOL DeleteAce(PACL, DWORD); 
    17121701    ATOM DeleteAtom(ATOM); 
    17131702    void DeleteCriticalSection(PCRITICAL_SECTION); 
    1714     void DeleteFiber(PVOID); 
    17151703    BOOL DeleteFileA(LPCSTR); 
    17161704    BOOL DeleteFileW(LPCWSTR); 
    1717     BOOL DeregisterEventSource(HANDLE); 
    1718     BOOL DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*); 
    1719     BOOL DeviceIoControl(HANDLE, DWORD, PVOID, DWORD, PVOID, DWORD, PDWORD, POVERLAPPED); 
    17201705    BOOL DisableThreadLibraryCalls(HMODULE); 
    1721     BOOL DisconnectNamedPipe(HANDLE); 
    17221706    BOOL DosDateTimeToFileTime(WORD, WORD, LPFILETIME); 
    17231707    BOOL DuplicateHandle(HANDLE, HANDLE, HANDLE, PHANDLE, DWORD, BOOL, DWORD); 
    1724     BOOL DuplicateToken(HANDLE, SECURITY_IMPERSONATION_LEVEL, PHANDLE); 
    1725     BOOL DuplicateTokenEx(HANDLE, DWORD, LPSECURITY_ATTRIBUTES, SECURITY_IMPERSONATION_LEVEL, TOKEN_TYPE, PHANDLE); 
    1726     BOOL EncryptFileA(LPCSTR); 
    1727     BOOL EncryptFileW(LPCWSTR); 
    17281708    BOOL EndUpdateResourceA(HANDLE, BOOL); 
    17291709    BOOL EndUpdateResourceW(HANDLE, BOOL); 
     
    17351715    BOOL EnumResourceTypesA(HMODULE, ENUMRESTYPEPROC, LONG_PTR); 
    17361716    BOOL EnumResourceTypesW(HMODULE, ENUMRESTYPEPROC, LONG_PTR); 
    1737     BOOL EqualPrefixSid(PSID, PSID); 
    1738     BOOL EqualSid(PSID, PSID); 
    1739     DWORD EraseTape(HANDLE, DWORD, BOOL); 
    17401717    BOOL EscapeCommFunction(HANDLE, DWORD); 
    17411718    void ExitProcess(UINT); // Never returns 
     
    17461723    void FatalAppExitW(UINT, LPCWSTR); 
    17471724    void FatalExit(int); 
    1748     BOOL FileEncryptionStatusA(LPCSTR, LPDWORD); 
    1749     BOOL FileEncryptionStatusW(LPCWSTR, LPDWORD); 
    17501725    BOOL FileTimeToDosDateTime(FILETIME* , LPWORD, LPWORD); 
    17511726    BOOL FileTimeToLocalFileTime(FILETIME* , LPFILETIME); 
     
    17591734    HANDLE FindFirstFileA(LPCSTR, LPWIN32_FIND_DATAA); 
    17601735    HANDLE FindFirstFileW(LPCWSTR, LPWIN32_FIND_DATAW); 
    1761     HANDLE FindFirstFileExA(LPCSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); 
    1762     HANDLE FindFirstFileExW(LPCWSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); 
    1763     BOOL FindFirstFreeAce(PACL, PVOID*); 
    17641736    BOOL FindNextChangeNotification(HANDLE); 
    17651737    BOOL FindNextFileA(HANDLE, LPWIN32_FIND_DATAA); 
     
    17711743    BOOL FlushFileBuffers(HANDLE); 
    17721744    BOOL FlushInstructionCache(HANDLE, PCVOID, DWORD); 
    1773     BOOL FlushViewOfFile(PCVOID, DWORD); 
    17741745    DWORD FormatMessageA(DWORD, PCVOID, DWORD, DWORD, LPSTR, DWORD, va_list*); 
    17751746    DWORD FormatMessageW(DWORD, PCVOID, DWORD, DWORD, LPWSTR, DWORD, va_list*); 
     
    17791750    void FreeLibraryAndExitThread(HMODULE, DWORD); // never returns 
    17801751    BOOL FreeResource(HGLOBAL); 
    1781     PVOID FreeSid(PSID); 
    1782     BOOL GetAce(PACL, DWORD, LPVOID*); 
    1783     BOOL GetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); 
    17841752    UINT GetAtomNameA(ATOM, LPSTR, int); 
    17851753    UINT GetAtomNameW(ATOM, LPWSTR, int); 
    1786     BOOL GetBinaryTypeA(LPCSTR, PDWORD); 
    1787     BOOL GetBinaryTypeW(LPCWSTR, PDWORD); 
    17881754    LPSTR GetCommandLineA(); 
    17891755    LPWSTR GetCommandLineW(); 
     
    17941760    BOOL GetCommState(HANDLE, LPDCB); 
    17951761    BOOL GetCommTimeouts(HANDLE, LPCOMMTIMEOUTS); 
    1796     DWORD GetCompressedFileSizeA(LPCSTR, PDWORD); 
    1797     DWORD GetCompressedFileSizeW(LPCWSTR, PDWORD); 
    17981762    BOOL GetComputerNameA(LPSTR, PDWORD); 
    17991763    BOOL GetComputerNameW(LPWSTR, PDWORD); 
    18001764    DWORD GetCurrentDirectoryA(DWORD, LPSTR); 
    18011765    DWORD GetCurrentDirectoryW(DWORD, LPWSTR); 
    1802     BOOL GetCurrentHwProfileA(LPHW_PROFILE_INFOA); 
    1803     BOOL GetCurrentHwProfileW(LPHW_PROFILE_INFOW); 
    18041766    HANDLE GetCurrentProcess(); 
    18051767    DWORD GetCurrentProcessId(); 
     
    18241786    UINT GetDriveTypeA(LPCSTR); 
    18251787    UINT GetDriveTypeW(LPCWSTR); 
    1826     LPSTR GetEnvironmentStrings(); 
     1788    LPSTR GetEnvironmentStrings(); // ??? 
    18271789    LPSTR GetEnvironmentStringsA(); 
    18281790    LPWSTR GetEnvironmentStringsW(); 
     
    18331795    DWORD GetFileAttributesA(LPCSTR); 
    18341796    DWORD GetFileAttributesW(LPCWSTR); 
    1835     BOOL GetFileAttributesExA(LPCSTR, GET_FILEEX_INFO_LEVELS, PVOID); 
    1836     BOOL GetFileAttributesExW(LPCWSTR, GET_FILEEX_INFO_LEVELS, PVOID); 
    18371797    BOOL GetFileInformationByHandle(HANDLE, LPBY_HANDLE_FILE_INFORMATION); 
    1838     BOOL GetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); 
    1839     BOOL GetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); 
    18401798    DWORD GetFileSize(HANDLE, PDWORD); 
    18411799    BOOL GetFileTime(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME); 
     
    18431801    DWORD GetFullPathNameA(LPCSTR, DWORD, LPSTR, LPSTR*); 
    18441802    DWORD GetFullPathNameW(LPCWSTR, DWORD, LPWSTR, LPWSTR*); 
    1845     BOOL GetHandleInformation(HANDLE, PDWORD); 
    1846     BOOL GetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); 
    18471803    DWORD GetLastError(); 
    1848     DWORD GetLengthSid(PSID); 
    18491804    void GetLocalTime(LPSYSTEMTIME); 
    18501805    DWORD GetLogicalDrives(); 
     
    18591814    BOOL GetNamedPipeHandleStateW(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD, LPWSTR, DWORD); 
    18601815    BOOL GetNamedPipeInfo(HANDLE, PDWORD, PDWORD, PDWORD, PDWORD); 
    1861     BOOL GetNumberOfEventLogRecords(HANDLE, PDWORD); 
    1862     BOOL GetOldestEventLogRecord(HANDLE, PDWORD); 
    18631816    BOOL GetOverlappedResult(HANDLE, LPOVERLAPPED, PDWORD, BOOL); 
    18641817    DWORD GetPriorityClass(HANDLE); 
    1865     BOOL GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); 
    18661818    UINT GetPrivateProfileIntA(LPCSTR, LPCSTR, INT, LPCSTR); 
    18671819    UINT GetPrivateProfileIntW(LPCWSTR, LPCWSTR, INT, LPCWSTR); 
     
    18761828    FARPROC GetProcAddress(HINSTANCE, LPCSTR); 
    18771829    BOOL GetProcessAffinityMask(HANDLE, PDWORD, PDWORD); 
    1878     HANDLE GetProcessHeap(); 
    1879     DWORD GetProcessHeaps(DWORD, PHANDLE); 
    1880     BOOL GetProcessPriorityBoost(HANDLE, PBOOL); 
    1881     BOOL GetProcessShutdownParameters(PDWORD, PDWORD); 
    1882     BOOL GetProcessTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); 
    18831830    DWORD GetProcessVersion(DWORD); 
    1884     HWINSTA GetProcessWindowStation(); 
    1885     BOOL GetProcessWorkingSetSize(HANDLE, PSIZE_T, PSIZE_T); 
    18861831    UINT GetProfileIntA(LPCSTR, LPCSTR, INT); 
    18871832    UINT GetProfileIntW(LPCWSTR, LPCWSTR, INT); 
     
    18901835    DWORD GetProfileStringA(LPCSTR, LPCSTR, LPCSTR, LPSTR, DWORD); 
    18911836    DWORD GetProfileStringW(LPCWSTR, LPCWSTR, LPCWSTR, LPWSTR, DWORD); 
    1892     BOOL GetQueuedCompletionStatus(HANDLE, PDWORD, PULONG_PTR, LPOVERLAPPED*, DWORD); 
    1893     BOOL GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL, PDWORD); 
    1894     BOOL GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); 
    1895     BOOL GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); 
    1896     DWORD GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR); 
    1897     BOOL GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); 
    1898     BOOL GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); 
    18991837    DWORD GetShortPathNameA(LPCSTR, LPSTR, DWORD); 
    19001838    DWORD GetShortPathNameW(LPCWSTR, LPWSTR, DWORD); 
    1901     PSID_IDENTIFIER_AUTHORITY GetSidIdentifierAuthority(PSID); 
    1902     DWORD GetSidLengthRequired(UCHAR); 
    1903     PDWORD GetSidSubAuthority(PSID, DWORD); 
    1904     PUCHAR GetSidSubAuthorityCount(PSID); 
    19051839    VOID GetStartupInfoA(LPSTARTUPINFOA); 
    19061840    VOID GetStartupInfoW(LPSTARTUPINFOW); 
     
    19091843    UINT GetSystemDirectoryW(LPWSTR, UINT); 
    19101844    VOID GetSystemInfo(LPSYSTEM_INFO); 
    1911     BOOL GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); 
    19121845    VOID GetSystemTime(LPSYSTEMTIME); 
    19131846    BOOL GetSystemTimeAdjustment(PDWORD, PDWORD, PBOOL); 
    19141847    void GetSystemTimeAsFileTime(LPFILETIME); 
    1915     DWORD GetTapeParameters(HANDLE, DWORD, PDWORD, PVOID); 
    1916     DWORD GetTapePosition(HANDLE, DWORD, PDWORD, PDWORD, PDWORD); 
    1917     DWORD GetTapeStatus(HANDLE); 
    19181848    UINT GetTempFileNameA(LPCSTR, LPCSTR, UINT, LPSTR); 
    19191849    UINT GetTempFileNameW(LPCWSTR, LPCWSTR, UINT, LPWSTR); 
     
    19221852    BOOL GetThreadContext(HANDLE, LPCONTEXT); 
    19231853    int GetThreadPriority(HANDLE); 
    1924     BOOL GetThreadPriorityBoost(HANDLE, PBOOL); 
    19251854    BOOL GetThreadSelectorEntry(HANDLE, DWORD, LPLDT_ENTRY); 
    1926     BOOL GetThreadTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); 
    19271855    DWORD GetTickCount(); 
    19281856    DWORD GetTimeZoneInformation(LPTIME_ZONE_INFORMATION); 
    1929     BOOL GetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD, PDWORD); 
    19301857    BOOL GetUserNameA (LPSTR, PDWORD); 
    19311858    BOOL GetUserNameW(LPWSTR, PDWORD); 
     
    19381865    UINT GetWindowsDirectoryW(LPWSTR, UINT); 
    19391866    DWORD GetWindowThreadProcessId(HWND, PDWORD); 
    1940     UINT GetWriteWatch(DWORD, PVOID, SIZE_T, PVOID*, PULONG_PTR, PULONG); 
    19411867    ATOM GlobalAddAtomA(LPCSTR); 
    1942     ATOM GlobalAddAtomW( LPCWSTR); 
    1943     HGLOBAL GlobalAlloc(UINT, DWORD); 
     1868    ATOM GlobalAddAtomW(LPCWSTR); 
    19441869    ATOM GlobalDeleteAtom(ATOM); 
    1945     HGLOBAL GlobalDiscard(HGLOBAL); 
    19461870    ATOM GlobalFindAtomA(LPCSTR); 
    19471871    ATOM GlobalFindAtomW(LPCWSTR); 
    1948     HGLOBAL GlobalFree(HGLOBAL); 
    19491872    UINT GlobalGetAtomNameA(ATOM, LPSTR, int); 
    19501873    UINT GlobalGetAtomNameW(ATOM, LPWSTR, int); 
    1951     HGLOBAL GlobalHandle(PCVOID); 
    1952     LPVOID GlobalLock(HGLOBAL); 
    1953     VOID GlobalMemoryStatus(LPMEMORYSTATUS); 
    1954     HGLOBAL GlobalReAlloc(HGLOBAL, DWORD, UINT); 
    1955     DWORD GlobalSize(HGLOBAL); 
    1956     BOOL GlobalUnlock(HGLOBAL); 
    19571874 
    19581875    bool HasOverlappedIoCompleted(LPOVERLAPPED lpOverlapped) { 
     
    19601877    } 
    19611878 
    1962     PVOID HeapAlloc(HANDLE, DWORD, DWORD); 
    1963     SIZE_T HeapCompact(HANDLE, DWORD); 
    1964     HANDLE HeapCreate(DWORD, DWORD, DWORD); 
    1965     BOOL HeapDestroy(HANDLE); 
    1966     BOOL HeapFree(HANDLE, DWORD, PVOID); 
    1967     BOOL HeapLock(HANDLE); 
    1968     PVOID HeapReAlloc(HANDLE, DWORD, PVOID, DWORD); 
    1969     DWORD HeapSize(HANDLE, DWORD, PCVOID); 
    1970     BOOL HeapUnlock(HANDLE); 
    1971     BOOL HeapValidate(HANDLE, DWORD, PCVOID); 
    1972     BOOL HeapWalk(HANDLE, LPPROCESS_HEAP_ENTRY); 
    1973     BOOL ImpersonateLoggedOnUser(HANDLE); 
    1974     BOOL ImpersonateNamedPipeClient(HANDLE); 
    1975     BOOL ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); 
    19761879    BOOL InitAtomTable(DWORD); 
    1977     BOOL InitializeAcl(PACL, DWORD, DWORD); 
    19781880    VOID InitializeCriticalSection(LPCRITICAL_SECTION); 
    1979     BOOL InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION, DWORD); 
    1980     DWORD SetCriticalSectionSpinCount(LPCRITICAL_SECTION, DWORD); 
    1981     BOOL InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR, DWORD); 
    1982     BOOL InitializeSid (PSID, PSID_IDENTIFIER_AUTHORITY, BYTE); 
    1983     BOOL IsBadCodePtr(FARPROC); 
     1881    /* ??? The next two are allegedly obsolete and "supported only for 
     1882    * backward compatibility with the 16-bit Windows API".  Yet the 
     1883    * replacements IsBadReadPtr and IsBadWritePtr are apparently Win2000+ 
     1884    * only.  Where's the mistake? 
     1885    */ 
    19841886    BOOL IsBadHugeReadPtr(PCVOID, UINT); 
    19851887    BOOL IsBadHugeWritePtr(PVOID, UINT); 
     
    19881890    BOOL IsBadStringPtrW(LPCWSTR, UINT); 
    19891891    BOOL IsBadWritePtr(PVOID, UINT); 
    1990     BOOL IsDebuggerPresent(); 
    1991     BOOL IsProcessorFeaturePresent(DWORD); 
    1992     BOOL IsSystemResumeAutomatic(); 
    1993     BOOL IsTextUnicode(PCVOID, int, LPINT); 
    1994     BOOL IsValidAcl(PACL); 
    1995     BOOL IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR); 
    1996     BOOL IsValidSid(PSID); 
    19971892    void LeaveCriticalSection(LPCRITICAL_SECTION); 
    19981893    HINSTANCE LoadLibraryA(LPCSTR); 
     1894    HINSTANCE LoadLibraryW(LPCWSTR); 
    19991895    HINSTANCE LoadLibraryExA(LPCSTR, HANDLE, DWORD); 
    20001896    HINSTANCE LoadLibraryExW(LPCWSTR, HANDLE, DWORD); 
    2001     HINSTANCE LoadLibraryW(LPCWSTR); 
    20021897    DWORD LoadModule(LPCSTR, PVOID); 
    20031898    HGLOBAL LoadResource(HINSTANCE, HRSRC); 
    2004     HLOCAL LocalAlloc(UINT, SIZE_T); 
    2005     HLOCAL LocalDiscard(HLOCAL); 
    20061899    BOOL LocalFileTimeToFileTime(FILETIME* , LPFILETIME); 
    2007     HLOCAL LocalFree(HLOCAL); 
    2008     HLOCAL LocalHandle(LPCVOID); 
    2009     PVOID LocalLock(HLOCAL); 
    2010     HLOCAL LocalReAlloc(HLOCAL, SIZE_T, UINT); 
    2011     UINT LocalSize(HLOCAL); 
    2012     BOOL LocalUnlock(HLOCAL); 
    20131900    BOOL LockFile(HANDLE, DWORD, DWORD, DWORD, DWORD); 
    2014     BOOL LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED); 
    20151901    PVOID LockResource(HGLOBAL); 
    2016     BOOL LogonUserA(LPSTR, LPSTR, LPSTR, DWORD, DWORD, PHANDLE); // *** NT only 
    2017     BOOL LogonUserW(LPWSTR, LPWSTR, LPWSTR, DWORD, DWORD, PHANDLE); // *** NT only 
    2018     BOOL LookupAccountNameA(LPCSTR, LPCSTR, PSID, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); 
    2019     BOOL LookupAccountNameW(LPCWSTR, LPCWSTR, PSID, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); 
    2020     BOOL LookupAccountSidA(LPCSTR, PSID, LPSTR, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); 
    2021     BOOL LookupAccountSidW(LPCWSTR, PSID, LPWSTR, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); 
    2022     BOOL LookupPrivilegeDisplayNameA(LPCSTR, LPCSTR, LPSTR, PDWORD, PDWORD); 
    2023     BOOL LookupPrivilegeDisplayNameW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, PDWORD); 
    2024     BOOL LookupPrivilegeNameA(LPCSTR, PLUID, LPSTR, PDWORD); 
    2025     BOOL LookupPrivilegeNameW(LPCWSTR, PLUID, LPWSTR, PDWORD); 
    2026     BOOL LookupPrivilegeValueA(LPCSTR, LPCSTR, PLUID); 
    2027     BOOL LookupPrivilegeValueW(LPCWSTR, LPCWSTR, PLUID); 
    20281902 
    20291903    LPSTR lstrcatA(LPSTR, LPCSTR); 
     
    20401914    int lstrlenW(LPCWSTR); 
    20411915 
     1916    static if (_WIN32_WINDOWS >= 0x410) { 
     1917        BOOL CancelIo(HANDLE); 
     1918        BOOL CancelWaitableTimer(HANDLE); 
     1919        PVOID ConvertThreadToFiber(PVOID); 
     1920        LPVOID CreateFiber(SIZE_T, LPFIBER_START_ROUTINE, LPVOID); 
     1921        HANDLE CreateWaitableTimerA(LPSECURITY_ATTRIBUTES, BOOL, LPCSTR); 
     1922        HANDLE CreateWaitableTimerW(LPSECURITY_ATTRIBUTES, BOOL, LPCWSTR); 
     1923        void DeleteFiber(PVOID); 
     1924        BOOL GetFileAttributesExA(LPCSTR, GET_FILEEX_INFO_LEVELS, PVOID); 
     1925        BOOL GetFileAttributesExW(LPCWSTR, GET_FILEEX_INFO_LEVELS, PVOID); 
     1926        BOOL InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION, DWORD); 
     1927        BOOL IsDebuggerPresent(); 
     1928    } 
     1929 
     1930    static if (_WIN32_WINNT_ONLY) { 
     1931        BOOL AccessCheck(PSECURITY_DESCRIPTOR, HANDLE, DWORD, PGENERIC_MAPPING, PPRIVILEGE_SET, PDWORD, PDWORD, PBOOL); 
     1932        BOOL AccessCheckAndAuditAlarmA(LPCSTR, LPVOID, LPSTR, LPSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); 
     1933        BOOL AccessCheckAndAuditAlarmW(LPCWSTR, LPVOID, LPWSTR, LPWSTR, PSECURITY_DESCRIPTOR, DWORD, PGENERIC_MAPPING, BOOL, PDWORD, PBOOL, PBOOL); 
     1934        BOOL AddAccessAllowedAce(PACL, DWORD, DWORD, PSID); 
     1935        BOOL AddAccessDeniedAce(PACL, DWORD, DWORD, PSID); 
     1936        BOOL AddAce(PACL, DWORD, DWORD, PVOID, DWORD); 
     1937        BOOL AddAuditAccessAce(PACL, DWORD, DWORD, PSID, BOOL, BOOL); 
     1938        BOOL AdjustTokenGroups(HANDLE, BOOL, PTOKEN_GROUPS, DWORD, PTOKEN_GROUPS, PDWORD); 
     1939        BOOL AdjustTokenPrivileges(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD); 
     1940        BOOL AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY, BYTE, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, PSID*); 
     1941        BOOL AllocateLocallyUniqueId(PLUID); 
     1942        BOOL AreAllAccessesGranted(DWORD, DWORD); 
     1943        BOOL AreAnyAccessesGranted(DWORD, DWORD); 
     1944        BOOL BackupEventLogA(HANDLE, LPCSTR); 
     1945        BOOL BackupEventLogW(HANDLE, LPCWSTR); 
     1946        BOOL BackupRead(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); 
     1947        BOOL BackupSeek(HANDLE, DWORD, DWORD, LPDWORD, LPDWORD, LPVOID*); 
     1948        BOOL BackupWrite(HANDLE, LPBYTE, DWORD, LPDWORD, BOOL, BOOL, LPVOID*); 
     1949        BOOL ClearEventLogA(HANDLE, LPCSTR); 
     1950        BOOL ClearEventLogW(HANDLE, LPCWSTR); 
     1951        BOOL CloseEventLog(HANDLE); 
     1952        BOOL ConnectNamedPipe(HANDLE, LPOVERLAPPED); 
     1953        BOOL CopySid(DWORD, PSID, PSID); 
     1954        HANDLE CreateNamedPipeA(LPCSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); 
     1955        HANDLE CreateNamedPipeW(LPCWSTR, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, LPSECURITY_ATTRIBUTES); 
     1956        BOOL CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR*, BOOL, HANDLE, PGENERIC_MAPPING); 
     1957        BOOL CreateProcessAsUserA(HANDLE, LPCSTR, LPSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCSTR, LPSTARTUPINFOA, LPPROCESS_INFORMATION); 
     1958        BOOL CreateProcessAsUserW(HANDLE, LPCWSTR, LPWSTR, LPSECURITY_ATTRIBUTES, LPSECURITY_ATTRIBUTES, BOOL, DWORD, PVOID, LPCWSTR, LPSTARTUPINFOW, LPPROCESS_INFORMATION); 
     1959        HANDLE CreateRemoteThread(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, LPTHREAD_START_ROUTINE, LPVOID, DWORD, LPDWORD); 
     1960        DWORD CreateTapePartition(HANDLE, DWORD, DWORD, DWORD); 
     1961        BOOL DefineDosDeviceA(DWORD, LPCSTR, LPCSTR); 
     1962        BOOL DefineDosDeviceW(DWORD, LPCWSTR, LPCWSTR); 
     1963        BOOL DeleteAce(PACL, DWORD); 
     1964        BOOL DeregisterEventSource(HANDLE); 
     1965        BOOL DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR*); 
     1966        BOOL DeviceIoControl(HANDLE, DWORD, PVOID, DWORD, PVOID, DWORD, PDWORD, POVERLAPPED); 
     1967        BOOL DisconnectNamedPipe(HANDLE); 
     1968        BOOL DuplicateToken(HANDLE, SECURITY_IMPERSONATION_LEVEL, PHANDLE); 
     1969        BOOL DuplicateTokenEx(HANDLE, DWORD, LPSECURITY_ATTRIBUTES, SECURITY_IMPERSONATION_LEVEL, TOKEN_TYPE, PHANDLE); 
     1970        BOOL EqualPrefixSid(PSID, PSID); 
     1971        BOOL EqualSid(PSID, PSID); 
     1972        DWORD EraseTape(HANDLE, DWORD, BOOL); 
     1973        HANDLE FindFirstFileExA(LPCSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); 
     1974        HANDLE FindFirstFileExW(LPCWSTR, FINDEX_INFO_LEVELS, PVOID, FINDEX_SEARCH_OPS, PVOID, DWORD); 
     1975        BOOL FindFirstFreeAce(PACL, PVOID*); 
     1976        PVOID FreeSid(PSID); 
     1977        BOOL GetAce(PACL, DWORD, LPVOID*); 
     1978        BOOL GetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); 
     1979        BOOL GetBinaryTypeA(LPCSTR, PDWORD); 
     1980        BOOL GetBinaryTypeW(LPCWSTR, PDWORD); 
     1981        DWORD GetCompressedFileSizeA(LPCSTR, PDWORD); 
     1982        DWORD GetCompressedFileSizeW(LPCWSTR, PDWORD); 
     1983        BOOL GetCurrentHwProfileA(LPHW_PROFILE_INFOA); 
     1984        BOOL GetCurrentHwProfileW(LPHW_PROFILE_INFOW); 
     1985        BOOL GetFileSecurityA(LPCSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); 
     1986        BOOL GetFileSecurityW(LPCWSTR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); 
     1987        BOOL GetHandleInformation(HANDLE, PDWORD); 
     1988        BOOL GetKernelObjectSecurity(HANDLE, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); 
     1989        DWORD GetLengthSid(PSID); 
     1990        BOOL GetNumberOfEventLogRecords(HANDLE, PDWORD); 
     1991        BOOL GetOldestEventLogRecord(HANDLE, PDWORD); 
     1992        BOOL GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR, SECURITY_INFORMATION, PSECURITY_DESCRIPTOR, DWORD, PDWORD); 
     1993        BOOL GetProcessPriorityBoost(HANDLE, PBOOL); 
     1994        BOOL GetProcessShutdownParameters(PDWORD, PDWORD); 
     1995        BOOL GetProcessTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); 
     1996        HWINSTA GetProcessWindowStation(); 
     1997        BOOL GetProcessWorkingSetSize(HANDLE, PSIZE_T, PSIZE_T); 
     1998        BOOL GetQueuedCompletionStatus(HANDLE, PDWORD, PULONG_PTR, LPOVERLAPPED*, DWORD); 
     1999        BOOL GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL, PDWORD); 
     2000        BOOL GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); 
     2001        BOOL GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); 
     2002        DWORD GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR); 
     2003        BOOL GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR, PSID*, LPBOOL); 
     2004        BOOL GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR, LPBOOL, PACL*, LPBOOL); 
     2005        PSID_IDENTIFIER_AUTHORITY GetSidIdentifierAuthority(PSID); 
     2006        DWORD GetSidLengthRequired(UCHAR); 
     2007        PDWORD GetSidSubAuthority(PSID, DWORD); 
     2008        PUCHAR GetSidSubAuthorityCount(PSID); 
     2009        DWORD GetTapeParameters(HANDLE, DWORD, PDWORD, PVOID); 
     2010        DWORD GetTapePosition(HANDLE, DWORD, PDWORD, PDWORD, PDWORD); 
     2011        DWORD GetTapeStatus(HANDLE); 
     2012        BOOL GetThreadPriorityBoost(HANDLE, PBOOL); 
     2013        BOOL GetThreadTimes(HANDLE, LPFILETIME, LPFILETIME, LPFILETIME, LPFILETIME); 
     2014        BOOL GetTokenInformation(HANDLE, TOKEN_INFORMATION_CLASS, PVOID, DWORD, PDWORD); 
     2015        BOOL ImpersonateLoggedOnUser(HANDLE); 
     2016        BOOL ImpersonateNamedPipeClient(HANDLE); 
     2017        BOOL ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); 
     2018        BOOL InitializeAcl(PACL, DWORD, DWORD); 
     2019        DWORD SetCriticalSectionSpinCount(LPCRITICAL_SECTION, DWORD); 
     2020        BOOL InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR, DWORD); 
     2021        BOOL InitializeSid(PSID, PSID_IDENTIFIER_AUTHORITY, BYTE); 
     2022        BOOL IsProcessorFeaturePresent(DWORD); 
     2023        BOOL IsTextUnicode(PCVOID, int, LPINT); 
     2024        BOOL IsValidAcl(PACL); 
     2025        BOOL IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR); 
     2026        BOOL IsValidSid(PSID); 
     2027        BOOL LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED); 
     2028        BOOL LogonUserA(LPSTR, LPSTR, LPSTR, DWORD, DWORD, PHANDLE); 
     2029        BOOL LogonUserW(LPWSTR, LPWSTR, LPWSTR, DWORD, DWORD, PHANDLE); 
     2030        BOOL LookupAccountNameA(LPCSTR, LPCSTR, PSID, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); 
     2031        BOOL LookupAccountNameW(LPCWSTR, LPCWSTR, PSID, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); 
     2032        BOOL LookupAccountSidA(LPCSTR, PSID, LPSTR, PDWORD, LPSTR, PDWORD, PSID_NAME_USE); 
     2033        BOOL LookupAccountSidW(LPCWSTR, PSID, LPWSTR, PDWORD, LPWSTR, PDWORD, PSID_NAME_USE); 
     2034        BOOL LookupPrivilegeDisplayNameA(LPCSTR, LPCSTR, LPSTR, PDWORD, PDWORD); 
     2035        BOOL LookupPrivilegeDisplayNameW(LPCWSTR, LPCWSTR, LPWSTR, PDWORD, PDWORD); 
     2036        BOOL LookupPrivilegeNameA(LPCSTR, PLUID, LPSTR, PDWORD); 
     2037        BOOL LookupPrivilegeNameW(LPCWSTR, PLUID, LPWSTR, PDWORD); 
     2038        BOOL LookupPrivilegeValueA(LPCSTR, LPCSTR, PLUID); 
     2039        BOOL LookupPrivilegeValueW(LPCWSTR, LPCWSTR, PLUID); 
     2040 
     2041        static if (_WIN32_WINNT >= 0x500) { 
     2042            HANDLE CreateFileMappingA(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCSTR); 
     2043            HANDLE CreateFileMappingW(HANDLE, LPSECURITY_ATTRIBUTES, DWORD, DWORD, DWORD, LPCWSTR); 
     2044            BOOL EncryptFileA(LPCSTR); 
     2045            BOOL EncryptFileW(LPCWSTR); 
     2046            BOOL FileEncryptionStatusA(LPCSTR, LPDWORD); 
     2047            BOOL FileEncryptionStatusW(LPCWSTR, LPDWORD); 
     2048            BOOL FlushViewOfFile(PCVOID, DWORD); 
     2049            HANDLE GetProcessHeap(); 
     2050            DWORD GetProcessHeaps(DWORD, PHANDLE); 
     2051            BOOL GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); 
     2052            BOOL IsBadCodePtr(FARPROC); 
     2053            BOOL IsSystemResumeAutomatic(); 
     2054        } 
     2055 
     2056        static if (_WIN32_WINNT >= 0x501) { 
     2057            UINT GetWriteWatch(DWORD, PVOID, SIZE_T, PVOID*, PULONG_PTR, PULONG); 
     2058        } 
     2059    } 
     2060 
     2061// *** 
    20422062    BOOL MakeAbsoluteSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD, PACL, PDWORD, PACL, PDWORD, PSID, PDWORD, PSID, PDWORD); 
    20432063    BOOL MakeSelfRelativeSD(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR, PDWORD); 
     
    21212141    DWORD SearchPathA(LPCSTR, LPCSTR, LPCSTR, DWORD, LPSTR, LPSTR*); 
    21222142    DWORD SearchPathW(LPCWSTR, LPCWSTR, LPCWSTR, DWORD, LPWSTR, LPWSTR*); 
    2123     BOOL SetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); 
     2143    static if (_WIN32_WINNT_ONLY) { 
     2144        BOOL SetAclInformation(PACL, PVOID, DWORD, ACL_INFORMATION_CLASS); 
     2145    } 
    21242146    BOOL SetCommBreak(HANDLE); 
    21252147    BOOL SetCommConfig(HANDLE, LPCOMMCONFIG, DWORD); 
     
    22532275    DWORD WriteTapemark(HANDLE, DWORD, DWORD, BOOL); 
    22542276 
     2277    /*  Memory allocation functions. 
     2278     *  MSDN documents these erroneously as Win2000+; thus it is uncertain what 
     2279     *  version compatibility they really have. 
     2280     */ 
     2281    HGLOBAL GlobalAlloc(UINT, DWORD); 
     2282    HGLOBAL GlobalDiscard(HGLOBAL); 
     2283    HGLOBAL GlobalFree(HGLOBAL); 
     2284    HGLOBAL GlobalHandle(PCVOID); 
     2285    LPVOID GlobalLock(HGLOBAL); 
     2286    VOID GlobalMemoryStatus(LPMEMORYSTATUS); 
     2287    HGLOBAL GlobalReAlloc(HGLOBAL, DWORD, UINT); 
     2288    DWORD GlobalSize(HGLOBAL); 
     2289    BOOL GlobalUnlock(HGLOBAL); 
     2290    PVOID HeapAlloc(HANDLE, DWORD, DWORD); 
     2291    SIZE_T HeapCompact(HANDLE, DWORD); 
     2292    HANDLE HeapCreate(DWORD, DWORD, DWORD); 
     2293    BOOL HeapDestroy(HANDLE); 
     2294    BOOL HeapFree(HANDLE, DWORD, PVOID); 
     2295    BOOL HeapLock(HANDLE); 
     2296    PVOID HeapReAlloc(HANDLE, DWORD, PVOID, DWORD); 
     2297    DWORD HeapSize(HANDLE, DWORD, PCVOID); 
     2298    BOOL HeapUnlock(HANDLE); 
     2299    BOOL HeapValidate(HANDLE, DWORD, PCVOID); 
     2300    BOOL HeapWalk(HANDLE, LPPROCESS_HEAP_ENTRY); 
     2301    HLOCAL LocalAlloc(UINT, SIZE_T); 
     2302    HLOCAL LocalDiscard(HLOCAL); 
     2303    HLOCAL LocalFree(HLOCAL); 
     2304    HLOCAL LocalHandle(LPCVOID); 
     2305    PVOID LocalLock(HLOCAL); 
     2306    HLOCAL LocalReAlloc(HLOCAL, SIZE_T, UINT); 
     2307    UINT LocalSize(HLOCAL); 
     2308    BOOL LocalUnlock(HLOCAL); 
     2309 
    22552310    // ------ 
    22562311    // functions added in later Windows versions 
     
    22692324    } 
    22702325 
    2271     static if (_WIN32_WINNT >= 0x0500) { 
     2326    static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x0500) { 
    22722327        BOOL AddAccessAllowedAceEx(PACL, DWORD, DWORD, DWORD, PSID); 
    22732328        BOOL AddAccessDeniedAceEx(PACL, DWORD, DWORD, DWORD, PSID); 
     
    23892444        BOOL SetFirmwareEnvironmentVariableA(LPCSTR, LPCSTR, PVOID, DWORD); 
    23902445        BOOL SetFirmwareEnvironmentVariableW(LPCWSTR, LPCWSTR, PVOID, DWORD); 
    2391        
     2446   
    23922447 
    23932448    static if (_WIN32_WINNT >= 0x0510) { 
     
    24002455    alias STARTUPINFOW STARTUPINFO; 
    24012456    alias WIN32_FIND_DATAW WIN32_FIND_DATA; 
    2402     alias HW_PROFILE_INFOW HW_PROFILE_INFO; 
    2403     alias STARTUPINFO* LPSTARTUPINFO; 
    2404     alias WIN32_FIND_DATA* LPWIN32_FIND_DATA; 
    2405     alias HW_PROFILE_INFO* LPHW_PROFILE_INFO; 
    24062457    alias ENUMRESLANGPROCW ENUMRESLANGPROC; 
    24072458    alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; 
    24082459    alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; 
    2409     alias AccessCheckAndAuditAlarmW AccessCheckAndAuditAlarm; 
    24102460    alias AddAtomW AddAtom; 
    2411     alias BackupEventLogW BackupEventLog; 
    24122461    alias BeginUpdateResourceW BeginUpdateResource; 
    24132462    alias BuildCommDCBW BuildCommDCB; 
    24142463    alias BuildCommDCBAndTimeoutsW BuildCommDCBAndTimeouts; 
    24152464    alias CallNamedPipeW CallNamedPipe; 
    2416     alias ClearEventLogW ClearEventLog; 
    24172465    alias CommConfigDialogW CommConfigDialog; 
    24182466    alias CopyFileW CopyFile; 
     
    24222470    alias CreateEventW CreateEvent; 
    24232471    alias CreateFileW CreateFile; 
    2424     alias CreateFileMappingW CreateFileMapping; 
    24252472    alias CreateMailslotW CreateMailslot; 
    24262473    alias CreateMutexW CreateMutex; 
    2427     alias CreateNamedPipeW CreateNamedPipe; 
    24282474    alias CreateProcessW CreateProcess; 
    2429     alias CreateProcessAsUserW CreateProcessAsUser; 
    24302475    alias CreateSemaphoreW CreateSemaphore; 
    2431     alias CreateWaitableTimerW CreateWaitableTimer; 
    2432     alias DefineDosDeviceW DefineDosDevice; 
    24332476    alias DeleteFileW DeleteFile; 
    2434     alias EncryptFileW EncryptFile; 
    24352477    alias EndUpdateResourceW EndUpdateResource; 
    24362478    alias EnumResourceLanguagesW EnumResourceLanguages; 
     
    24392481    alias ExpandEnvironmentStringsW ExpandEnvironmentStrings; 
    24402482    alias FatalAppExitW FatalAppExit; 
    2441     alias FileEncryptionStatusW FileEncryptionStatus; 
    24422483    alias FindAtomW FindAtom; 
    24432484    alias FindFirstChangeNotificationW FindFirstChangeNotification; 
    24442485    alias FindFirstFileW FindFirstFile; 
    2445     alias FindFirstFileExW FindFirstFileEx; 
    24462486    alias FindNextFileW FindNextFile; 
    24472487    alias FindResourceW FindResource; 
     
    24502490    alias FreeEnvironmentStringsW FreeEnvironmentStrings; 
    24512491    alias GetAtomNameW GetAtomName; 
    2452     alias GetBinaryTypeW GetBinaryType; 
    24532492    alias GetCommandLineW GetCommandLine; 
    2454     alias GetCompressedFileSizeW GetCompressedFileSize; 
    24552493    alias GetComputerNameW GetComputerName; 
    24562494    alias GetCurrentDirectoryW GetCurrentDirectory; 
     
    24622500    alias GetEnvironmentVariableW GetEnvironmentVariable; 
    24632501    alias GetFileAttributesW GetFileAttributes; 
    2464     alias GetFileSecurityW GetFileSecurity; 
    2465     alias GetFileAttributesExW GetFileAttributesEx; 
    24662502    alias GetFullPathNameW GetFullPathName; 
    24672503    alias GetLogicalDriveStringsW GetLogicalDriveStrings; 
     
    24922528    alias LoadLibraryW LoadLibrary; 
    24932529    alias LoadLibraryExW LoadLibraryEx; 
    2494     alias LogonUserW LogonUser; 
    2495     alias LookupAccountNameW LookupAccountName; 
    2496     alias LookupAccountSidW LookupAccountSid; 
    2497     alias LookupPrivilegeDisplayNameW LookupPrivilegeDisplayName; 
    2498     alias LookupPrivilegeNameW LookupPrivilegeName; 
    2499     alias LookupPrivilegeValueW LookupPrivilegeValue; 
    25002530    alias lstrcatW lstrcat; 
    25012531    alias lstrcmpW lstrcmp; 
     
    25402570    alias WriteProfileStringW WriteProfileString; 
    25412571 
     2572    static if (_WIN32_WINDOWS >= 0x410) { 
     2573        alias CreateWaitableTimerW CreateWaitableTimer; 
     2574        alias GetFileAttributesExW GetFileAttributesEx; 
     2575    } 
     2576 
     2577    static if (_WIN32_WINNT_ONLY) { 
     2578        alias HW_PROFILE_INFOW HW_PROFILE_INFO; 
     2579        alias AccessCheckAndAuditAlarmW AccessCheckAndAuditAlarm; 
     2580        alias BackupEventLogW BackupEventLog; 
     2581        alias ClearEventLogW ClearEventLog; 
     2582        alias CreateNamedPipeW CreateNamedPipe; 
     2583        alias CreateProcessAsUserW CreateProcessAsUser; 
     2584        alias DefineDosDeviceW DefineDosDevice; 
     2585        alias FindFirstFileExW FindFirstFileEx; 
     2586        alias GetBinaryTypeW GetBinaryType; 
     2587        alias GetCompressedFileSizeW GetCompressedFileSize; 
     2588        alias GetFileSecurityW GetFileSecurity; 
     2589        alias LogonUserW LogonUser; 
     2590        alias LookupAccountNameW LookupAccountName; 
     2591        alias LookupAccountSidW LookupAccountSid; 
     2592        alias LookupPrivilegeDisplayNameW LookupPrivilegeDisplayName; 
     2593        alias LookupPrivilegeNameW LookupPrivilegeName; 
     2594        alias LookupPrivilegeValueW LookupPrivilegeValue; 
     2595 
     2596        static if (_WIN32_WINNT >= 0x500) { 
     2597            alias CreateFileMappingW CreateFileMapping; 
     2598            alias EncryptFileW EncryptFile; 
     2599            alias FileEncryptionStatusW FileEncryptionStatus; 
     2600        } 
     2601    } 
     2602 
     2603    // TODO: cleanup remainder 
     2604 
    25422605    static if ((_WIN32_WINNT >= 0x0500) || (_WIN32_WINDOWS >= 0x0410)) { 
    25432606        alias GetLongPathNameW GetLongPathName; 
    25442607    } 
    25452608 
    2546     static if (_WIN32_WINNT >= 0x0500) { 
     2609    static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x0500) { 
    25472610        alias CreateHardLinkW CreateHardLink; 
    25482611        alias CreateJobObjectW CreateJobObject; 
     
    25812644    alias STARTUPINFOA STARTUPINFO; 
    25822645    alias WIN32_FIND_DATAA WIN32_FIND_DATA; 
    2583     alias HW_PROFILE_INFOA HW_PROFILE_INFO; 
    2584     alias STARTUPINFO* LPSTARTUPINFO; 
    2585     alias WIN32_FIND_DATA* LPWIN32_FIND_DATA; 
    2586     alias HW_PROFILE_INFO* LPHW_PROFILE_INFO; 
    25872646    alias ENUMRESLANGPROCW ENUMRESLANGPROC; 
    25882647    alias ENUMRESNAMEPROCW ENUMRESNAMEPROC; 
    25892648    alias ENUMRESTYPEPROCW ENUMRESTYPEPROC; 
    2590     alias AccessCheckAndAuditAlarmA AccessCheckAndAuditAlarm; 
    25912649    alias AddAtomA AddAtom; 
    2592     alias BackupEventLogA BackupEventLog; 
    25932650    alias BeginUpdateResourceA BeginUpdateResource; 
    25942651    alias BuildCommDCBA BuildCommDCB; 
    25952652    alias BuildCommDCBAndTimeoutsA BuildCommDCBAndTimeouts; 
    25962653    alias CallNamedPipeA CallNamedPipe; 
    2597     alias ClearEventLogA ClearEventLog; 
    25982654    alias CommConfigDialogA CommConfigDialog; 
    25992655    alias CopyFileA CopyFile; 
     
    26032659    alias CreateEventA CreateEvent; 
    26042660    alias CreateFileA CreateFile; 
    2605     alias CreateFileMappingA CreateFileMapping; 
    26062661    alias CreateMailslotA CreateMailslot; 
    26072662    alias CreateMutexA CreateMutex; 
    2608     alias CreateNamedPipeA CreateNamedPipe; 
    26092663    alias CreateProcessA CreateProcess; 
    2610     alias CreateProcessAsUserA CreateProcessAsUser; 
    26112664    alias CreateSemaphoreA CreateSemaphore; 
    2612     alias CreateWaitableTimerA CreateWaitableTimer; 
    2613     alias DefineDosDeviceA DefineDosDevice; 
    26142665    alias DeleteFileA DeleteFile; 
    2615     alias EncryptFileA EncryptFile; 
    26162666    alias EndUpdateResourceA EndUpdateResource; 
    26172667    alias EnumResourceLanguagesA EnumResourceLanguages; 
     
    26202670    alias ExpandEnvironmentStringsA ExpandEnvironmentStrings; 
    26212671    alias FatalAppExitA FatalAppExit; 
    2622     alias FileEncryptionStatusA FileEncryptionStatus; 
    26232672    alias FindAtomA FindAtom; 
    26242673    alias FindFirstChangeNotificationA FindFirstChangeNotification; 
    26252674    alias FindFirstFileA FindFirstFile; 
    2626     alias FindFirstFileExA FindFirstFileEx; 
    26272675    alias FindNextFileA FindNextFile; 
    26282676    alias FindResourceA FindResource; 
     
    26312679    alias FreeEnvironmentStringsA FreeEnvironmentStrings; 
    26322680    alias GetAtomNameA GetAtomName; 
    2633     alias GetBinaryTypeA GetBinaryType; 
    26342681    alias GetCommandLineA GetCommandLine; 
    26352682    alias GetComputerNameA GetComputerName; 
    2636     alias GetCompressedFileSizeA GetCompressedFileSize; 
    26372683    alias GetCurrentDirectoryA GetCurrentDirectory; 
    26382684    alias GetDefaultCommConfigA GetDefaultCommConfig; 
     
    26422688    alias GetEnvironmentVariableA GetEnvironmentVariable; 
    26432689    alias GetFileAttributesA GetFileAttributes; 
    2644     alias GetFileSecurityA GetFileSecurity; 
    2645     alias GetFileAttributesExA GetFileAttributesEx; 
    26462690    alias GetFullPathNameA GetFullPathName; 
    26472691    alias GetLogicalDriveStringsA GetLogicalDriveStrings; 
     
    26722716    alias LoadLibraryA LoadLibrary; 
    26732717    alias LoadLibraryExA LoadLibraryEx; 
    2674     alias LogonUserA LogonUser; 
    2675     alias LookupAccountNameA LookupAccountName; 
    2676     alias LookupAccountSidA LookupAccountSid; 
    2677     alias LookupPrivilegeDisplayNameA LookupPrivilegeDisplayName; 
    2678     alias LookupPrivilegeNameA LookupPrivilegeName; 
    2679     alias LookupPrivilegeValueA LookupPrivilegeValue; 
    26802718    alias lstrcatA lstrcat; 
    26812719    alias lstrcmpA lstrcmp; 
     
    27202758    alias WriteProfileStringA WriteProfileString; 
    27212759 
     2760    static if (_WIN32_WINDOWS >= 0x410) { 
     2761        alias CreateWaitableTimerA CreateWaitableTimer; 
     2762        alias GetFileAttributesExA GetFileAttributesEx; 
     2763    } 
     2764 
     2765    static if (_WIN32_WINNT_ONLY) { 
     2766        alias HW_PROFILE_INFOA HW_PROFILE_INFO; 
     2767        alias AccessCheckAndAuditAlarmA AccessCheckAndAuditAlarm; 
     2768        alias BackupEventLogA BackupEventLog; 
     2769        alias ClearEventLogA ClearEventLog; 
     2770        alias CreateNamedPipeA CreateNamedPipe; 
     2771        alias CreateProcessAsUserA CreateProcessAsUser; 
     2772        alias DefineDosDeviceA DefineDosDevice; 
     2773        alias FindFirstFileExA FindFirstFileEx; 
     2774        alias GetBinaryTypeA GetBinaryType; 
     2775        alias GetCompressedFileSizeA GetCompressedFileSize; 
     2776        alias GetFileSecurityA GetFileSecurity; 
     2777        alias LogonUserA LogonUser; 
     2778        alias LookupAccountNameA LookupAccountName; 
     2779        alias LookupAccountSidA LookupAccountSid; 
     2780        alias LookupPrivilegeDisplayNameA LookupPrivilegeDisplayName; 
     2781        alias LookupPrivilegeNameA LookupPrivilegeName; 
     2782        alias LookupPrivilegeValueA LookupPrivilegeValue; 
     2783 
     2784        static if (_WIN32_WINNT >= 0x500) { 
     2785            alias CreateFileMappingA CreateFileMapping; 
     2786            alias EncryptFileA EncryptFile; 
     2787            alias FileEncryptionStatusA FileEncryptionStatus; 
     2788        } 
     2789    } 
     2790 
     2791    // TODO: cleanup remainder 
     2792 
    27222793    static if ((_WIN32_WINNT >= 0x0500) || (_WIN32_WINDOWS >= 0x0410)) { 
    27232794        alias GetLongPathNameA GetLongPathName; 
    27242795    } 
    27252796 
    2726     static if (_WIN32_WINNT >= 0x0500) { 
     2797    static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x0500) { 
    27272798        alias GetVolumeNameForVolumeMountPointA GetVolumeNameForVolumeMountPoint; 
    27282799        alias GetVolumePathNameA GetVolumePathName; 
     
    27592830 
    27602831} 
     2832 
     2833alias STARTUPINFO* LPSTARTUPINFO; 
     2834alias WIN32_FIND_DATA* LPWIN32_FIND_DATA; 
     2835static if (_WIN32_WINNT_ONLY) { 
     2836    alias HW_PROFILE_INFO* LPHW_PROFILE_INFO; 
     2837} 
     2838