home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / winbase.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  174KB  |  8,620 lines

  1. /************************************************************************
  2. *                                                                       *
  3. *   winbase.h -- This module defines the 32-Bit Windows Base APIs       *
  4. *                                                                       *
  5. *   Copyright 1990 - 1998 Microsoft Corp. All rights reserved.       *
  6. *                                                                       *
  7. ************************************************************************/
  8. #ifndef _WINBASE_
  9. #define _WINBASE_
  10.  
  11.  
  12. #ifdef _MAC
  13. #include <macwin32.h>
  14. #endif //_MAC
  15.  
  16. //
  17. // Define API decoration for direct importing of DLL references.
  18. //
  19.  
  20. #if !defined(_ADVAPI32_)
  21. #define WINADVAPI DECLSPEC_IMPORT
  22. #else
  23. #define WINADVAPI
  24. #endif
  25.  
  26. #if !defined(_KERNEL32_)
  27. #define WINBASEAPI DECLSPEC_IMPORT
  28. #else
  29. #define WINBASEAPI
  30. #endif
  31.  
  32. #if !defined(_ZAWPROXY_)
  33. #define ZAWPROXYAPI DECLSPEC_IMPORT
  34. #else
  35. #define ZAWPROXYAPI
  36. #endif
  37.  
  38. #ifdef __cplusplus
  39. extern "C" {
  40. #endif
  41.  
  42. /*
  43.  * Compatibility macros
  44.  */
  45.  
  46. #define DefineHandleTable(w)            ((w),TRUE)
  47. #define LimitEmsPages(dw)
  48. #define SetSwapAreaSize(w)              (w)
  49. #define LockSegment(w)                  GlobalFix((HANDLE)(w))
  50. #define UnlockSegment(w)                GlobalUnfix((HANDLE)(w))
  51. #define GetCurrentTime()                GetTickCount()
  52.  
  53. #define Yield()
  54.  
  55. #define INVALID_HANDLE_VALUE (HANDLE)-1
  56. #define INVALID_FILE_SIZE (DWORD)0xFFFFFFFF
  57.  
  58. #define FILE_BEGIN           0
  59. #define FILE_CURRENT         1
  60. #define FILE_END             2
  61.  
  62. #define TIME_ZONE_ID_INVALID (DWORD)0xFFFFFFFF
  63.  
  64. #define WAIT_FAILED (DWORD)0xFFFFFFFF
  65. #define WAIT_OBJECT_0       ((STATUS_WAIT_0 ) + 0 )
  66.  
  67. #define WAIT_ABANDONED         ((STATUS_ABANDONED_WAIT_0 ) + 0 )
  68. #define WAIT_ABANDONED_0       ((STATUS_ABANDONED_WAIT_0 ) + 0 )
  69.  
  70. #define WAIT_TIMEOUT                        STATUS_TIMEOUT
  71. #define WAIT_IO_COMPLETION                  STATUS_USER_APC
  72. #define STILL_ACTIVE                        STATUS_PENDING
  73. #define EXCEPTION_ACCESS_VIOLATION          STATUS_ACCESS_VIOLATION
  74. #define EXCEPTION_DATATYPE_MISALIGNMENT     STATUS_DATATYPE_MISALIGNMENT
  75. #define EXCEPTION_BREAKPOINT                STATUS_BREAKPOINT
  76. #define EXCEPTION_SINGLE_STEP               STATUS_SINGLE_STEP
  77. #define EXCEPTION_ARRAY_BOUNDS_EXCEEDED     STATUS_ARRAY_BOUNDS_EXCEEDED
  78. #define EXCEPTION_FLT_DENORMAL_OPERAND      STATUS_FLOAT_DENORMAL_OPERAND
  79. #define EXCEPTION_FLT_DIVIDE_BY_ZERO        STATUS_FLOAT_DIVIDE_BY_ZERO
  80. #define EXCEPTION_FLT_INEXACT_RESULT        STATUS_FLOAT_INEXACT_RESULT
  81. #define EXCEPTION_FLT_INVALID_OPERATION     STATUS_FLOAT_INVALID_OPERATION
  82. #define EXCEPTION_FLT_OVERFLOW              STATUS_FLOAT_OVERFLOW
  83. #define EXCEPTION_FLT_STACK_CHECK           STATUS_FLOAT_STACK_CHECK
  84. #define EXCEPTION_FLT_UNDERFLOW             STATUS_FLOAT_UNDERFLOW
  85. #define EXCEPTION_INT_DIVIDE_BY_ZERO        STATUS_INTEGER_DIVIDE_BY_ZERO
  86. #define EXCEPTION_INT_OVERFLOW              STATUS_INTEGER_OVERFLOW
  87. #define EXCEPTION_PRIV_INSTRUCTION          STATUS_PRIVILEGED_INSTRUCTION
  88. #define EXCEPTION_IN_PAGE_ERROR             STATUS_IN_PAGE_ERROR
  89. #define EXCEPTION_ILLEGAL_INSTRUCTION       STATUS_ILLEGAL_INSTRUCTION
  90. #define EXCEPTION_NONCONTINUABLE_EXCEPTION  STATUS_NONCONTINUABLE_EXCEPTION
  91. #define EXCEPTION_STACK_OVERFLOW            STATUS_STACK_OVERFLOW
  92. #define EXCEPTION_INVALID_DISPOSITION       STATUS_INVALID_DISPOSITION
  93. #define EXCEPTION_GUARD_PAGE                STATUS_GUARD_PAGE_VIOLATION
  94. #define EXCEPTION_INVALID_HANDLE            STATUS_INVALID_HANDLE
  95. #define CONTROL_C_EXIT                      STATUS_CONTROL_C_EXIT
  96. #define MoveMemory RtlMoveMemory
  97. #define CopyMemory RtlCopyMemory
  98. #define FillMemory RtlFillMemory
  99. #define ZeroMemory RtlZeroMemory
  100.  
  101. #if (_WIN32_WINNT >= 0x0500)
  102. #if defined(_M_ALPHA)
  103. #define MoveMemoryVlm RtlMoveMemory
  104. #define CopyMemoryVlm RtlCopyMemory
  105. #define FillMemoryVlm RtlFillMemory
  106. #define ZeroMemoryVlm RtlZeroMemory
  107. #endif
  108. #endif
  109.  
  110. //
  111. // File creation flags must start at the high end since they
  112. // are combined with the attributes
  113. //
  114.  
  115. #define FILE_FLAG_WRITE_THROUGH         0x80000000
  116. #define FILE_FLAG_OVERLAPPED            0x40000000
  117. #define FILE_FLAG_NO_BUFFERING          0x20000000
  118. #define FILE_FLAG_RANDOM_ACCESS         0x10000000
  119. #define FILE_FLAG_SEQUENTIAL_SCAN       0x08000000
  120. #define FILE_FLAG_DELETE_ON_CLOSE       0x04000000
  121. #define FILE_FLAG_BACKUP_SEMANTICS      0x02000000
  122. #define FILE_FLAG_POSIX_SEMANTICS       0x01000000
  123. #define FILE_FLAG_OPEN_REPARSE_POINT    0x00200000
  124. #define FILE_FLAG_OPEN_NO_RECALL        0x00100000
  125.  
  126. #define CREATE_NEW          1
  127. #define CREATE_ALWAYS       2
  128. #define OPEN_EXISTING       3
  129. #define OPEN_ALWAYS         4
  130. #define TRUNCATE_EXISTING   5
  131.  
  132. #if(_WIN32_WINNT >= 0x0400)
  133. //
  134. // Define possible return codes from the CopyFileEx callback routine
  135. //
  136.  
  137. #define PROGRESS_CONTINUE   0
  138. #define PROGRESS_CANCEL     1
  139. #define PROGRESS_STOP       2
  140. #define PROGRESS_QUIET      3
  141.  
  142. //
  143. // Define CopyFileEx callback routine state change values
  144. //
  145.  
  146. #define CALLBACK_CHUNK_FINISHED         0x00000000
  147. #define CALLBACK_STREAM_SWITCH          0x00000001
  148.  
  149. //
  150. // Define CopyFileEx option flags
  151. //
  152.  
  153. #define COPY_FILE_FAIL_IF_EXISTS        0x00000001
  154. #define COPY_FILE_RESTARTABLE           0x00000002
  155. #define COPY_FILE_OPEN_SOURCE_FOR_WRITE 0x00000004
  156. #endif /* _WIN32_WINNT >= 0x0400 */
  157.  
  158. //
  159. // Define the NamedPipe definitions
  160. //
  161.  
  162.  
  163. //
  164. // Define the dwOpenMode values for CreateNamedPipe
  165. //
  166.  
  167. #define PIPE_ACCESS_INBOUND         0x00000001
  168. #define PIPE_ACCESS_OUTBOUND        0x00000002
  169. #define PIPE_ACCESS_DUPLEX          0x00000003
  170.  
  171. //
  172. // Define the Named Pipe End flags for GetNamedPipeInfo
  173. //
  174.  
  175. #define PIPE_CLIENT_END             0x00000000
  176. #define PIPE_SERVER_END             0x00000001
  177.  
  178. //
  179. // Define the dwPipeMode values for CreateNamedPipe
  180. //
  181.  
  182. #define PIPE_WAIT                   0x00000000
  183. #define PIPE_NOWAIT                 0x00000001
  184. #define PIPE_READMODE_BYTE          0x00000000
  185. #define PIPE_READMODE_MESSAGE       0x00000002
  186. #define PIPE_TYPE_BYTE              0x00000000
  187. #define PIPE_TYPE_MESSAGE           0x00000004
  188.  
  189. //
  190. // Define the well known values for CreateNamedPipe nMaxInstances
  191. //
  192.  
  193. #define PIPE_UNLIMITED_INSTANCES    255
  194.  
  195. //
  196. // Define the Security Quality of Service bits to be passed
  197. // into CreateFile
  198. //
  199.  
  200. #define SECURITY_ANONYMOUS          ( SecurityAnonymous      << 16 )
  201. #define SECURITY_IDENTIFICATION     ( SecurityIdentification << 16 )
  202. #define SECURITY_IMPERSONATION      ( SecurityImpersonation  << 16 )
  203. #define SECURITY_DELEGATION         ( SecurityDelegation     << 16 )
  204.  
  205. #define SECURITY_CONTEXT_TRACKING  0x00040000
  206. #define SECURITY_EFFECTIVE_ONLY    0x00080000
  207.  
  208. #define SECURITY_SQOS_PRESENT      0x00100000
  209. #define SECURITY_VALID_SQOS_FLAGS  0x001F0000
  210.  
  211. //
  212. //  File structures
  213. //
  214.  
  215. typedef struct _OVERLAPPED {
  216.     DWORD   Internal;
  217.     DWORD   InternalHigh;
  218.     DWORD   Offset;
  219.     DWORD   OffsetHigh;
  220.     HANDLE  hEvent;
  221. } OVERLAPPED, *LPOVERLAPPED;
  222.  
  223. typedef struct _SECURITY_ATTRIBUTES {
  224.     DWORD nLength;
  225.     LPVOID lpSecurityDescriptor;
  226.     BOOL bInheritHandle;
  227. } SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES, *LPSECURITY_ATTRIBUTES;
  228.  
  229. typedef struct _PROCESS_INFORMATION {
  230.     HANDLE hProcess;
  231.     HANDLE hThread;
  232.     DWORD dwProcessId;
  233.     DWORD dwThreadId;
  234. } PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION;
  235.  
  236. //
  237. //  File System time stamps are represented with the following structure:
  238. //
  239.  
  240. typedef struct _FILETIME {
  241.     DWORD dwLowDateTime;
  242.     DWORD dwHighDateTime;
  243. } FILETIME, *PFILETIME, *LPFILETIME;
  244.  
  245. //
  246. // System time is represented with the following structure:
  247. //
  248.  
  249. typedef struct _SYSTEMTIME {
  250.     WORD wYear;
  251.     WORD wMonth;
  252.     WORD wDayOfWeek;
  253.     WORD wDay;
  254.     WORD wHour;
  255.     WORD wMinute;
  256.     WORD wSecond;
  257.     WORD wMilliseconds;
  258. } SYSTEMTIME, *PSYSTEMTIME, *LPSYSTEMTIME;
  259.  
  260. typedef DWORD (WINAPI *PTHREAD_START_ROUTINE)(
  261.     LPVOID lpThreadParameter
  262.     );
  263. typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
  264.  
  265. #if(_WIN32_WINNT >= 0x0400)
  266. typedef VOID (WINAPI *PFIBER_START_ROUTINE)(
  267.     LPVOID lpFiberParameter
  268.     );
  269. typedef PFIBER_START_ROUTINE LPFIBER_START_ROUTINE;
  270. #endif /* _WIN32_WINNT >= 0x0400 */
  271.  
  272. typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;
  273. typedef PRTL_CRITICAL_SECTION PCRITICAL_SECTION;
  274. typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION;
  275.  
  276. typedef RTL_CRITICAL_SECTION_DEBUG CRITICAL_SECTION_DEBUG;
  277. typedef PRTL_CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG;
  278. typedef PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG;
  279.  
  280. #ifdef _X86_
  281. typedef PLDT_ENTRY LPLDT_ENTRY;
  282. #else
  283. typedef LPVOID LPLDT_ENTRY;
  284. #endif
  285.  
  286. #define MUTEX_MODIFY_STATE MUTANT_QUERY_STATE
  287. #define MUTEX_ALL_ACCESS MUTANT_ALL_ACCESS
  288.  
  289. //
  290. // Serial provider type.
  291. //
  292.  
  293. #define SP_SERIALCOMM    ((DWORD)0x00000001)
  294.  
  295. //
  296. // Provider SubTypes
  297. //
  298.  
  299. #define PST_UNSPECIFIED      ((DWORD)0x00000000)
  300. #define PST_RS232            ((DWORD)0x00000001)
  301. #define PST_PARALLELPORT     ((DWORD)0x00000002)
  302. #define PST_RS422            ((DWORD)0x00000003)
  303. #define PST_RS423            ((DWORD)0x00000004)
  304. #define PST_RS449            ((DWORD)0x00000005)
  305. #define PST_MODEM            ((DWORD)0x00000006)
  306. #define PST_FAX              ((DWORD)0x00000021)
  307. #define PST_SCANNER          ((DWORD)0x00000022)
  308. #define PST_NETWORK_BRIDGE   ((DWORD)0x00000100)
  309. #define PST_LAT              ((DWORD)0x00000101)
  310. #define PST_TCPIP_TELNET     ((DWORD)0x00000102)
  311. #define PST_X25              ((DWORD)0x00000103)
  312.  
  313.  
  314. //
  315. // Provider capabilities flags.
  316. //
  317.  
  318. #define PCF_DTRDSR        ((DWORD)0x0001)
  319. #define PCF_RTSCTS        ((DWORD)0x0002)
  320. #define PCF_RLSD          ((DWORD)0x0004)
  321. #define PCF_PARITY_CHECK  ((DWORD)0x0008)
  322. #define PCF_XONXOFF       ((DWORD)0x0010)
  323. #define PCF_SETXCHAR      ((DWORD)0x0020)
  324. #define PCF_TOTALTIMEOUTS ((DWORD)0x0040)
  325. #define PCF_INTTIMEOUTS   ((DWORD)0x0080)
  326. #define PCF_SPECIALCHARS  ((DWORD)0x0100)
  327. #define PCF_16BITMODE     ((DWORD)0x0200)
  328.  
  329. //
  330. // Comm provider settable parameters.
  331. //
  332.  
  333. #define SP_PARITY         ((DWORD)0x0001)
  334. #define SP_BAUD           ((DWORD)0x0002)
  335. #define SP_DATABITS       ((DWORD)0x0004)
  336. #define SP_STOPBITS       ((DWORD)0x0008)
  337. #define SP_HANDSHAKING    ((DWORD)0x0010)
  338. #define SP_PARITY_CHECK   ((DWORD)0x0020)
  339. #define SP_RLSD           ((DWORD)0x0040)
  340.  
  341. //
  342. // Settable baud rates in the provider.
  343. //
  344.  
  345. #define BAUD_075          ((DWORD)0x00000001)
  346. #define BAUD_110          ((DWORD)0x00000002)
  347. #define BAUD_134_5        ((DWORD)0x00000004)
  348. #define BAUD_150          ((DWORD)0x00000008)
  349. #define BAUD_300          ((DWORD)0x00000010)
  350. #define BAUD_600          ((DWORD)0x00000020)
  351. #define BAUD_1200         ((DWORD)0x00000040)
  352. #define BAUD_1800         ((DWORD)0x00000080)
  353. #define BAUD_2400         ((DWORD)0x00000100)
  354. #define BAUD_4800         ((DWORD)0x00000200)
  355. #define BAUD_7200         ((DWORD)0x00000400)
  356. #define BAUD_9600         ((DWORD)0x00000800)
  357. #define BAUD_14400        ((DWORD)0x00001000)
  358. #define BAUD_19200        ((DWORD)0x00002000)
  359. #define BAUD_38400        ((DWORD)0x00004000)
  360. #define BAUD_56K          ((DWORD)0x00008000)
  361. #define BAUD_128K         ((DWORD)0x00010000)
  362. #define BAUD_115200       ((DWORD)0x00020000)
  363. #define BAUD_57600        ((DWORD)0x00040000)
  364. #define BAUD_USER         ((DWORD)0x10000000)
  365.  
  366. //
  367. // Settable Data Bits
  368. //
  369.  
  370. #define DATABITS_5        ((WORD)0x0001)
  371. #define DATABITS_6        ((WORD)0x0002)
  372. #define DATABITS_7        ((WORD)0x0004)
  373. #define DATABITS_8        ((WORD)0x0008)
  374. #define DATABITS_16       ((WORD)0x0010)
  375. #define DATABITS_16X      ((WORD)0x0020)
  376.  
  377. //
  378. // Settable Stop and Parity bits.
  379. //
  380.  
  381. #define STOPBITS_10       ((WORD)0x0001)
  382. #define STOPBITS_15       ((WORD)0x0002)
  383. #define STOPBITS_20       ((WORD)0x0004)
  384. #define PARITY_NONE       ((WORD)0x0100)
  385. #define PARITY_ODD        ((WORD)0x0200)
  386. #define PARITY_EVEN       ((WORD)0x0400)
  387. #define PARITY_MARK       ((WORD)0x0800)
  388. #define PARITY_SPACE      ((WORD)0x1000)
  389.  
  390. typedef struct _COMMPROP {
  391.     WORD wPacketLength;
  392.     WORD wPacketVersion;
  393.     DWORD dwServiceMask;
  394.     DWORD dwReserved1;
  395.     DWORD dwMaxTxQueue;
  396.     DWORD dwMaxRxQueue;
  397.     DWORD dwMaxBaud;
  398.     DWORD dwProvSubType;
  399.     DWORD dwProvCapabilities;
  400.     DWORD dwSettableParams;
  401.     DWORD dwSettableBaud;
  402.     WORD wSettableData;
  403.     WORD wSettableStopParity;
  404.     DWORD dwCurrentTxQueue;
  405.     DWORD dwCurrentRxQueue;
  406.     DWORD dwProvSpec1;
  407.     DWORD dwProvSpec2;
  408.     WCHAR wcProvChar[1];
  409. } COMMPROP,*LPCOMMPROP;
  410.  
  411. //
  412. // Set dwProvSpec1 to COMMPROP_INITIALIZED to indicate that wPacketLength
  413. // is valid before a call to GetCommProperties().
  414. //
  415. #define COMMPROP_INITIALIZED ((DWORD)0xE73CF52E)
  416.  
  417. typedef struct _COMSTAT {
  418.     DWORD fCtsHold : 1;
  419.     DWORD fDsrHold : 1;
  420.     DWORD fRlsdHold : 1;
  421.     DWORD fXoffHold : 1;
  422.     DWORD fXoffSent : 1;
  423.     DWORD fEof : 1;
  424.     DWORD fTxim : 1;
  425.     DWORD fReserved : 25;
  426.     DWORD cbInQue;
  427.     DWORD cbOutQue;
  428. } COMSTAT, *LPCOMSTAT;
  429.  
  430. //
  431. // DTR Control Flow Values.
  432. //
  433. #define DTR_CONTROL_DISABLE    0x00
  434. #define DTR_CONTROL_ENABLE     0x01
  435. #define DTR_CONTROL_HANDSHAKE  0x02
  436.  
  437. //
  438. // RTS Control Flow Values
  439. //
  440. #define RTS_CONTROL_DISABLE    0x00
  441. #define RTS_CONTROL_ENABLE     0x01
  442. #define RTS_CONTROL_HANDSHAKE  0x02
  443. #define RTS_CONTROL_TOGGLE     0x03
  444.  
  445. typedef struct _DCB {
  446.     DWORD DCBlength;      /* sizeof(DCB)                     */
  447.     DWORD BaudRate;       /* Baudrate at which running       */
  448.     DWORD fBinary: 1;     /* Binary Mode (skip EOF check)    */
  449.     DWORD fParity: 1;     /* Enable parity checking          */
  450.     DWORD fOutxCtsFlow:1; /* CTS handshaking on output       */
  451.     DWORD fOutxDsrFlow:1; /* DSR handshaking on output       */
  452.     DWORD fDtrControl:2;  /* DTR Flow control                */
  453.     DWORD fDsrSensitivity:1; /* DSR Sensitivity              */
  454.     DWORD fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */
  455.     DWORD fOutX: 1;       /* Enable output X-ON/X-OFF        */
  456.     DWORD fInX: 1;        /* Enable input X-ON/X-OFF         */
  457.     DWORD fErrorChar: 1;  /* Enable Err Replacement          */
  458.     DWORD fNull: 1;       /* Enable Null stripping           */
  459.     DWORD fRtsControl:2;  /* Rts Flow control                */
  460.     DWORD fAbortOnError:1; /* Abort all reads and writes on Error */
  461.     DWORD fDummy2:17;     /* Reserved                        */
  462.     WORD wReserved;       /* Not currently used              */
  463.     WORD XonLim;          /* Transmit X-ON threshold         */
  464.     WORD XoffLim;         /* Transmit X-OFF threshold        */
  465.     BYTE ByteSize;        /* Number of bits/byte, 4-8        */
  466.     BYTE Parity;          /* 0-4=None,Odd,Even,Mark,Space    */
  467.     BYTE StopBits;        /* 0,1,2 = 1, 1.5, 2               */
  468.     char XonChar;         /* Tx and Rx X-ON character        */
  469.     char XoffChar;        /* Tx and Rx X-OFF character       */
  470.     char ErrorChar;       /* Error replacement char          */
  471.     char EofChar;         /* End of Input character          */
  472.     char EvtChar;         /* Received Event character        */
  473.     WORD wReserved1;      /* Fill for now.                   */
  474. } DCB, *LPDCB;
  475.  
  476. typedef struct _COMMTIMEOUTS {
  477.     DWORD ReadIntervalTimeout;          /* Maximum time between read chars. */
  478.     DWORD ReadTotalTimeoutMultiplier;   /* Multiplier of characters.        */
  479.     DWORD ReadTotalTimeoutConstant;     /* Constant in milliseconds.        */
  480.     DWORD WriteTotalTimeoutMultiplier;  /* Multiplier of characters.        */
  481.     DWORD WriteTotalTimeoutConstant;    /* Constant in milliseconds.        */
  482. } COMMTIMEOUTS,*LPCOMMTIMEOUTS;
  483.  
  484. typedef struct _COMMCONFIG {
  485.     DWORD dwSize;               /* Size of the entire struct */
  486.     WORD wVersion;              /* version of the structure */
  487.     WORD wReserved;             /* alignment */
  488.     DCB dcb;                    /* device control block */
  489.     DWORD dwProviderSubType;    /* ordinal value for identifying
  490.                                    provider-defined data structure format*/
  491.     DWORD dwProviderOffset;     /* Specifies the offset of provider specific
  492.                                    data field in bytes from the start */
  493.     DWORD dwProviderSize;       /* size of the provider-specific data field */
  494.     WCHAR wcProviderData[1];    /* provider-specific data */
  495. } COMMCONFIG,*LPCOMMCONFIG;
  496.  
  497. typedef struct _SYSTEM_INFO {
  498.     union {
  499.         DWORD dwOemId;          // Obsolete field...do not use
  500.         struct {
  501.             WORD wProcessorArchitecture;
  502.             WORD wReserved;
  503.         };
  504.     };
  505.     DWORD dwPageSize;
  506.     LPVOID lpMinimumApplicationAddress;
  507.     LPVOID lpMaximumApplicationAddress;
  508.     DWORD dwActiveProcessorMask;
  509.     DWORD dwNumberOfProcessors;
  510.     DWORD dwProcessorType;
  511.     DWORD dwAllocationGranularity;
  512.     WORD wProcessorLevel;
  513.     WORD wProcessorRevision;
  514. } SYSTEM_INFO, *LPSYSTEM_INFO;
  515.  
  516. //
  517. //
  518.  
  519.  
  520. #define FreeModule(hLibModule) FreeLibrary((hLibModule))
  521. #define MakeProcInstance(lpProc,hInstance) (lpProc)
  522. #define FreeProcInstance(lpProc) (lpProc)
  523.  
  524. /* Global Memory Flags */
  525. #define GMEM_FIXED          0x0000
  526. #define GMEM_MOVEABLE       0x0002
  527. #define GMEM_NOCOMPACT      0x0010
  528. #define GMEM_NODISCARD      0x0020
  529. #define GMEM_ZEROINIT       0x0040
  530. #define GMEM_MODIFY         0x0080
  531. #define GMEM_DISCARDABLE    0x0100
  532. #define GMEM_NOT_BANKED     0x1000
  533. #define GMEM_SHARE          0x2000
  534. #define GMEM_DDESHARE       0x2000
  535. #define GMEM_NOTIFY         0x4000
  536. #define GMEM_LOWER          GMEM_NOT_BANKED
  537. #define GMEM_VALID_FLAGS    0x7F72
  538. #define GMEM_INVALID_HANDLE 0x8000
  539.  
  540. #define GHND                (GMEM_MOVEABLE | GMEM_ZEROINIT)
  541. #define GPTR                (GMEM_FIXED | GMEM_ZEROINIT)
  542.  
  543. #define GlobalLRUNewest( h )    (HANDLE)(h)
  544. #define GlobalLRUOldest( h )    (HANDLE)(h)
  545. #define GlobalDiscard( h )      GlobalReAlloc( (h), 0, GMEM_MOVEABLE )
  546.  
  547. /* Flags returned by GlobalFlags (in addition to GMEM_DISCARDABLE) */
  548. #define GMEM_DISCARDED      0x4000
  549. #define GMEM_LOCKCOUNT      0x00FF
  550.  
  551. typedef struct _MEMORYSTATUS {
  552.     DWORD dwLength;
  553.     DWORD dwMemoryLoad;
  554.     DWORD dwTotalPhys;
  555.     DWORD dwAvailPhys;
  556.     DWORD dwTotalPageFile;
  557.     DWORD dwAvailPageFile;
  558.     DWORD dwTotalVirtual;
  559.     DWORD dwAvailVirtual;
  560. } MEMORYSTATUS, *LPMEMORYSTATUS;
  561.  
  562. /* Local Memory Flags */
  563. #define LMEM_FIXED          0x0000
  564. #define LMEM_MOVEABLE       0x0002
  565. #define LMEM_NOCOMPACT      0x0010
  566. #define LMEM_NODISCARD      0x0020
  567. #define LMEM_ZEROINIT       0x0040
  568. #define LMEM_MODIFY         0x0080
  569. #define LMEM_DISCARDABLE    0x0F00
  570. #define LMEM_VALID_FLAGS    0x0F72
  571. #define LMEM_INVALID_HANDLE 0x8000
  572.  
  573. #define LHND                (LMEM_MOVEABLE | LMEM_ZEROINIT)
  574. #define LPTR                (LMEM_FIXED | LMEM_ZEROINIT)
  575.  
  576. #define NONZEROLHND         (LMEM_MOVEABLE)
  577. #define NONZEROLPTR         (LMEM_FIXED)
  578.  
  579. #define LocalDiscard( h )   LocalReAlloc( (h), 0, LMEM_MOVEABLE )
  580.  
  581. /* Flags returned by LocalFlags (in addition to LMEM_DISCARDABLE) */
  582. #define LMEM_DISCARDED      0x4000
  583. #define LMEM_LOCKCOUNT      0x00FF
  584.  
  585. //
  586. // dwCreationFlag values
  587. //
  588.  
  589. #define DEBUG_PROCESS               0x00000001
  590. #define DEBUG_ONLY_THIS_PROCESS     0x00000002
  591.  
  592. #define CREATE_SUSPENDED            0x00000004
  593.  
  594. #define DETACHED_PROCESS            0x00000008
  595.  
  596. #define CREATE_NEW_CONSOLE          0x00000010
  597.  
  598. #define NORMAL_PRIORITY_CLASS       0x00000020
  599. #define IDLE_PRIORITY_CLASS         0x00000040
  600. #define HIGH_PRIORITY_CLASS         0x00000080
  601. #define REALTIME_PRIORITY_CLASS     0x00000100
  602.  
  603. #define CREATE_NEW_PROCESS_GROUP    0x00000200
  604. #define CREATE_UNICODE_ENVIRONMENT  0x00000400
  605.  
  606. #define CREATE_SEPARATE_WOW_VDM     0x00000800
  607. #define CREATE_SHARED_WOW_VDM       0x00001000
  608. #define CREATE_FORCEDOS             0x00002000
  609.  
  610. #define CREATE_DEFAULT_ERROR_MODE   0x04000000
  611. #define CREATE_NO_WINDOW            0x08000000
  612.  
  613. #define PROFILE_USER                0x10000000
  614. #define PROFILE_KERNEL              0x20000000
  615. #define PROFILE_SERVER              0x40000000
  616.  
  617. #define THREAD_PRIORITY_LOWEST          THREAD_BASE_PRIORITY_MIN
  618. #define THREAD_PRIORITY_BELOW_NORMAL    (THREAD_PRIORITY_LOWEST+1)
  619. #define THREAD_PRIORITY_NORMAL          0
  620. #define THREAD_PRIORITY_HIGHEST         THREAD_BASE_PRIORITY_MAX
  621. #define THREAD_PRIORITY_ABOVE_NORMAL    (THREAD_PRIORITY_HIGHEST-1)
  622. #define THREAD_PRIORITY_ERROR_RETURN    (MAXLONG)
  623.  
  624. #define THREAD_PRIORITY_TIME_CRITICAL   THREAD_BASE_PRIORITY_LOWRT
  625. #define THREAD_PRIORITY_IDLE            THREAD_BASE_PRIORITY_IDLE
  626.  
  627. //
  628. // Debug APIs
  629. //
  630. #define EXCEPTION_DEBUG_EVENT       1
  631. #define CREATE_THREAD_DEBUG_EVENT   2
  632. #define CREATE_PROCESS_DEBUG_EVENT  3
  633. #define EXIT_THREAD_DEBUG_EVENT     4
  634. #define EXIT_PROCESS_DEBUG_EVENT    5
  635. #define LOAD_DLL_DEBUG_EVENT        6
  636. #define UNLOAD_DLL_DEBUG_EVENT      7
  637. #define OUTPUT_DEBUG_STRING_EVENT   8
  638. #define RIP_EVENT                   9
  639.  
  640. typedef struct _EXCEPTION_DEBUG_INFO {
  641.     EXCEPTION_RECORD ExceptionRecord;
  642.     DWORD dwFirstChance;
  643. } EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO;
  644.  
  645. typedef struct _CREATE_THREAD_DEBUG_INFO {
  646.     HANDLE hThread;
  647.     LPVOID lpThreadLocalBase;
  648.     LPTHREAD_START_ROUTINE lpStartAddress;
  649. } CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO;
  650.  
  651. typedef struct _CREATE_PROCESS_DEBUG_INFO {
  652.     HANDLE hFile;
  653.     HANDLE hProcess;
  654.     HANDLE hThread;
  655.     LPVOID lpBaseOfImage;
  656.     DWORD dwDebugInfoFileOffset;
  657.     DWORD nDebugInfoSize;
  658.     LPVOID lpThreadLocalBase;
  659.     LPTHREAD_START_ROUTINE lpStartAddress;
  660.     LPVOID lpImageName;
  661.     WORD fUnicode;
  662. } CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO;
  663.  
  664. typedef struct _EXIT_THREAD_DEBUG_INFO {
  665.     DWORD dwExitCode;
  666. } EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO;
  667.  
  668. typedef struct _EXIT_PROCESS_DEBUG_INFO {
  669.     DWORD dwExitCode;
  670. } EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO;
  671.  
  672. typedef struct _LOAD_DLL_DEBUG_INFO {
  673.     HANDLE hFile;
  674.     LPVOID lpBaseOfDll;
  675.     DWORD dwDebugInfoFileOffset;
  676.     DWORD nDebugInfoSize;
  677.     LPVOID lpImageName;
  678.     WORD fUnicode;
  679. } LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO;
  680.  
  681. typedef struct _UNLOAD_DLL_DEBUG_INFO {
  682.     LPVOID lpBaseOfDll;
  683. } UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO;
  684.  
  685. typedef struct _OUTPUT_DEBUG_STRING_INFO {
  686.     LPSTR lpDebugStringData;
  687.     WORD fUnicode;
  688.     WORD nDebugStringLength;
  689. } OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO;
  690.  
  691. typedef struct _RIP_INFO {
  692.     DWORD dwError;
  693.     DWORD dwType;
  694. } RIP_INFO, *LPRIP_INFO;
  695.  
  696.  
  697. typedef struct _DEBUG_EVENT {
  698.     DWORD dwDebugEventCode;
  699.     DWORD dwProcessId;
  700.     DWORD dwThreadId;
  701.     union {
  702.         EXCEPTION_DEBUG_INFO Exception;
  703.         CREATE_THREAD_DEBUG_INFO CreateThread;
  704.         CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
  705.         EXIT_THREAD_DEBUG_INFO ExitThread;
  706.         EXIT_PROCESS_DEBUG_INFO ExitProcess;
  707.         LOAD_DLL_DEBUG_INFO LoadDll;
  708.         UNLOAD_DLL_DEBUG_INFO UnloadDll;
  709.         OUTPUT_DEBUG_STRING_INFO DebugString;
  710.         RIP_INFO RipInfo;
  711.     } u;
  712. } DEBUG_EVENT, *LPDEBUG_EVENT;
  713.  
  714. #if !defined(MIDL_PASS)
  715. typedef PCONTEXT LPCONTEXT;
  716. typedef PEXCEPTION_RECORD LPEXCEPTION_RECORD;
  717. typedef PEXCEPTION_POINTERS LPEXCEPTION_POINTERS;
  718. #endif
  719.  
  720. #define DRIVE_UNKNOWN     0
  721. #define DRIVE_NO_ROOT_DIR 1
  722. #define DRIVE_REMOVABLE   2
  723. #define DRIVE_FIXED       3
  724. #define DRIVE_REMOTE      4
  725. #define DRIVE_CDROM       5
  726. #define DRIVE_RAMDISK     6
  727.  
  728.  
  729. #ifndef _MAC
  730. #define GetFreeSpace(w)                 (0x100000L)
  731. #else
  732. WINBASEAPI DWORD WINAPI GetFreeSpace(UINT);
  733. #endif
  734.  
  735.  
  736. #define FILE_TYPE_UNKNOWN   0x0000
  737. #define FILE_TYPE_DISK      0x0001
  738. #define FILE_TYPE_CHAR      0x0002
  739. #define FILE_TYPE_PIPE      0x0003
  740. #define FILE_TYPE_REMOTE    0x8000
  741.  
  742.  
  743. #define STD_INPUT_HANDLE    (DWORD)-10
  744. #define STD_OUTPUT_HANDLE   (DWORD)-11
  745. #define STD_ERROR_HANDLE      (DWORD)-12
  746.  
  747. #define NOPARITY            0
  748. #define ODDPARITY           1
  749. #define EVENPARITY          2
  750. #define MARKPARITY          3
  751. #define SPACEPARITY         4
  752.  
  753. #define ONESTOPBIT          0
  754. #define ONE5STOPBITS        1
  755. #define TWOSTOPBITS         2
  756.  
  757. #define IGNORE              0       // Ignore signal
  758. #define INFINITE            0xFFFFFFFF  // Infinite timeout
  759.  
  760. //
  761. // Baud rates at which the communication device operates
  762. //
  763.  
  764. #define CBR_110             110
  765. #define CBR_300             300
  766. #define CBR_600             600
  767. #define CBR_1200            1200
  768. #define CBR_2400            2400
  769. #define CBR_4800            4800
  770. #define CBR_9600            9600
  771. #define CBR_14400           14400
  772. #define CBR_19200           19200
  773. #define CBR_38400           38400
  774. #define CBR_56000           56000
  775. #define CBR_57600           57600
  776. #define CBR_115200          115200
  777. #define CBR_128000          128000
  778. #define CBR_256000          256000
  779.  
  780. //
  781. // Error Flags
  782. //
  783.  
  784. #define CE_RXOVER           0x0001  // Receive Queue overflow
  785. #define CE_OVERRUN          0x0002  // Receive Overrun Error
  786. #define CE_RXPARITY         0x0004  // Receive Parity Error
  787. #define CE_FRAME            0x0008  // Receive Framing error
  788. #define CE_BREAK            0x0010  // Break Detected
  789. #define CE_TXFULL           0x0100  // TX Queue is full
  790. #define CE_PTO              0x0200  // LPTx Timeout
  791. #define CE_IOE              0x0400  // LPTx I/O Error
  792. #define CE_DNS              0x0800  // LPTx Device not selected
  793. #define CE_OOP              0x1000  // LPTx Out-Of-Paper
  794. #define CE_MODE             0x8000  // Requested mode unsupported
  795.  
  796. #define IE_BADID            (-1)    // Invalid or unsupported id
  797. #define IE_OPEN             (-2)    // Device Already Open
  798. #define IE_NOPEN            (-3)    // Device Not Open
  799. #define IE_MEMORY           (-4)    // Unable to allocate queues
  800. #define IE_DEFAULT          (-5)    // Error in default parameters
  801. #define IE_HARDWARE         (-10)   // Hardware Not Present
  802. #define IE_BYTESIZE         (-11)   // Illegal Byte Size
  803. #define IE_BAUDRATE         (-12)   // Unsupported BaudRate
  804.  
  805. //
  806. // Events
  807. //
  808.  
  809. #define EV_RXCHAR           0x0001  // Any Character received
  810. #define EV_RXFLAG           0x0002  // Received certain character
  811. #define EV_TXEMPTY          0x0004  // Transmitt Queue Empty
  812. #define EV_CTS              0x0008  // CTS changed state
  813. #define EV_DSR              0x0010  // DSR changed state
  814. #define EV_RLSD             0x0020  // RLSD changed state
  815. #define EV_BREAK            0x0040  // BREAK received
  816. #define EV_ERR              0x0080  // Line status error occurred
  817. #define EV_RING             0x0100  // Ring signal detected
  818. #define EV_PERR             0x0200  // Printer error occured
  819. #define EV_RX80FULL         0x0400  // Receive buffer is 80 percent full
  820. #define EV_EVENT1           0x0800  // Provider specific event 1
  821. #define EV_EVENT2           0x1000  // Provider specific event 2
  822.  
  823. //
  824. // Escape Functions
  825. //
  826.  
  827. #define SETXOFF             1       // Simulate XOFF received
  828. #define SETXON              2       // Simulate XON received
  829. #define SETRTS              3       // Set RTS high
  830. #define CLRRTS              4       // Set RTS low
  831. #define SETDTR              5       // Set DTR high
  832. #define CLRDTR              6       // Set DTR low
  833. #define RESETDEV            7       // Reset device if possible
  834. #define SETBREAK            8       // Set the device break line.
  835. #define CLRBREAK            9       // Clear the device break line.
  836.  
  837. //
  838. // PURGE function flags.
  839. //
  840. #define PURGE_TXABORT       0x0001  // Kill the pending/current writes to the comm port.
  841. #define PURGE_RXABORT       0x0002  // Kill the pending/current reads to the comm port.
  842. #define PURGE_TXCLEAR       0x0004  // Kill the transmit queue if there.
  843. #define PURGE_RXCLEAR       0x0008  // Kill the typeahead buffer if there.
  844.  
  845. #define LPTx                0x80    // Set if ID is for LPT device
  846.  
  847. //
  848. // Modem Status Flags
  849. //
  850. #define MS_CTS_ON           ((DWORD)0x0010)
  851. #define MS_DSR_ON           ((DWORD)0x0020)
  852. #define MS_RING_ON          ((DWORD)0x0040)
  853. #define MS_RLSD_ON          ((DWORD)0x0080)
  854.  
  855. //
  856. // WaitSoundState() Constants
  857. //
  858.  
  859. #define S_QUEUEEMPTY        0
  860. #define S_THRESHOLD         1
  861. #define S_ALLTHRESHOLD      2
  862.  
  863. //
  864. // Accent Modes
  865. //
  866.  
  867. #define S_NORMAL      0
  868. #define S_LEGATO      1
  869. #define S_STACCATO    2
  870.  
  871. //
  872. // SetSoundNoise() Sources
  873. //
  874.  
  875. #define S_PERIOD512   0     // Freq = N/512 high pitch, less coarse hiss
  876. #define S_PERIOD1024  1     // Freq = N/1024
  877. #define S_PERIOD2048  2     // Freq = N/2048 low pitch, more coarse hiss
  878. #define S_PERIODVOICE 3     // Source is frequency from voice channel (3)
  879. #define S_WHITE512    4     // Freq = N/512 high pitch, less coarse hiss
  880. #define S_WHITE1024   5     // Freq = N/1024
  881. #define S_WHITE2048   6     // Freq = N/2048 low pitch, more coarse hiss
  882. #define S_WHITEVOICE  7     // Source is frequency from voice channel (3)
  883.  
  884. #define S_SERDVNA     (-1)  // Device not available
  885. #define S_SEROFM      (-2)  // Out of memory
  886. #define S_SERMACT     (-3)  // Music active
  887. #define S_SERQFUL     (-4)  // Queue full
  888. #define S_SERBDNT     (-5)  // Invalid note
  889. #define S_SERDLN      (-6)  // Invalid note length
  890. #define S_SERDCC      (-7)  // Invalid note count
  891. #define S_SERDTP      (-8)  // Invalid tempo
  892. #define S_SERDVL      (-9)  // Invalid volume
  893. #define S_SERDMD      (-10) // Invalid mode
  894. #define S_SERDSH      (-11) // Invalid shape
  895. #define S_SERDPT      (-12) // Invalid pitch
  896. #define S_SERDFQ      (-13) // Invalid frequency
  897. #define S_SERDDR      (-14) // Invalid duration
  898. #define S_SERDSR      (-15) // Invalid source
  899. #define S_SERDST      (-16) // Invalid state
  900.  
  901. #define NMPWAIT_WAIT_FOREVER            0xffffffff
  902. #define NMPWAIT_NOWAIT                  0x00000001
  903. #define NMPWAIT_USE_DEFAULT_WAIT        0x00000000
  904.  
  905. #define FS_CASE_IS_PRESERVED            FILE_CASE_PRESERVED_NAMES
  906. #define FS_CASE_SENSITIVE               FILE_CASE_SENSITIVE_SEARCH
  907. #define FS_UNICODE_STORED_ON_DISK       FILE_UNICODE_ON_DISK
  908. #define FS_PERSISTENT_ACLS              FILE_PERSISTENT_ACLS
  909. #define FS_VOL_IS_COMPRESSED            FILE_VOLUME_IS_COMPRESSED
  910. #define FS_FILE_COMPRESSION             FILE_FILE_COMPRESSION
  911.  
  912.  
  913.  
  914.  
  915.  
  916.  
  917. #define FILE_MAP_COPY       SECTION_QUERY
  918. #define FILE_MAP_WRITE      SECTION_MAP_WRITE
  919. #define FILE_MAP_READ       SECTION_MAP_READ
  920. #define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS
  921.  
  922. #define OF_READ             0x00000000
  923. #define OF_WRITE            0x00000001
  924. #define OF_READWRITE        0x00000002
  925. #define OF_SHARE_COMPAT     0x00000000
  926. #define OF_SHARE_EXCLUSIVE  0x00000010
  927. #define OF_SHARE_DENY_WRITE 0x00000020
  928. #define OF_SHARE_DENY_READ  0x00000030
  929. #define OF_SHARE_DENY_NONE  0x00000040
  930. #define OF_PARSE            0x00000100
  931. #define OF_DELETE           0x00000200
  932. #define OF_VERIFY           0x00000400
  933. #define OF_CANCEL           0x00000800
  934. #define OF_CREATE           0x00001000
  935. #define OF_PROMPT           0x00002000
  936. #define OF_EXIST            0x00004000
  937. #define OF_REOPEN           0x00008000
  938.  
  939. #define OFS_MAXPATHNAME 128
  940. typedef struct _OFSTRUCT {
  941.     BYTE cBytes;
  942.     BYTE fFixedDisk;
  943.     WORD nErrCode;
  944.     WORD Reserved1;
  945.     WORD Reserved2;
  946.     CHAR szPathName[OFS_MAXPATHNAME];
  947. } OFSTRUCT, *LPOFSTRUCT, *POFSTRUCT;
  948.  
  949. //
  950. // The MS-MIPS and Alpha compilers support intrinsic functions for interlocked
  951. // increment, decrement, and exchange.
  952. //
  953.  
  954. #if (defined(_M_MRX000) || defined(_M_ALPHA) || (defined(_M_PPC) && (_MSC_VER >= 1000))) && !defined(RC_INVOKED)
  955.  
  956. #define InterlockedIncrement _InterlockedIncrement
  957. #define InterlockedDecrement _InterlockedDecrement
  958. #define InterlockedExchange _InterlockedExchange
  959. #define InterlockedExchangeAdd _InterlockedExchangeAdd
  960. #define InterlockedCompareExchange _InterlockedCompareExchange
  961.  
  962. LONG
  963. WINAPI
  964. InterlockedIncrement(
  965.     LPLONG lpAddend
  966.     );
  967.  
  968. LONG
  969. WINAPI
  970. InterlockedDecrement(
  971.     LPLONG lpAddend
  972.     );
  973.  
  974. LONG
  975. WINAPI
  976. InterlockedExchange(
  977.     LPLONG Target,
  978.     LONG Value
  979.     );
  980.  
  981. PVOID
  982. WINAPI
  983. InterlockedCompareExchange (
  984.     PVOID *Destination,
  985.     PVOID Exchange,
  986.     PVOID Comperand
  987.     );
  988.  
  989. LONG
  990. WINAPI
  991. InterlockedExchangeAdd(
  992.     LPLONG Addend,
  993.     LONG Value
  994.     );
  995.  
  996. #pragma intrinsic(_InterlockedIncrement)
  997. #pragma intrinsic(_InterlockedDecrement)
  998. #pragma intrinsic(_InterlockedExchange)
  999. #pragma intrinsic(_InterlockedCompareExchange)
  1000. #pragma intrinsic(_InterlockedExchangeAdd)
  1001.  
  1002. #else
  1003.  
  1004. #ifndef _NTOS_
  1005.  
  1006. WINBASEAPI
  1007. LONG
  1008. WINAPI
  1009. InterlockedIncrement(
  1010.     LPLONG lpAddend
  1011.     );
  1012.  
  1013. WINBASEAPI
  1014. LONG
  1015. WINAPI
  1016. InterlockedDecrement(
  1017.     LPLONG lpAddend
  1018.     );
  1019.  
  1020. WINBASEAPI
  1021. LONG
  1022. WINAPI
  1023. InterlockedExchange(
  1024.     LPLONG Target,
  1025.     LONG Value
  1026.     );
  1027.  
  1028. WINBASEAPI
  1029. LONG
  1030. WINAPI
  1031. InterlockedExchangeAdd(
  1032.     LPLONG Addend,
  1033.     LONG Value
  1034.     );
  1035.  
  1036. WINBASEAPI
  1037. PVOID
  1038. WINAPI
  1039. InterlockedCompareExchange (
  1040.     PVOID *Destination,
  1041.     PVOID Exchange,
  1042.     PVOID Comperand
  1043.     );
  1044.  
  1045. #endif /* NT_INCLUDED */
  1046.  
  1047. #endif
  1048.  
  1049. WINBASEAPI
  1050. BOOL
  1051. WINAPI
  1052. FreeResource(
  1053.         HGLOBAL hResData
  1054.         );
  1055.  
  1056. WINBASEAPI
  1057. LPVOID
  1058. WINAPI
  1059. LockResource(
  1060.         HGLOBAL hResData
  1061.         );
  1062.  
  1063. #define UnlockResource(hResData) ((hResData), 0)
  1064. #define MAXINTATOM 0xC000
  1065. #define MAKEINTATOM(i)  (LPTSTR)((DWORD)((WORD)(i)))
  1066. #define INVALID_ATOM ((ATOM)0)
  1067.  
  1068. #ifndef _MAC
  1069. int
  1070. WINAPI
  1071. #else
  1072. int
  1073. CALLBACK
  1074. #endif
  1075. WinMain(
  1076.     HINSTANCE hInstance,
  1077.     HINSTANCE hPrevInstance,
  1078.     LPSTR lpCmdLine,
  1079.     int nShowCmd
  1080.     );
  1081.  
  1082. WINBASEAPI
  1083. BOOL
  1084. WINAPI
  1085. FreeLibrary(
  1086.     HMODULE hLibModule
  1087.     );
  1088.  
  1089.  
  1090. WINBASEAPI
  1091. VOID
  1092. WINAPI
  1093. FreeLibraryAndExitThread(
  1094.     HMODULE hLibModule,
  1095.     DWORD dwExitCode
  1096.     );
  1097.  
  1098. WINBASEAPI
  1099. BOOL
  1100. WINAPI
  1101. DisableThreadLibraryCalls(
  1102.     HMODULE hLibModule
  1103.     );
  1104.  
  1105. WINBASEAPI
  1106. FARPROC
  1107. WINAPI
  1108. GetProcAddress(
  1109.     HMODULE hModule,
  1110.     LPCSTR lpProcName
  1111.     );
  1112.  
  1113. WINBASEAPI
  1114. DWORD
  1115. WINAPI
  1116. GetVersion( VOID );
  1117.  
  1118. WINBASEAPI
  1119. HGLOBAL
  1120. WINAPI
  1121. GlobalAlloc(
  1122.     UINT uFlags,
  1123.     DWORD dwBytes
  1124.     );
  1125.  
  1126. WINBASEAPI
  1127. HGLOBAL
  1128. WINAPI
  1129. GlobalReAlloc(
  1130.     HGLOBAL hMem,
  1131.     DWORD dwBytes,
  1132.     UINT uFlags
  1133.     );
  1134.  
  1135. WINBASEAPI
  1136. DWORD
  1137. WINAPI
  1138. GlobalSize(
  1139.     HGLOBAL hMem
  1140.     );
  1141.  
  1142. WINBASEAPI
  1143. UINT
  1144. WINAPI
  1145. GlobalFlags(
  1146.     HGLOBAL hMem
  1147.     );
  1148.  
  1149.  
  1150. WINBASEAPI
  1151. LPVOID
  1152. WINAPI
  1153. GlobalLock(
  1154.     HGLOBAL hMem
  1155.     );
  1156.  
  1157. //!!!MWH My version  win31 = DWORD WINAPI GlobalHandle(UINT)
  1158. WINBASEAPI
  1159. HGLOBAL
  1160. WINAPI
  1161. GlobalHandle(
  1162.     LPCVOID pMem
  1163.     );
  1164.  
  1165.  
  1166. WINBASEAPI
  1167. BOOL
  1168. WINAPI
  1169. GlobalUnlock(
  1170.     HGLOBAL hMem
  1171.     );
  1172.  
  1173.  
  1174. WINBASEAPI
  1175. HGLOBAL
  1176. WINAPI
  1177. GlobalFree(
  1178.     HGLOBAL hMem
  1179.     );
  1180.  
  1181. WINBASEAPI
  1182. UINT
  1183. WINAPI
  1184. GlobalCompact(
  1185.     DWORD dwMinFree
  1186.     );
  1187.  
  1188. WINBASEAPI
  1189. VOID
  1190. WINAPI
  1191. GlobalFix(
  1192.     HGLOBAL hMem
  1193.     );
  1194.  
  1195. WINBASEAPI
  1196. VOID
  1197. WINAPI
  1198. GlobalUnfix(
  1199.     HGLOBAL hMem
  1200.     );
  1201.  
  1202. WINBASEAPI
  1203. LPVOID
  1204. WINAPI
  1205. GlobalWire(
  1206.     HGLOBAL hMem
  1207.     );
  1208.  
  1209. WINBASEAPI
  1210. BOOL
  1211. WINAPI
  1212. GlobalUnWire(
  1213.     HGLOBAL hMem
  1214.     );
  1215.  
  1216. WINBASEAPI
  1217. VOID
  1218. WINAPI
  1219. GlobalMemoryStatus(
  1220.     LPMEMORYSTATUS lpBuffer
  1221.     );
  1222.  
  1223. WINBASEAPI
  1224. HLOCAL
  1225. WINAPI
  1226. LocalAlloc(
  1227.     UINT uFlags,
  1228.     UINT uBytes
  1229.     );
  1230.  
  1231. WINBASEAPI
  1232. HLOCAL
  1233. WINAPI
  1234. LocalReAlloc(
  1235.     HLOCAL hMem,
  1236.     UINT uBytes,
  1237.     UINT uFlags
  1238.     );
  1239.  
  1240. WINBASEAPI
  1241. LPVOID
  1242. WINAPI
  1243. LocalLock(
  1244.     HLOCAL hMem
  1245.     );
  1246.  
  1247. WINBASEAPI
  1248. HLOCAL
  1249. WINAPI
  1250. LocalHandle(
  1251.     LPCVOID pMem
  1252.     );
  1253.  
  1254. WINBASEAPI
  1255. BOOL
  1256. WINAPI
  1257. LocalUnlock(
  1258.     HLOCAL hMem
  1259.     );
  1260.  
  1261. WINBASEAPI
  1262. UINT
  1263. WINAPI
  1264. LocalSize(
  1265.     HLOCAL hMem
  1266.     );
  1267.  
  1268. WINBASEAPI
  1269. UINT
  1270. WINAPI
  1271. LocalFlags(
  1272.     HLOCAL hMem
  1273.     );
  1274.  
  1275. WINBASEAPI
  1276. HLOCAL
  1277. WINAPI
  1278. LocalFree(
  1279.     HLOCAL hMem
  1280.     );
  1281.  
  1282. WINBASEAPI
  1283. UINT
  1284. WINAPI
  1285. LocalShrink(
  1286.     HLOCAL hMem,
  1287.     UINT cbNewSize
  1288.     );
  1289.  
  1290. WINBASEAPI
  1291. UINT
  1292. WINAPI
  1293. LocalCompact(
  1294.     UINT uMinFree
  1295.     );
  1296.  
  1297. WINBASEAPI
  1298. BOOL
  1299. WINAPI
  1300. FlushInstructionCache(
  1301.     HANDLE hProcess,
  1302.     LPCVOID lpBaseAddress,
  1303.     DWORD dwSize
  1304.     );
  1305.  
  1306. WINBASEAPI
  1307. LPVOID
  1308. WINAPI
  1309. VirtualAlloc(
  1310.     LPVOID lpAddress,
  1311.     DWORD dwSize,
  1312.     DWORD flAllocationType,
  1313.     DWORD flProtect
  1314.     );
  1315.  
  1316. WINBASEAPI
  1317. BOOL
  1318. WINAPI
  1319. VirtualFree(
  1320.     LPVOID lpAddress,
  1321.     DWORD dwSize,
  1322.     DWORD dwFreeType
  1323.     );
  1324.  
  1325. WINBASEAPI
  1326. BOOL
  1327. WINAPI
  1328. VirtualProtect(
  1329.     LPVOID lpAddress,
  1330.     DWORD dwSize,
  1331.     DWORD flNewProtect,
  1332.     PDWORD lpflOldProtect
  1333.     );
  1334.  
  1335. WINBASEAPI
  1336. DWORD
  1337. WINAPI
  1338. VirtualQuery(
  1339.     LPCVOID lpAddress,
  1340.     PMEMORY_BASIC_INFORMATION lpBuffer,
  1341.     DWORD dwLength
  1342.     );
  1343.  
  1344. WINBASEAPI
  1345. LPVOID
  1346. WINAPI
  1347. VirtualAllocEx(
  1348.     HANDLE hProcess,
  1349.     LPVOID lpAddress,
  1350.     DWORD dwSize,
  1351.     DWORD flAllocationType,
  1352.     DWORD flProtect
  1353.     );
  1354.  
  1355. WINBASEAPI
  1356. BOOL
  1357. WINAPI
  1358. VirtualFreeEx(
  1359.     HANDLE hProcess,
  1360.     LPVOID lpAddress,
  1361.     DWORD dwSize,
  1362.     DWORD dwFreeType
  1363.     );
  1364.  
  1365. WINBASEAPI
  1366. BOOL
  1367. WINAPI
  1368. VirtualProtectEx(
  1369.     HANDLE hProcess,
  1370.     LPVOID lpAddress,
  1371.     DWORD dwSize,
  1372.     DWORD flNewProtect,
  1373.     PDWORD lpflOldProtect
  1374.     );
  1375.  
  1376. WINBASEAPI
  1377. DWORD
  1378. WINAPI
  1379. VirtualQueryEx(
  1380.     HANDLE hProcess,
  1381.     LPCVOID lpAddress,
  1382.     PMEMORY_BASIC_INFORMATION lpBuffer,
  1383.     DWORD dwLength
  1384.     );
  1385.  
  1386. WINBASEAPI
  1387. HANDLE
  1388. WINAPI
  1389. HeapCreate(
  1390.     DWORD flOptions,
  1391.     DWORD dwInitialSize,
  1392.     DWORD dwMaximumSize
  1393.     );
  1394.  
  1395. WINBASEAPI
  1396. BOOL
  1397. WINAPI
  1398. HeapDestroy(
  1399.     HANDLE hHeap
  1400.     );
  1401.  
  1402.  
  1403. WINBASEAPI
  1404. LPVOID
  1405. WINAPI
  1406. HeapAlloc(
  1407.     HANDLE hHeap,
  1408.     DWORD dwFlags,
  1409.     DWORD dwBytes
  1410.     );
  1411.  
  1412. WINBASEAPI
  1413. LPVOID
  1414. WINAPI
  1415. HeapReAlloc(
  1416.     HANDLE hHeap,
  1417.     DWORD dwFlags,
  1418.     LPVOID lpMem,
  1419.     DWORD dwBytes
  1420.     );
  1421.  
  1422. WINBASEAPI
  1423. BOOL
  1424. WINAPI
  1425. HeapFree(
  1426.     HANDLE hHeap,
  1427.     DWORD dwFlags,
  1428.     LPVOID lpMem
  1429.     );
  1430.  
  1431. WINBASEAPI
  1432. DWORD
  1433. WINAPI
  1434. HeapSize(
  1435.     HANDLE hHeap,
  1436.     DWORD dwFlags,
  1437.     LPCVOID lpMem
  1438.     );
  1439.  
  1440. WINBASEAPI
  1441. BOOL
  1442. WINAPI
  1443. HeapValidate(
  1444.     HANDLE hHeap,
  1445.     DWORD dwFlags,
  1446.     LPCVOID lpMem
  1447.     );
  1448.  
  1449. WINBASEAPI
  1450. UINT
  1451. WINAPI
  1452. HeapCompact(
  1453.     HANDLE hHeap,
  1454.     DWORD dwFlags
  1455.     );
  1456.  
  1457. WINBASEAPI
  1458. HANDLE
  1459. WINAPI
  1460. GetProcessHeap( VOID );
  1461.  
  1462. WINBASEAPI
  1463. DWORD
  1464. WINAPI
  1465. GetProcessHeaps(
  1466.     DWORD NumberOfHeaps,
  1467.     PHANDLE ProcessHeaps
  1468.     );
  1469.  
  1470. typedef struct _PROCESS_HEAP_ENTRY {
  1471.     PVOID lpData;
  1472.     DWORD cbData;
  1473.     BYTE cbOverhead;
  1474.     BYTE iRegionIndex;
  1475.     WORD wFlags;
  1476.     union {
  1477.         struct {
  1478.             HANDLE hMem;
  1479.             DWORD dwReserved[ 3 ];
  1480.         } Block;
  1481.         struct {
  1482.             DWORD dwCommittedSize;
  1483.             DWORD dwUnCommittedSize;
  1484.             LPVOID lpFirstBlock;
  1485.             LPVOID lpLastBlock;
  1486.         } Region;
  1487.     };
  1488. } PROCESS_HEAP_ENTRY, *LPPROCESS_HEAP_ENTRY, *PPROCESS_HEAP_ENTRY;
  1489.  
  1490. #define PROCESS_HEAP_REGION             0x0001
  1491. #define PROCESS_HEAP_UNCOMMITTED_RANGE  0x0002
  1492. #define PROCESS_HEAP_ENTRY_BUSY         0x0004
  1493. #define PROCESS_HEAP_ENTRY_MOVEABLE     0x0010
  1494. #define PROCESS_HEAP_ENTRY_DDESHARE     0x0020
  1495.  
  1496. WINBASEAPI
  1497. BOOL
  1498. WINAPI
  1499. HeapLock(
  1500.     HANDLE hHeap
  1501.     );
  1502.  
  1503. WINBASEAPI
  1504. BOOL
  1505. WINAPI
  1506. HeapUnlock(
  1507.     HANDLE hHeap
  1508.     );
  1509.  
  1510.  
  1511. WINBASEAPI
  1512. BOOL
  1513. WINAPI
  1514. HeapWalk(
  1515.     HANDLE hHeap,
  1516.     LPPROCESS_HEAP_ENTRY lpEntry
  1517.     );
  1518.  
  1519. // GetBinaryType return values.
  1520.  
  1521. #define SCS_32BIT_BINARY    0
  1522. #define SCS_DOS_BINARY      1
  1523. #define SCS_WOW_BINARY      2
  1524. #define SCS_PIF_BINARY      3
  1525. #define SCS_POSIX_BINARY    4
  1526. #define SCS_OS216_BINARY    5
  1527.  
  1528. WINBASEAPI
  1529. BOOL
  1530. WINAPI
  1531. GetBinaryTypeA(
  1532.     LPCSTR lpApplicationName,
  1533.     LPDWORD lpBinaryType
  1534.     );
  1535. WINBASEAPI
  1536. BOOL
  1537. WINAPI
  1538. GetBinaryTypeW(
  1539.     LPCWSTR lpApplicationName,
  1540.     LPDWORD lpBinaryType
  1541.     );
  1542. #ifdef UNICODE
  1543. #define GetBinaryType  GetBinaryTypeW
  1544. #else
  1545. #define GetBinaryType  GetBinaryTypeA
  1546. #endif // !UNICODE
  1547.  
  1548. WINBASEAPI
  1549. DWORD
  1550. WINAPI
  1551. GetShortPathNameA(
  1552.     LPCSTR lpszLongPath,
  1553.     LPSTR  lpszShortPath,
  1554.     DWORD    cchBuffer
  1555.     );
  1556. WINBASEAPI
  1557. DWORD
  1558. WINAPI
  1559. GetShortPathNameW(
  1560.     LPCWSTR lpszLongPath,
  1561.     LPWSTR  lpszShortPath,
  1562.     DWORD    cchBuffer
  1563.     );
  1564. #ifdef UNICODE
  1565. #define GetShortPathName  GetShortPathNameW
  1566. #else
  1567. #define GetShortPathName  GetShortPathNameA
  1568. #endif // !UNICODE
  1569.  
  1570. WINBASEAPI
  1571. DWORD
  1572. WINAPI
  1573. GetLongPathNameA(
  1574.     LPCSTR lpszShortPath,
  1575.     LPSTR  lpszLongPath,
  1576.     DWORD    cchBuffer
  1577.     );
  1578. WINBASEAPI
  1579. DWORD
  1580. WINAPI
  1581. GetLongPathNameW(
  1582.     LPCWSTR lpszShortPath,
  1583.     LPWSTR  lpszLongPath,
  1584.     DWORD    cchBuffer
  1585.     );
  1586. #ifdef UNICODE
  1587. #define GetLongPathName  GetLongPathNameW
  1588. #else
  1589. #define GetLongPathName  GetLongPathNameA
  1590. #endif // !UNICODE
  1591.  
  1592. WINBASEAPI
  1593. BOOL
  1594. WINAPI
  1595. GetProcessAffinityMask(
  1596.     HANDLE hProcess,
  1597.     LPDWORD lpProcessAffinityMask,
  1598.     LPDWORD lpSystemAffinityMask
  1599.     );
  1600.  
  1601. WINBASEAPI
  1602. BOOL
  1603. WINAPI
  1604. SetProcessAffinityMask(
  1605.     HANDLE hProcess,
  1606.     DWORD dwProcessAffinityMask
  1607.     );
  1608.  
  1609.  
  1610. WINBASEAPI
  1611. BOOL
  1612. WINAPI
  1613. GetProcessTimes(
  1614.     HANDLE hProcess,
  1615.     LPFILETIME lpCreationTime,
  1616.     LPFILETIME lpExitTime,
  1617.     LPFILETIME lpKernelTime,
  1618.     LPFILETIME lpUserTime
  1619.     );
  1620.  
  1621. WINBASEAPI
  1622. BOOL
  1623. WINAPI
  1624. GetProcessWorkingSetSize(
  1625.     HANDLE hProcess,
  1626.     LPDWORD lpMinimumWorkingSetSize,
  1627.     LPDWORD lpMaximumWorkingSetSize
  1628.     );
  1629.  
  1630. WINBASEAPI
  1631. BOOL
  1632. WINAPI
  1633. SetProcessWorkingSetSize(
  1634.     HANDLE hProcess,
  1635.     DWORD dwMinimumWorkingSetSize,
  1636.     DWORD dwMaximumWorkingSetSize
  1637.     );
  1638.  
  1639. WINBASEAPI
  1640. HANDLE
  1641. WINAPI
  1642. OpenProcess(
  1643.     DWORD dwDesiredAccess,
  1644.     BOOL bInheritHandle,
  1645.     DWORD dwProcessId
  1646.     );
  1647.  
  1648. WINBASEAPI
  1649. HANDLE
  1650. WINAPI
  1651. GetCurrentProcess(
  1652.     VOID
  1653.     );
  1654.  
  1655. WINBASEAPI
  1656. DWORD
  1657. WINAPI
  1658. GetCurrentProcessId(
  1659.     VOID
  1660.     );
  1661.  
  1662. WINBASEAPI
  1663. VOID
  1664. WINAPI
  1665. ExitProcess(
  1666.     UINT uExitCode
  1667.     );
  1668.  
  1669. WINBASEAPI
  1670. BOOL
  1671. WINAPI
  1672. TerminateProcess(
  1673.     HANDLE hProcess,
  1674.     UINT uExitCode
  1675.     );
  1676.  
  1677. WINBASEAPI
  1678. BOOL
  1679. WINAPI
  1680. GetExitCodeProcess(
  1681.     HANDLE hProcess,
  1682.     LPDWORD lpExitCode
  1683.     );
  1684.  
  1685.  
  1686. WINBASEAPI
  1687. VOID
  1688. WINAPI
  1689. FatalExit(
  1690.     int ExitCode
  1691.     );
  1692.  
  1693. WINBASEAPI
  1694. LPSTR
  1695. WINAPI
  1696. GetEnvironmentStrings(
  1697.     VOID
  1698.     );
  1699.  
  1700. WINBASEAPI
  1701. LPWSTR
  1702. WINAPI
  1703. GetEnvironmentStringsW(
  1704.     VOID
  1705.     );
  1706.  
  1707. #ifdef UNICODE
  1708. #define GetEnvironmentStrings  GetEnvironmentStringsW
  1709. #else
  1710. #define GetEnvironmentStringsA  GetEnvironmentStrings
  1711. #endif // !UNICODE
  1712.  
  1713. WINBASEAPI
  1714. BOOL
  1715. WINAPI
  1716. FreeEnvironmentStringsA(
  1717.     LPSTR
  1718.     );
  1719. WINBASEAPI
  1720. BOOL
  1721. WINAPI
  1722. FreeEnvironmentStringsW(
  1723.     LPWSTR
  1724.     );
  1725. #ifdef UNICODE
  1726. #define FreeEnvironmentStrings  FreeEnvironmentStringsW
  1727. #else
  1728. #define FreeEnvironmentStrings  FreeEnvironmentStringsA
  1729. #endif // !UNICODE
  1730.  
  1731. WINBASEAPI
  1732. VOID
  1733. WINAPI
  1734. RaiseException(
  1735.     DWORD dwExceptionCode,
  1736.     DWORD dwExceptionFlags,
  1737.     DWORD nNumberOfArguments,
  1738.     CONST DWORD *lpArguments
  1739.     );
  1740.  
  1741. WINBASEAPI
  1742. LONG
  1743. WINAPI
  1744. UnhandledExceptionFilter(
  1745.     struct _EXCEPTION_POINTERS *ExceptionInfo
  1746.     );
  1747.  
  1748. typedef LONG (WINAPI *PTOP_LEVEL_EXCEPTION_FILTER)(
  1749.     struct _EXCEPTION_POINTERS *ExceptionInfo
  1750.     );
  1751. typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
  1752.  
  1753. WINBASEAPI
  1754. LPTOP_LEVEL_EXCEPTION_FILTER
  1755. WINAPI
  1756. SetUnhandledExceptionFilter(
  1757.     LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter
  1758.     );
  1759.  
  1760. #if(_WIN32_WINNT >= 0x0400)
  1761. WINBASEAPI
  1762. LPVOID
  1763. WINAPI
  1764. CreateFiber(
  1765.     DWORD dwStackSize,
  1766.     LPFIBER_START_ROUTINE lpStartAddress,
  1767.     LPVOID lpParameter
  1768.     );
  1769.  
  1770. WINBASEAPI
  1771. VOID
  1772. WINAPI
  1773. DeleteFiber(
  1774.     LPVOID lpFiber
  1775.     );
  1776.  
  1777. WINBASEAPI
  1778. LPVOID
  1779. WINAPI
  1780. ConvertThreadToFiber(
  1781.     LPVOID lpParameter
  1782.     );
  1783.  
  1784. WINBASEAPI
  1785. VOID
  1786. WINAPI
  1787. SwitchToFiber(
  1788.     LPVOID lpFiber
  1789.     );
  1790.  
  1791. WINBASEAPI
  1792. BOOL
  1793. WINAPI
  1794. SwitchToThread(
  1795.     VOID
  1796.     );
  1797. #endif /* _WIN32_WINNT >= 0x0400 */
  1798.  
  1799. WINBASEAPI
  1800. HANDLE
  1801. WINAPI
  1802. CreateThread(
  1803.     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  1804.     DWORD dwStackSize,
  1805.     LPTHREAD_START_ROUTINE lpStartAddress,
  1806.     LPVOID lpParameter,
  1807.     DWORD dwCreationFlags,
  1808.     LPDWORD lpThreadId
  1809.     );
  1810.  
  1811. WINBASEAPI
  1812. HANDLE
  1813. WINAPI
  1814. CreateRemoteThread(
  1815.     HANDLE hProcess,
  1816.     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  1817.     DWORD dwStackSize,
  1818.     LPTHREAD_START_ROUTINE lpStartAddress,
  1819.     LPVOID lpParameter,
  1820.     DWORD dwCreationFlags,
  1821.     LPDWORD lpThreadId
  1822.     );
  1823.  
  1824. WINBASEAPI
  1825. HANDLE
  1826. WINAPI
  1827. GetCurrentThread(
  1828.     VOID
  1829.     );
  1830.  
  1831. WINBASEAPI
  1832. DWORD
  1833. WINAPI
  1834. GetCurrentThreadId(
  1835.     VOID
  1836.     );
  1837.  
  1838. WINBASEAPI
  1839. DWORD
  1840. WINAPI
  1841. SetThreadAffinityMask(
  1842.     HANDLE hThread,
  1843.     DWORD dwThreadAffinityMask
  1844.     );
  1845.  
  1846. #if(_WIN32_WINNT >= 0x0400)
  1847. WINBASEAPI
  1848. DWORD
  1849. WINAPI
  1850. SetThreadIdealProcessor(
  1851.     HANDLE hThread,
  1852.     DWORD dwIdealProcessor
  1853.     );
  1854. #endif /* _WIN32_WINNT >= 0x0400 */
  1855.  
  1856. WINBASEAPI
  1857. BOOL
  1858. WINAPI
  1859. SetProcessPriorityBoost(
  1860.     HANDLE hProcess,
  1861.     BOOL bDisablePriorityBoost
  1862.     );
  1863.  
  1864. WINBASEAPI
  1865. BOOL
  1866. WINAPI
  1867. GetProcessPriorityBoost(
  1868.     HANDLE hProcess,
  1869.     PBOOL pDisablePriorityBoost
  1870.     );
  1871.  
  1872. WINBASEAPI
  1873. BOOL
  1874. WINAPI
  1875. RequestWakeupLatency(
  1876.     LATENCY_TIME latency
  1877.     );
  1878.  
  1879. WINBASEAPI
  1880. BOOL
  1881. WINAPI
  1882. SetThreadPriority(
  1883.     HANDLE hThread,
  1884.     int nPriority
  1885.     );
  1886.  
  1887. WINBASEAPI
  1888. BOOL
  1889. WINAPI
  1890. SetThreadPriorityBoost(
  1891.     HANDLE hThread,
  1892.     BOOL bDisablePriorityBoost
  1893.     );
  1894.  
  1895. WINBASEAPI
  1896. BOOL
  1897. WINAPI
  1898. GetThreadPriorityBoost(
  1899.     HANDLE hThread,
  1900.     PBOOL pDisablePriorityBoost
  1901.     );
  1902.  
  1903. WINBASEAPI
  1904. int
  1905. WINAPI
  1906. GetThreadPriority(
  1907.     HANDLE hThread
  1908.     );
  1909.  
  1910. WINBASEAPI
  1911. BOOL
  1912. WINAPI
  1913. GetThreadTimes(
  1914.     HANDLE hThread,
  1915.     LPFILETIME lpCreationTime,
  1916.     LPFILETIME lpExitTime,
  1917.     LPFILETIME lpKernelTime,
  1918.     LPFILETIME lpUserTime
  1919.     );
  1920.  
  1921. WINBASEAPI
  1922. VOID
  1923. WINAPI
  1924. ExitThread(
  1925.     DWORD dwExitCode
  1926.     );
  1927.  
  1928. WINBASEAPI
  1929. BOOL
  1930. WINAPI
  1931. TerminateThread(
  1932.     HANDLE hThread,
  1933.     DWORD dwExitCode
  1934.     );
  1935.  
  1936. WINBASEAPI
  1937. BOOL
  1938. WINAPI
  1939. GetExitCodeThread(
  1940.     HANDLE hThread,
  1941.     LPDWORD lpExitCode
  1942.     );
  1943.  
  1944. WINBASEAPI
  1945. BOOL
  1946. WINAPI
  1947. GetThreadSelectorEntry(
  1948.     HANDLE hThread,
  1949.     DWORD dwSelector,
  1950.     LPLDT_ENTRY lpSelectorEntry
  1951.     );
  1952.  
  1953. WINBASEAPI
  1954. EXECUTION_STATE
  1955. WINAPI
  1956. SetThreadExecutionState(
  1957.     EXECUTION_STATE esFlags
  1958.     );
  1959.  
  1960. WINBASEAPI
  1961. DWORD
  1962. WINAPI
  1963. GetLastError(
  1964.     VOID
  1965.     );
  1966.  
  1967. WINBASEAPI
  1968. VOID
  1969. WINAPI
  1970. SetLastError(
  1971.     DWORD dwErrCode
  1972.     );
  1973.  
  1974. #define HasOverlappedIoCompleted(lpOverlapped) ((lpOverlapped)->Internal != STATUS_PENDING)
  1975.  
  1976. WINBASEAPI
  1977. BOOL
  1978. WINAPI
  1979. GetOverlappedResult(
  1980.     HANDLE hFile,
  1981.     LPOVERLAPPED lpOverlapped,
  1982.     LPDWORD lpNumberOfBytesTransferred,
  1983.     BOOL bWait
  1984.     );
  1985.  
  1986. WINBASEAPI
  1987. HANDLE
  1988. WINAPI
  1989. CreateIoCompletionPort(
  1990.     HANDLE FileHandle,
  1991.     HANDLE ExistingCompletionPort,
  1992.     DWORD CompletionKey,
  1993.     DWORD NumberOfConcurrentThreads
  1994.     );
  1995.  
  1996. WINBASEAPI
  1997. BOOL
  1998. WINAPI
  1999. GetQueuedCompletionStatus(
  2000.     HANDLE CompletionPort,
  2001.     LPDWORD lpNumberOfBytesTransferred,
  2002.     LPDWORD lpCompletionKey,
  2003.     LPOVERLAPPED *lpOverlapped,
  2004.     DWORD dwMilliseconds
  2005.     );
  2006.  
  2007. WINBASEAPI
  2008. BOOL
  2009. WINAPI
  2010. PostQueuedCompletionStatus(
  2011.     HANDLE CompletionPort,
  2012.     DWORD dwNumberOfBytesTransferred,
  2013.     DWORD dwCompletionKey,
  2014.     LPOVERLAPPED lpOverlapped
  2015.     );
  2016.  
  2017. #define SEM_FAILCRITICALERRORS      0x0001
  2018. #define SEM_NOGPFAULTERRORBOX       0x0002
  2019. #define SEM_NOALIGNMENTFAULTEXCEPT  0x0004
  2020. #define SEM_NOOPENFILEERRORBOX      0x8000
  2021.  
  2022. WINBASEAPI
  2023. UINT
  2024. WINAPI
  2025. SetErrorMode(
  2026.     UINT uMode
  2027.     );
  2028.  
  2029. WINBASEAPI
  2030. BOOL
  2031. WINAPI
  2032. ReadProcessMemory(
  2033.     HANDLE hProcess,
  2034.     LPCVOID lpBaseAddress,
  2035.     LPVOID lpBuffer,
  2036.     DWORD nSize,
  2037.     LPDWORD lpNumberOfBytesRead
  2038.     );
  2039.  
  2040. WINBASEAPI
  2041. BOOL
  2042. WINAPI
  2043. WriteProcessMemory(
  2044.     HANDLE hProcess,
  2045.     LPVOID lpBaseAddress,
  2046.     LPVOID lpBuffer,
  2047.     DWORD nSize,
  2048.     LPDWORD lpNumberOfBytesWritten
  2049.     );
  2050.  
  2051. #if !defined(MIDL_PASS)
  2052. WINBASEAPI
  2053. BOOL
  2054. WINAPI
  2055. GetThreadContext(
  2056.     HANDLE hThread,
  2057.     LPCONTEXT lpContext
  2058.     );
  2059.  
  2060. WINBASEAPI
  2061. BOOL
  2062. WINAPI
  2063. SetThreadContext(
  2064.     HANDLE hThread,
  2065.     CONST CONTEXT *lpContext
  2066.     );
  2067. #endif
  2068.  
  2069. WINBASEAPI
  2070. DWORD
  2071. WINAPI
  2072. SuspendThread(
  2073.     HANDLE hThread
  2074.     );
  2075.  
  2076. WINBASEAPI
  2077. DWORD
  2078. WINAPI
  2079. ResumeThread(
  2080.     HANDLE hThread
  2081.     );
  2082.  
  2083.  
  2084. #if(_WIN32_WINNT >= 0x0400)
  2085. typedef
  2086. VOID
  2087. (APIENTRY *PAPCFUNC)(
  2088.     DWORD dwParam
  2089.     );
  2090.  
  2091. WINBASEAPI
  2092. DWORD
  2093. WINAPI
  2094. QueueUserAPC(
  2095.     PAPCFUNC pfnAPC,
  2096.     HANDLE hThread,
  2097.     DWORD dwData
  2098.     );
  2099.  
  2100. #endif /* _WIN32_WINNT >= 0x0400 */
  2101.  
  2102. #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
  2103. WINBASEAPI
  2104. BOOL
  2105. WINAPI
  2106. IsDebuggerPresent(
  2107.     VOID
  2108.     );
  2109. #endif
  2110.  
  2111. WINBASEAPI
  2112. VOID
  2113. WINAPI
  2114. DebugBreak(
  2115.     VOID
  2116.     );
  2117.  
  2118. WINBASEAPI
  2119. BOOL
  2120. WINAPI
  2121. WaitForDebugEvent(
  2122.     LPDEBUG_EVENT lpDebugEvent,
  2123.     DWORD dwMilliseconds
  2124.     );
  2125.  
  2126. WINBASEAPI
  2127. BOOL
  2128. WINAPI
  2129. ContinueDebugEvent(
  2130.     DWORD dwProcessId,
  2131.     DWORD dwThreadId,
  2132.     DWORD dwContinueStatus
  2133.     );
  2134.  
  2135. WINBASEAPI
  2136. BOOL
  2137. WINAPI
  2138. DebugActiveProcess(
  2139.     DWORD dwProcessId
  2140.     );
  2141.  
  2142. WINBASEAPI
  2143. VOID
  2144. WINAPI
  2145. InitializeCriticalSection(
  2146.     LPCRITICAL_SECTION lpCriticalSection
  2147.     );
  2148.  
  2149. WINBASEAPI
  2150. VOID
  2151. WINAPI
  2152. EnterCriticalSection(
  2153.     LPCRITICAL_SECTION lpCriticalSection
  2154.     );
  2155.  
  2156. WINBASEAPI
  2157. VOID
  2158. WINAPI
  2159. LeaveCriticalSection(
  2160.     LPCRITICAL_SECTION lpCriticalSection
  2161.     );
  2162.  
  2163. #if (_WIN32_WINNT >= 0x0500)
  2164. WINBASEAPI
  2165. BOOL
  2166. WINAPI
  2167. InitializeCriticalSectionAndSpinCount(
  2168.     LPCRITICAL_SECTION lpCriticalSection,
  2169.     DWORD dwSpinCount
  2170.     );
  2171.  
  2172. WINBASEAPI
  2173. DWORD
  2174. WINAPI
  2175. SetCriticalSectionSpinCount(
  2176.     LPCRITICAL_SECTION lpCriticalSection,
  2177.     DWORD dwSpinCount
  2178.     );
  2179. #endif
  2180.  
  2181. #if(_WIN32_WINNT >= 0x0400)
  2182. WINBASEAPI
  2183. BOOL
  2184. WINAPI
  2185. TryEnterCriticalSection(
  2186.     LPCRITICAL_SECTION lpCriticalSection
  2187.     );
  2188. #endif /* _WIN32_WINNT >= 0x0400 */
  2189.  
  2190. WINBASEAPI
  2191. VOID
  2192. WINAPI
  2193. DeleteCriticalSection(
  2194.     LPCRITICAL_SECTION lpCriticalSection
  2195.     );
  2196.  
  2197. WINBASEAPI
  2198. BOOL
  2199. WINAPI
  2200. SetEvent(
  2201.     HANDLE hEvent
  2202.     );
  2203.  
  2204. WINBASEAPI
  2205. BOOL
  2206. WINAPI
  2207. ResetEvent(
  2208.     HANDLE hEvent
  2209.     );
  2210.  
  2211. WINBASEAPI
  2212. BOOL
  2213. WINAPI
  2214. PulseEvent(
  2215.     HANDLE hEvent
  2216.     );
  2217.  
  2218. WINBASEAPI
  2219. BOOL
  2220. WINAPI
  2221. ReleaseSemaphore(
  2222.     HANDLE hSemaphore,
  2223.     LONG lReleaseCount,
  2224.     LPLONG lpPreviousCount
  2225.     );
  2226.  
  2227. WINBASEAPI
  2228. BOOL
  2229. WINAPI
  2230. ReleaseMutex(
  2231.     HANDLE hMutex
  2232.     );
  2233.  
  2234. WINBASEAPI
  2235. DWORD
  2236. WINAPI
  2237. WaitForSingleObject(
  2238.     HANDLE hHandle,
  2239.     DWORD dwMilliseconds
  2240.     );
  2241.  
  2242. WINBASEAPI
  2243. DWORD
  2244. WINAPI
  2245. WaitForMultipleObjects(
  2246.     DWORD nCount,
  2247.     CONST HANDLE *lpHandles,
  2248.     BOOL bWaitAll,
  2249.     DWORD dwMilliseconds
  2250.     );
  2251.  
  2252. WINBASEAPI
  2253. VOID
  2254. WINAPI
  2255. Sleep(
  2256.     DWORD dwMilliseconds
  2257.     );
  2258.  
  2259. WINBASEAPI
  2260. HGLOBAL
  2261. WINAPI
  2262. LoadResource(
  2263.     HMODULE hModule,
  2264.     HRSRC hResInfo
  2265.     );
  2266.  
  2267. WINBASEAPI
  2268. DWORD
  2269. WINAPI
  2270. SizeofResource(
  2271.     HMODULE hModule,
  2272.     HRSRC hResInfo
  2273.     );
  2274.  
  2275.  
  2276. WINBASEAPI
  2277. ATOM
  2278. WINAPI
  2279. GlobalDeleteAtom(
  2280.     ATOM nAtom
  2281.     );
  2282.  
  2283. WINBASEAPI
  2284. BOOL
  2285. WINAPI
  2286. InitAtomTable(
  2287.     DWORD nSize
  2288.     );
  2289.  
  2290. WINBASEAPI
  2291. ATOM
  2292. WINAPI
  2293. DeleteAtom(
  2294.     ATOM nAtom
  2295.     );
  2296.  
  2297. WINBASEAPI
  2298. UINT
  2299. WINAPI
  2300. SetHandleCount(
  2301.     UINT uNumber
  2302.     );
  2303.  
  2304. WINBASEAPI
  2305. DWORD
  2306. WINAPI
  2307. GetLogicalDrives(
  2308.     VOID
  2309.     );
  2310.  
  2311. WINBASEAPI
  2312. BOOL
  2313. WINAPI
  2314. LockFile(
  2315.     HANDLE hFile,
  2316.     DWORD dwFileOffsetLow,
  2317.     DWORD dwFileOffsetHigh,
  2318.     DWORD nNumberOfBytesToLockLow,
  2319.     DWORD nNumberOfBytesToLockHigh
  2320.     );
  2321.  
  2322. WINBASEAPI
  2323. BOOL
  2324. WINAPI
  2325. UnlockFile(
  2326.     HANDLE hFile,
  2327.     DWORD dwFileOffsetLow,
  2328.     DWORD dwFileOffsetHigh,
  2329.     DWORD nNumberOfBytesToUnlockLow,
  2330.     DWORD nNumberOfBytesToUnlockHigh
  2331.     );
  2332.  
  2333. WINBASEAPI
  2334. BOOL
  2335. WINAPI
  2336. LockFileEx(
  2337.     HANDLE hFile,
  2338.     DWORD dwFlags,
  2339.     DWORD dwReserved,
  2340.     DWORD nNumberOfBytesToLockLow,
  2341.     DWORD nNumberOfBytesToLockHigh,
  2342.     LPOVERLAPPED lpOverlapped
  2343.     );
  2344.  
  2345. #define LOCKFILE_FAIL_IMMEDIATELY   0x00000001
  2346. #define LOCKFILE_EXCLUSIVE_LOCK     0x00000002
  2347.  
  2348. WINBASEAPI
  2349. BOOL
  2350. WINAPI
  2351. UnlockFileEx(
  2352.     HANDLE hFile,
  2353.     DWORD dwReserved,
  2354.     DWORD nNumberOfBytesToUnlockLow,
  2355.     DWORD nNumberOfBytesToUnlockHigh,
  2356.     LPOVERLAPPED lpOverlapped
  2357.     );
  2358.  
  2359. typedef struct _BY_HANDLE_FILE_INFORMATION {
  2360.     DWORD dwFileAttributes;
  2361.     FILETIME ftCreationTime;
  2362.     FILETIME ftLastAccessTime;
  2363.     FILETIME ftLastWriteTime;
  2364.     DWORD dwVolumeSerialNumber;
  2365.     DWORD nFileSizeHigh;
  2366.     DWORD nFileSizeLow;
  2367.     DWORD nNumberOfLinks;
  2368.     DWORD nFileIndexHigh;
  2369.     DWORD nFileIndexLow;
  2370. } BY_HANDLE_FILE_INFORMATION, *PBY_HANDLE_FILE_INFORMATION, *LPBY_HANDLE_FILE_INFORMATION;
  2371.  
  2372. WINBASEAPI
  2373. BOOL
  2374. WINAPI
  2375. GetFileInformationByHandle(
  2376.     HANDLE hFile,
  2377.     LPBY_HANDLE_FILE_INFORMATION lpFileInformation
  2378.     );
  2379.  
  2380. WINBASEAPI
  2381. DWORD
  2382. WINAPI
  2383. GetFileType(
  2384.     HANDLE hFile
  2385.     );
  2386.  
  2387. WINBASEAPI
  2388. DWORD
  2389. WINAPI
  2390. GetFileSize(
  2391.     HANDLE hFile,
  2392.     LPDWORD lpFileSizeHigh
  2393.     );
  2394.  
  2395. WINBASEAPI
  2396. HANDLE
  2397. WINAPI
  2398. GetStdHandle(
  2399.     DWORD nStdHandle
  2400.     );
  2401.  
  2402. WINBASEAPI
  2403. BOOL
  2404. WINAPI
  2405. SetStdHandle(
  2406.     DWORD nStdHandle,
  2407.     HANDLE hHandle
  2408.     );
  2409.  
  2410. WINBASEAPI
  2411. BOOL
  2412. WINAPI
  2413. WriteFile(
  2414.     HANDLE hFile,
  2415.     LPCVOID lpBuffer,
  2416.     DWORD nNumberOfBytesToWrite,
  2417.     LPDWORD lpNumberOfBytesWritten,
  2418.     LPOVERLAPPED lpOverlapped
  2419.     );
  2420.  
  2421. WINBASEAPI
  2422. BOOL
  2423. WINAPI
  2424. ReadFile(
  2425.     HANDLE hFile,
  2426.     LPVOID lpBuffer,
  2427.     DWORD nNumberOfBytesToRead,
  2428.     LPDWORD lpNumberOfBytesRead,
  2429.     LPOVERLAPPED lpOverlapped
  2430.     );
  2431.  
  2432. WINBASEAPI
  2433. BOOL
  2434. WINAPI
  2435. FlushFileBuffers(
  2436.     HANDLE hFile
  2437.     );
  2438.  
  2439. WINBASEAPI
  2440. BOOL
  2441. WINAPI
  2442. DeviceIoControl(
  2443.     HANDLE hDevice,
  2444.     DWORD dwIoControlCode,
  2445.     LPVOID lpInBuffer,
  2446.     DWORD nInBufferSize,
  2447.     LPVOID lpOutBuffer,
  2448.     DWORD nOutBufferSize,
  2449.     LPDWORD lpBytesReturned,
  2450.     LPOVERLAPPED lpOverlapped
  2451.     );
  2452.  
  2453. WINBASEAPI
  2454. BOOL
  2455. WINAPI
  2456. GetDevicePowerState(
  2457.     HANDLE hFile
  2458.     );
  2459.  
  2460. WINBASEAPI
  2461. BOOL
  2462. WINAPI
  2463. SetEndOfFile(
  2464.     HANDLE hFile
  2465.     );
  2466.  
  2467. WINBASEAPI
  2468. DWORD
  2469. WINAPI
  2470. SetFilePointer(
  2471.     HANDLE hFile,
  2472.     LONG lDistanceToMove,
  2473.     PLONG lpDistanceToMoveHigh,
  2474.     DWORD dwMoveMethod
  2475.     );
  2476.  
  2477. WINBASEAPI
  2478. BOOL
  2479. WINAPI
  2480. FindClose(
  2481.     HANDLE hFindFile
  2482.     );
  2483.  
  2484. WINBASEAPI
  2485. BOOL
  2486. WINAPI
  2487. GetFileTime(
  2488.     HANDLE hFile,
  2489.     LPFILETIME lpCreationTime,
  2490.     LPFILETIME lpLastAccessTime,
  2491.     LPFILETIME lpLastWriteTime
  2492.     );
  2493.  
  2494. WINBASEAPI
  2495. BOOL
  2496. WINAPI
  2497. SetFileTime(
  2498.     HANDLE hFile,
  2499.     CONST FILETIME *lpCreationTime,
  2500.     CONST FILETIME *lpLastAccessTime,
  2501.     CONST FILETIME *lpLastWriteTime
  2502.     );
  2503.  
  2504. WINBASEAPI
  2505. BOOL
  2506. WINAPI
  2507. CloseHandle(
  2508.     HANDLE hObject
  2509.     );
  2510.  
  2511. WINBASEAPI
  2512. BOOL
  2513. WINAPI
  2514. DuplicateHandle(
  2515.     HANDLE hSourceProcessHandle,
  2516.     HANDLE hSourceHandle,
  2517.     HANDLE hTargetProcessHandle,
  2518.     LPHANDLE lpTargetHandle,
  2519.     DWORD dwDesiredAccess,
  2520.     BOOL bInheritHandle,
  2521.     DWORD dwOptions
  2522.     );
  2523.  
  2524. WINBASEAPI
  2525. BOOL
  2526. WINAPI
  2527. GetHandleInformation(
  2528.     HANDLE hObject,
  2529.     LPDWORD lpdwFlags
  2530.     );
  2531.  
  2532. WINBASEAPI
  2533. BOOL
  2534. WINAPI
  2535. SetHandleInformation(
  2536.     HANDLE hObject,
  2537.     DWORD dwMask,
  2538.     DWORD dwFlags
  2539.     );
  2540.  
  2541. #define HANDLE_FLAG_INHERIT             0x00000001
  2542. #define HANDLE_FLAG_PROTECT_FROM_CLOSE  0x00000002
  2543.  
  2544. #define HINSTANCE_ERROR 32
  2545.  
  2546. WINBASEAPI
  2547. DWORD
  2548. WINAPI
  2549. LoadModule(
  2550.     LPCSTR lpModuleName,
  2551.     LPVOID lpParameterBlock
  2552.     );
  2553.  
  2554. WINBASEAPI
  2555. UINT
  2556. WINAPI
  2557. WinExec(
  2558.     LPCSTR lpCmdLine,
  2559.     UINT uCmdShow
  2560.     );
  2561.  
  2562. WINBASEAPI
  2563. BOOL
  2564. WINAPI
  2565. ClearCommBreak(
  2566.     HANDLE hFile
  2567.     );
  2568.  
  2569. WINBASEAPI
  2570. BOOL
  2571. WINAPI
  2572. ClearCommError(
  2573.     HANDLE hFile,
  2574.     LPDWORD lpErrors,
  2575.     LPCOMSTAT lpStat
  2576.     );
  2577.  
  2578. WINBASEAPI
  2579. BOOL
  2580. WINAPI
  2581. SetupComm(
  2582.     HANDLE hFile,
  2583.     DWORD dwInQueue,
  2584.     DWORD dwOutQueue
  2585.     );
  2586.  
  2587. WINBASEAPI
  2588. BOOL
  2589. WINAPI
  2590. EscapeCommFunction(
  2591.     HANDLE hFile,
  2592.     DWORD dwFunc
  2593.     );
  2594.  
  2595. WINBASEAPI
  2596. BOOL
  2597. WINAPI
  2598. GetCommConfig(
  2599.     HANDLE hCommDev,
  2600.     LPCOMMCONFIG lpCC,
  2601.     LPDWORD lpdwSize
  2602.     );
  2603.  
  2604. WINBASEAPI
  2605. BOOL
  2606. WINAPI
  2607. GetCommMask(
  2608.     HANDLE hFile,
  2609.     LPDWORD lpEvtMask
  2610.     );
  2611.  
  2612. WINBASEAPI
  2613. BOOL
  2614. WINAPI
  2615. GetCommProperties(
  2616.     HANDLE hFile,
  2617.     LPCOMMPROP lpCommProp
  2618.     );
  2619.  
  2620. WINBASEAPI
  2621. BOOL
  2622. WINAPI
  2623. GetCommModemStatus(
  2624.     HANDLE hFile,
  2625.     LPDWORD lpModemStat
  2626.     );
  2627.  
  2628. WINBASEAPI
  2629. BOOL
  2630. WINAPI
  2631. GetCommState(
  2632.     HANDLE hFile,
  2633.     LPDCB lpDCB
  2634.     );
  2635.  
  2636. WINBASEAPI
  2637. BOOL
  2638. WINAPI
  2639. GetCommTimeouts(
  2640.     HANDLE hFile,
  2641.     LPCOMMTIMEOUTS lpCommTimeouts
  2642.     );
  2643.  
  2644. WINBASEAPI
  2645. BOOL
  2646. WINAPI
  2647. PurgeComm(
  2648.     HANDLE hFile,
  2649.     DWORD dwFlags
  2650.     );
  2651.  
  2652. WINBASEAPI
  2653. BOOL
  2654. WINAPI
  2655. SetCommBreak(
  2656.     HANDLE hFile
  2657.     );
  2658.  
  2659. WINBASEAPI
  2660. BOOL
  2661. WINAPI
  2662. SetCommConfig(
  2663.     HANDLE hCommDev,
  2664.     LPCOMMCONFIG lpCC,
  2665.     DWORD dwSize
  2666.     );
  2667.  
  2668. WINBASEAPI
  2669. BOOL
  2670. WINAPI
  2671. SetCommMask(
  2672.     HANDLE hFile,
  2673.     DWORD dwEvtMask
  2674.     );
  2675.  
  2676. WINBASEAPI
  2677. BOOL
  2678. WINAPI
  2679. SetCommState(
  2680.     HANDLE hFile,
  2681.     LPDCB lpDCB
  2682.     );
  2683.  
  2684. WINBASEAPI
  2685. BOOL
  2686. WINAPI
  2687. SetCommTimeouts(
  2688.     HANDLE hFile,
  2689.     LPCOMMTIMEOUTS lpCommTimeouts
  2690.     );
  2691.  
  2692. WINBASEAPI
  2693. BOOL
  2694. WINAPI
  2695. TransmitCommChar(
  2696.     HANDLE hFile,
  2697.     char cChar
  2698.     );
  2699.  
  2700. WINBASEAPI
  2701. BOOL
  2702. WINAPI
  2703. WaitCommEvent(
  2704.     HANDLE hFile,
  2705.     LPDWORD lpEvtMask,
  2706.     LPOVERLAPPED lpOverlapped
  2707.     );
  2708.  
  2709.  
  2710. WINBASEAPI
  2711. DWORD
  2712. WINAPI
  2713. SetTapePosition(
  2714.     HANDLE hDevice,
  2715.     DWORD dwPositionMethod,
  2716.     DWORD dwPartition,
  2717.     DWORD dwOffsetLow,
  2718.     DWORD dwOffsetHigh,
  2719.     BOOL bImmediate
  2720.     );
  2721.  
  2722. WINBASEAPI
  2723. DWORD
  2724. WINAPI
  2725. GetTapePosition(
  2726.     HANDLE hDevice,
  2727.     DWORD dwPositionType,
  2728.     LPDWORD lpdwPartition,
  2729.     LPDWORD lpdwOffsetLow,
  2730.     LPDWORD lpdwOffsetHigh
  2731.     );
  2732.  
  2733. WINBASEAPI
  2734. DWORD
  2735. WINAPI
  2736. PrepareTape(
  2737.     HANDLE hDevice,
  2738.     DWORD dwOperation,
  2739.     BOOL bImmediate
  2740.     );
  2741.  
  2742. WINBASEAPI
  2743. DWORD
  2744. WINAPI
  2745. EraseTape(
  2746.     HANDLE hDevice,
  2747.     DWORD dwEraseType,
  2748.     BOOL bImmediate
  2749.     );
  2750.  
  2751. WINBASEAPI
  2752. DWORD
  2753. WINAPI
  2754. CreateTapePartition(
  2755.     HANDLE hDevice,
  2756.     DWORD dwPartitionMethod,
  2757.     DWORD dwCount,
  2758.     DWORD dwSize
  2759.     );
  2760.  
  2761. WINBASEAPI
  2762. DWORD
  2763. WINAPI
  2764. WriteTapemark(
  2765.     HANDLE hDevice,
  2766.     DWORD dwTapemarkType,
  2767.     DWORD dwTapemarkCount,
  2768.     BOOL bImmediate
  2769.     );
  2770.  
  2771. WINBASEAPI
  2772. DWORD
  2773. WINAPI
  2774. GetTapeStatus(
  2775.     HANDLE hDevice
  2776.     );
  2777.  
  2778. WINBASEAPI
  2779. DWORD
  2780. WINAPI
  2781. GetTapeParameters(
  2782.     HANDLE hDevice,
  2783.     DWORD dwOperation,
  2784.     LPDWORD lpdwSize,
  2785.     LPVOID lpTapeInformation
  2786.     );
  2787.  
  2788. #define GET_TAPE_MEDIA_INFORMATION 0
  2789. #define GET_TAPE_DRIVE_INFORMATION 1
  2790.  
  2791. WINBASEAPI
  2792. DWORD
  2793. WINAPI
  2794. SetTapeParameters(
  2795.     HANDLE hDevice,
  2796.     DWORD dwOperation,
  2797.     LPVOID lpTapeInformation
  2798.     );
  2799.  
  2800. #define SET_TAPE_MEDIA_INFORMATION 0
  2801. #define SET_TAPE_DRIVE_INFORMATION 1
  2802.  
  2803. WINBASEAPI
  2804. BOOL
  2805. WINAPI
  2806. Beep(
  2807.     DWORD dwFreq,
  2808.     DWORD dwDuration
  2809.     );
  2810.  
  2811. WINBASEAPI
  2812. int
  2813. WINAPI
  2814. MulDiv(
  2815.     int nNumber,
  2816.     int nNumerator,
  2817.     int nDenominator
  2818.     );
  2819.  
  2820. WINBASEAPI
  2821. VOID
  2822. WINAPI
  2823. GetSystemTime(
  2824.     LPSYSTEMTIME lpSystemTime
  2825.     );
  2826.  
  2827. WINBASEAPI
  2828. VOID
  2829. WINAPI
  2830. GetSystemTimeAsFileTime(
  2831.     LPFILETIME lpSystemTimeAsFileTime
  2832.     );
  2833.  
  2834. WINBASEAPI
  2835. BOOL
  2836. WINAPI
  2837. SetSystemTime(
  2838.     CONST SYSTEMTIME *lpSystemTime
  2839.     );
  2840.  
  2841. WINBASEAPI
  2842. VOID
  2843. WINAPI
  2844. GetLocalTime(
  2845.     LPSYSTEMTIME lpSystemTime
  2846.     );
  2847.  
  2848. WINBASEAPI
  2849. BOOL
  2850. WINAPI
  2851. SetLocalTime(
  2852.     CONST SYSTEMTIME *lpSystemTime
  2853.     );
  2854.  
  2855. WINBASEAPI
  2856. VOID
  2857. WINAPI
  2858. GetSystemInfo(
  2859.     LPSYSTEM_INFO lpSystemInfo
  2860.     );
  2861.  
  2862. WINBASEAPI
  2863. BOOL
  2864. WINAPI
  2865. IsProcessorFeaturePresent(
  2866.     DWORD ProcessorFeature
  2867.     );
  2868.  
  2869. typedef struct _TIME_ZONE_INFORMATION {
  2870.     LONG Bias;
  2871.     WCHAR StandardName[ 32 ];
  2872.     SYSTEMTIME StandardDate;
  2873.     LONG StandardBias;
  2874.     WCHAR DaylightName[ 32 ];
  2875.     SYSTEMTIME DaylightDate;
  2876.     LONG DaylightBias;
  2877. } TIME_ZONE_INFORMATION, *PTIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;
  2878.  
  2879. WINBASEAPI
  2880. BOOL
  2881. WINAPI
  2882. SystemTimeToTzSpecificLocalTime(
  2883.     LPTIME_ZONE_INFORMATION lpTimeZoneInformation,
  2884.     LPSYSTEMTIME lpUniversalTime,
  2885.     LPSYSTEMTIME lpLocalTime
  2886.     );
  2887.  
  2888. WINBASEAPI
  2889. DWORD
  2890. WINAPI
  2891. GetTimeZoneInformation(
  2892.     LPTIME_ZONE_INFORMATION lpTimeZoneInformation
  2893.     );
  2894.  
  2895. WINBASEAPI
  2896. BOOL
  2897. WINAPI
  2898. SetTimeZoneInformation(
  2899.     CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation
  2900.     );
  2901.  
  2902.  
  2903. //
  2904. // Routines to convert back and forth between system time and file time
  2905. //
  2906.  
  2907. WINBASEAPI
  2908. BOOL
  2909. WINAPI
  2910. SystemTimeToFileTime(
  2911.     CONST SYSTEMTIME *lpSystemTime,
  2912.     LPFILETIME lpFileTime
  2913.     );
  2914.  
  2915. WINBASEAPI
  2916. BOOL
  2917. WINAPI
  2918. FileTimeToLocalFileTime(
  2919.     CONST FILETIME *lpFileTime,
  2920.     LPFILETIME lpLocalFileTime
  2921.     );
  2922.  
  2923. WINBASEAPI
  2924. BOOL
  2925. WINAPI
  2926. LocalFileTimeToFileTime(
  2927.     CONST FILETIME *lpLocalFileTime,
  2928.     LPFILETIME lpFileTime
  2929.     );
  2930.  
  2931. WINBASEAPI
  2932. BOOL
  2933. WINAPI
  2934. FileTimeToSystemTime(
  2935.     CONST FILETIME *lpFileTime,
  2936.     LPSYSTEMTIME lpSystemTime
  2937.     );
  2938.  
  2939. WINBASEAPI
  2940. LONG
  2941. WINAPI
  2942. CompareFileTime(
  2943.     CONST FILETIME *lpFileTime1,
  2944.     CONST FILETIME *lpFileTime2
  2945.     );
  2946.  
  2947. WINBASEAPI
  2948. BOOL
  2949. WINAPI
  2950. FileTimeToDosDateTime(
  2951.     CONST FILETIME *lpFileTime,
  2952.     LPWORD lpFatDate,
  2953.     LPWORD lpFatTime
  2954.     );
  2955.  
  2956. WINBASEAPI
  2957. BOOL
  2958. WINAPI
  2959. DosDateTimeToFileTime(
  2960.     WORD wFatDate,
  2961.     WORD wFatTime,
  2962.     LPFILETIME lpFileTime
  2963.     );
  2964.  
  2965. WINBASEAPI
  2966. DWORD
  2967. WINAPI
  2968. GetTickCount(
  2969.     VOID
  2970.     );
  2971.  
  2972. WINBASEAPI
  2973. BOOL
  2974. WINAPI
  2975. SetSystemTimeAdjustment(
  2976.     DWORD dwTimeAdjustment,
  2977.     BOOL  bTimeAdjustmentDisabled
  2978.     );
  2979.  
  2980. WINBASEAPI
  2981. BOOL
  2982. WINAPI
  2983. GetSystemTimeAdjustment(
  2984.     PDWORD lpTimeAdjustment,
  2985.     PDWORD lpTimeIncrement,
  2986.     PBOOL  lpTimeAdjustmentDisabled
  2987.     );
  2988.  
  2989. #if !defined(MIDL_PASS)
  2990. WINBASEAPI
  2991. DWORD
  2992. WINAPI
  2993. FormatMessageA(
  2994.     DWORD dwFlags,
  2995.     LPCVOID lpSource,
  2996.     DWORD dwMessageId,
  2997.     DWORD dwLanguageId,
  2998.     LPSTR lpBuffer,
  2999.     DWORD nSize,
  3000.     va_list *Arguments
  3001.     );
  3002. WINBASEAPI
  3003. DWORD
  3004. WINAPI
  3005. FormatMessageW(
  3006.     DWORD dwFlags,
  3007.     LPCVOID lpSource,
  3008.     DWORD dwMessageId,
  3009.     DWORD dwLanguageId,
  3010.     LPWSTR lpBuffer,
  3011.     DWORD nSize,
  3012.     va_list *Arguments
  3013.     );
  3014. #ifdef UNICODE
  3015. #define FormatMessage  FormatMessageW
  3016. #else
  3017. #define FormatMessage  FormatMessageA
  3018. #endif // !UNICODE
  3019. #endif
  3020.  
  3021. #define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x00000100
  3022. #define FORMAT_MESSAGE_IGNORE_INSERTS  0x00000200
  3023. #define FORMAT_MESSAGE_FROM_STRING     0x00000400
  3024. #define FORMAT_MESSAGE_FROM_HMODULE    0x00000800
  3025. #define FORMAT_MESSAGE_FROM_SYSTEM     0x00001000
  3026. #define FORMAT_MESSAGE_ARGUMENT_ARRAY  0x00002000
  3027. #define FORMAT_MESSAGE_MAX_WIDTH_MASK  0x000000FF
  3028.  
  3029.  
  3030. WINBASEAPI
  3031. BOOL
  3032. WINAPI
  3033. CreatePipe(
  3034.     PHANDLE hReadPipe,
  3035.     PHANDLE hWritePipe,
  3036.     LPSECURITY_ATTRIBUTES lpPipeAttributes,
  3037.     DWORD nSize
  3038.     );
  3039.  
  3040. WINBASEAPI
  3041. BOOL
  3042. WINAPI
  3043. ConnectNamedPipe(
  3044.     HANDLE hNamedPipe,
  3045.     LPOVERLAPPED lpOverlapped
  3046.     );
  3047.  
  3048. WINBASEAPI
  3049. BOOL
  3050. WINAPI
  3051. DisconnectNamedPipe(
  3052.     HANDLE hNamedPipe
  3053.     );
  3054.  
  3055. WINBASEAPI
  3056. BOOL
  3057. WINAPI
  3058. SetNamedPipeHandleState(
  3059.     HANDLE hNamedPipe,
  3060.     LPDWORD lpMode,
  3061.     LPDWORD lpMaxCollectionCount,
  3062.     LPDWORD lpCollectDataTimeout
  3063.     );
  3064.  
  3065. WINBASEAPI
  3066. BOOL
  3067. WINAPI
  3068. GetNamedPipeInfo(
  3069.     HANDLE hNamedPipe,
  3070.     LPDWORD lpFlags,
  3071.     LPDWORD lpOutBufferSize,
  3072.     LPDWORD lpInBufferSize,
  3073.     LPDWORD lpMaxInstances
  3074.     );
  3075.  
  3076. WINBASEAPI
  3077. BOOL
  3078. WINAPI
  3079. PeekNamedPipe(
  3080.     HANDLE hNamedPipe,
  3081.     LPVOID lpBuffer,
  3082.     DWORD nBufferSize,
  3083.     LPDWORD lpBytesRead,
  3084.     LPDWORD lpTotalBytesAvail,
  3085.     LPDWORD lpBytesLeftThisMessage
  3086.     );
  3087.  
  3088. WINBASEAPI
  3089. BOOL
  3090. WINAPI
  3091. TransactNamedPipe(
  3092.     HANDLE hNamedPipe,
  3093.     LPVOID lpInBuffer,
  3094.     DWORD nInBufferSize,
  3095.     LPVOID lpOutBuffer,
  3096.     DWORD nOutBufferSize,
  3097.     LPDWORD lpBytesRead,
  3098.     LPOVERLAPPED lpOverlapped
  3099.     );
  3100.  
  3101. WINBASEAPI
  3102. HANDLE
  3103. WINAPI
  3104. CreateMailslotA(
  3105.     LPCSTR lpName,
  3106.     DWORD nMaxMessageSize,
  3107.     DWORD lReadTimeout,
  3108.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  3109.     );
  3110. WINBASEAPI
  3111. HANDLE
  3112. WINAPI
  3113. CreateMailslotW(
  3114.     LPCWSTR lpName,
  3115.     DWORD nMaxMessageSize,
  3116.     DWORD lReadTimeout,
  3117.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  3118.     );
  3119. #ifdef UNICODE
  3120. #define CreateMailslot  CreateMailslotW
  3121. #else
  3122. #define CreateMailslot  CreateMailslotA
  3123. #endif // !UNICODE
  3124.  
  3125. WINBASEAPI
  3126. BOOL
  3127. WINAPI
  3128. GetMailslotInfo(
  3129.     HANDLE hMailslot,
  3130.     LPDWORD lpMaxMessageSize,
  3131.     LPDWORD lpNextSize,
  3132.     LPDWORD lpMessageCount,
  3133.     LPDWORD lpReadTimeout
  3134.     );
  3135.  
  3136. WINBASEAPI
  3137. BOOL
  3138. WINAPI
  3139. SetMailslotInfo(
  3140.     HANDLE hMailslot,
  3141.     DWORD lReadTimeout
  3142.     );
  3143.  
  3144. WINBASEAPI
  3145. LPVOID
  3146. WINAPI
  3147. MapViewOfFile(
  3148.     HANDLE hFileMappingObject,
  3149.     DWORD dwDesiredAccess,
  3150.     DWORD dwFileOffsetHigh,
  3151.     DWORD dwFileOffsetLow,
  3152.     DWORD dwNumberOfBytesToMap
  3153.     );
  3154.  
  3155.  
  3156. WINBASEAPI
  3157. PVOID64
  3158. WINAPI
  3159. MapViewOfFileVlm(
  3160.     HANDLE hFileMappingObject,
  3161.     DWORD dwDesiredAccess,
  3162.     DWORDLONG ulOffset,
  3163.     DWORDLONG ulNumberOfBytesToMap,
  3164.     PVOID64 lpBaseAddress
  3165.     );
  3166.  
  3167. WINBASEAPI
  3168. BOOL
  3169. WINAPI
  3170. FlushViewOfFile(
  3171.     LPCVOID lpBaseAddress,
  3172.     DWORD dwNumberOfBytesToFlush
  3173.     );
  3174.  
  3175. WINBASEAPI
  3176. BOOL
  3177. WINAPI
  3178. UnmapViewOfFile(
  3179.     LPCVOID lpBaseAddress
  3180.     );
  3181.  
  3182. WINBASEAPI
  3183. BOOL
  3184. WINAPI
  3185. UnmapViewOfFileVlm(
  3186.     PVOID64 lpBaseAddress
  3187.     );
  3188.  
  3189. //
  3190. // File Encryption API
  3191. //
  3192.  
  3193. WINADVAPI
  3194. BOOL
  3195. WINAPI
  3196. EncryptFileA(
  3197.     LPCSTR lpFileName
  3198.     );
  3199. WINADVAPI
  3200. BOOL
  3201. WINAPI
  3202. EncryptFileW(
  3203.     LPCWSTR lpFileName
  3204.     );
  3205. #ifdef UNICODE
  3206. #define EncryptFile  EncryptFileW
  3207. #else
  3208. #define EncryptFile  EncryptFileA
  3209. #endif // !UNICODE
  3210.  
  3211. WINADVAPI
  3212. BOOL
  3213. WINAPI
  3214. DecryptFileA(
  3215.     LPCSTR lpFileName,
  3216.     DWORD    dwReserved
  3217.     );
  3218. WINADVAPI
  3219. BOOL
  3220. WINAPI
  3221. DecryptFileW(
  3222.     LPCWSTR lpFileName,
  3223.     DWORD    dwReserved
  3224.     );
  3225. #ifdef UNICODE
  3226. #define DecryptFile  DecryptFileW
  3227. #else
  3228. #define DecryptFile  DecryptFileA
  3229. #endif // !UNICODE
  3230.  
  3231. //
  3232. // Currently defined recovery flags
  3233. //
  3234.  
  3235. #define EFS_USE_RECOVERY_KEYS  (0x1)
  3236.  
  3237. typedef
  3238. DWORD
  3239. (*PFE_EXPORT_FUNC)(
  3240.     PBYTE pbData,
  3241.     PVOID pvCallbackContext,
  3242.     ULONG ulLength
  3243.     );
  3244.  
  3245. typedef
  3246. DWORD
  3247. (*PFE_IMPORT_FUNC)(
  3248.     PBYTE pbData,
  3249.     PVOID pvCallbackContext,
  3250.     PULONG ulLength
  3251.     );
  3252.  
  3253.  
  3254. //
  3255. //  OpenRaw flag values
  3256. //
  3257.  
  3258. #define CREATE_FOR_IMPORT  (1)
  3259. #define CREATE_FOR_DIR     (2)
  3260.  
  3261.  
  3262. WINADVAPI
  3263. DWORD
  3264. WINAPI
  3265. OpenRawA(
  3266.     LPCSTR        lpFileName,
  3267.     ULONG           ulFlags,
  3268.     PVOID *         pvContext
  3269.     );
  3270. WINADVAPI
  3271. DWORD
  3272. WINAPI
  3273. OpenRawW(
  3274.     LPCWSTR        lpFileName,
  3275.     ULONG           ulFlags,
  3276.     PVOID *         pvContext
  3277.     );
  3278. #ifdef UNICODE
  3279. #define OpenRaw  OpenRawW
  3280. #else
  3281. #define OpenRaw  OpenRawA
  3282. #endif // !UNICODE
  3283.  
  3284. WINADVAPI
  3285. DWORD
  3286. WINAPI
  3287. ReadRaw(
  3288.     PFE_EXPORT_FUNC pfExportCallback,
  3289.     PVOID           pvCallbackContext,
  3290.     PVOID           pvContext
  3291.     );
  3292.  
  3293. WINADVAPI
  3294. DWORD
  3295. WINAPI
  3296. WriteRaw(
  3297.     PFE_IMPORT_FUNC pfImportCallback,
  3298.     PVOID           pvCallbackContext,
  3299.     PVOID           pvContext
  3300.     );
  3301.  
  3302. WINADVAPI
  3303. VOID
  3304. WINAPI
  3305. CloseRaw(
  3306.     PVOID           pvContext
  3307.     );
  3308.  
  3309. typedef struct _RECOVERY_AGENT_INFORMATIONA {
  3310.     DWORD NextEntryOffset;
  3311.     DWORD AgentNameLength;
  3312.     CHAR   AgentInformation[1];
  3313. } RECOVERY_AGENT_INFORMATIONA, *LPRECOVERY_AGENT_INFORMATIONA;
  3314. typedef struct _RECOVERY_AGENT_INFORMATIONW {
  3315.     DWORD NextEntryOffset;
  3316.     DWORD AgentNameLength;
  3317.     WCHAR  AgentInformation[1];
  3318. } RECOVERY_AGENT_INFORMATIONW, *LPRECOVERY_AGENT_INFORMATIONW;
  3319. #ifdef UNICODE
  3320. typedef RECOVERY_AGENT_INFORMATIONW RECOVERY_AGENT_INFORMATION;
  3321. typedef LPRECOVERY_AGENT_INFORMATIONW LPRECOVERY_AGENT_INFORMATION;
  3322. #else
  3323. typedef RECOVERY_AGENT_INFORMATIONA RECOVERY_AGENT_INFORMATION;
  3324. typedef LPRECOVERY_AGENT_INFORMATIONA LPRECOVERY_AGENT_INFORMATION;
  3325. #endif // UNICODE
  3326.  
  3327. WINADVAPI
  3328. DWORD
  3329. WINAPI
  3330. QueryRecoveryAgentsA(
  3331.      IN      LPCSTR                        lpFileName,
  3332.      OUT     PDWORD                          AgentCount,
  3333.      OUT     LPRECOVERY_AGENT_INFORMATIONA * RecoveryAgentInformation
  3334.      );
  3335. WINADVAPI
  3336. DWORD
  3337. WINAPI
  3338. QueryRecoveryAgentsW(
  3339.      IN      LPCWSTR                        lpFileName,
  3340.      OUT     PDWORD                          AgentCount,
  3341.      OUT     LPRECOVERY_AGENT_INFORMATIONW * RecoveryAgentInformation
  3342.      );
  3343. #ifdef UNICODE
  3344. #define QueryRecoveryAgents  QueryRecoveryAgentsW
  3345. #else
  3346. #define QueryRecoveryAgents  QueryRecoveryAgentsA
  3347. #endif // !UNICODE
  3348.  
  3349. //
  3350. // _l Compat Functions
  3351. //
  3352.  
  3353. WINBASEAPI
  3354. int
  3355. WINAPI
  3356. lstrcmpA(
  3357.     LPCSTR lpString1,
  3358.     LPCSTR lpString2
  3359.     );
  3360. WINBASEAPI
  3361. int
  3362. WINAPI
  3363. lstrcmpW(
  3364.     LPCWSTR lpString1,
  3365.     LPCWSTR lpString2
  3366.     );
  3367. #ifdef UNICODE
  3368. #define lstrcmp  lstrcmpW
  3369. #else
  3370. #define lstrcmp  lstrcmpA
  3371. #endif // !UNICODE
  3372.  
  3373. WINBASEAPI
  3374. int
  3375. WINAPI
  3376. lstrcmpiA(
  3377.     LPCSTR lpString1,
  3378.     LPCSTR lpString2
  3379.     );
  3380. WINBASEAPI
  3381. int
  3382. WINAPI
  3383. lstrcmpiW(
  3384.     LPCWSTR lpString1,
  3385.     LPCWSTR lpString2
  3386.     );
  3387. #ifdef UNICODE
  3388. #define lstrcmpi  lstrcmpiW
  3389. #else
  3390. #define lstrcmpi  lstrcmpiA
  3391. #endif // !UNICODE
  3392.  
  3393. WINBASEAPI
  3394. LPSTR
  3395. WINAPI
  3396. lstrcpynA(
  3397.     LPSTR lpString1,
  3398.     LPCSTR lpString2,
  3399.     int iMaxLength
  3400.     );
  3401. WINBASEAPI
  3402. LPWSTR
  3403. WINAPI
  3404. lstrcpynW(
  3405.     LPWSTR lpString1,
  3406.     LPCWSTR lpString2,
  3407.     int iMaxLength
  3408.     );
  3409. #ifdef UNICODE
  3410. #define lstrcpyn  lstrcpynW
  3411. #else
  3412. #define lstrcpyn  lstrcpynA
  3413. #endif // !UNICODE
  3414.  
  3415. WINBASEAPI
  3416. LPSTR
  3417. WINAPI
  3418. lstrcpyA(
  3419.     LPSTR lpString1,
  3420.     LPCSTR lpString2
  3421.     );
  3422. WINBASEAPI
  3423. LPWSTR
  3424. WINAPI
  3425. lstrcpyW(
  3426.     LPWSTR lpString1,
  3427.     LPCWSTR lpString2
  3428.     );
  3429. #ifdef UNICODE
  3430. #define lstrcpy  lstrcpyW
  3431. #else
  3432. #define lstrcpy  lstrcpyA
  3433. #endif // !UNICODE
  3434.  
  3435. WINBASEAPI
  3436. LPSTR
  3437. WINAPI
  3438. lstrcatA(
  3439.     LPSTR lpString1,
  3440.     LPCSTR lpString2
  3441.     );
  3442. WINBASEAPI
  3443. LPWSTR
  3444. WINAPI
  3445. lstrcatW(
  3446.     LPWSTR lpString1,
  3447.     LPCWSTR lpString2
  3448.     );
  3449. #ifdef UNICODE
  3450. #define lstrcat  lstrcatW
  3451. #else
  3452. #define lstrcat  lstrcatA
  3453. #endif // !UNICODE
  3454.  
  3455. WINBASEAPI
  3456. int
  3457. WINAPI
  3458. lstrlenA(
  3459.     LPCSTR lpString
  3460.     );
  3461. WINBASEAPI
  3462. int
  3463. WINAPI
  3464. lstrlenW(
  3465.     LPCWSTR lpString
  3466.     );
  3467. #ifdef UNICODE
  3468. #define lstrlen  lstrlenW
  3469. #else
  3470. #define lstrlen  lstrlenA
  3471. #endif // !UNICODE
  3472.  
  3473. WINBASEAPI
  3474. HFILE
  3475. WINAPI
  3476. OpenFile(
  3477.     LPCSTR lpFileName,
  3478.     LPOFSTRUCT lpReOpenBuff,
  3479.     UINT uStyle
  3480.     );
  3481.  
  3482. WINBASEAPI
  3483. HFILE
  3484. WINAPI
  3485. _lopen(
  3486.     LPCSTR lpPathName,
  3487.     int iReadWrite
  3488.     );
  3489.  
  3490. WINBASEAPI
  3491. HFILE
  3492. WINAPI
  3493. _lcreat(
  3494.     LPCSTR lpPathName,
  3495.     int  iAttribute
  3496.     );
  3497.  
  3498. WINBASEAPI
  3499. UINT
  3500. WINAPI
  3501. _lread(
  3502.     HFILE hFile,
  3503.     LPVOID lpBuffer,
  3504.     UINT uBytes
  3505.     );
  3506.  
  3507. WINBASEAPI
  3508. UINT
  3509. WINAPI
  3510. _lwrite(
  3511.     HFILE hFile,
  3512.     LPCSTR lpBuffer,
  3513.     UINT uBytes
  3514.     );
  3515.  
  3516. WINBASEAPI
  3517. long
  3518. WINAPI
  3519. _hread(
  3520.     HFILE hFile,
  3521.     LPVOID lpBuffer,
  3522.     long lBytes
  3523.     );
  3524.  
  3525. WINBASEAPI
  3526. long
  3527. WINAPI
  3528. _hwrite(
  3529.     HFILE hFile,
  3530.     LPCSTR lpBuffer,
  3531.     long lBytes
  3532.     );
  3533.  
  3534. WINBASEAPI
  3535. HFILE
  3536. WINAPI
  3537. _lclose(
  3538.     HFILE hFile
  3539.     );
  3540.  
  3541. WINBASEAPI
  3542. LONG
  3543. WINAPI
  3544. _llseek(
  3545.     HFILE hFile,
  3546.     LONG lOffset,
  3547.     int iOrigin
  3548.     );
  3549.  
  3550. WINADVAPI
  3551. BOOL
  3552. WINAPI
  3553. IsTextUnicode(
  3554.     CONST LPVOID lpBuffer,
  3555.     int cb,
  3556.     LPINT lpi
  3557.     );
  3558.  
  3559. WINBASEAPI
  3560. DWORD
  3561. WINAPI
  3562. TlsAlloc(
  3563.     VOID
  3564.     );
  3565.  
  3566. #define TLS_OUT_OF_INDEXES (DWORD)0xFFFFFFFF
  3567.  
  3568. WINBASEAPI
  3569. LPVOID
  3570. WINAPI
  3571. TlsGetValue(
  3572.     DWORD dwTlsIndex
  3573.     );
  3574.  
  3575. WINBASEAPI
  3576. BOOL
  3577. WINAPI
  3578. TlsSetValue(
  3579.     DWORD dwTlsIndex,
  3580.     LPVOID lpTlsValue
  3581.     );
  3582.  
  3583. WINBASEAPI
  3584. BOOL
  3585. WINAPI
  3586. TlsFree(
  3587.     DWORD dwTlsIndex
  3588.     );
  3589.  
  3590. typedef
  3591. VOID
  3592. (WINAPI *LPOVERLAPPED_COMPLETION_ROUTINE)(
  3593.     DWORD dwErrorCode,
  3594.     DWORD dwNumberOfBytesTransfered,
  3595.     LPOVERLAPPED lpOverlapped
  3596.     );
  3597.  
  3598. WINBASEAPI
  3599. DWORD
  3600. WINAPI
  3601. SleepEx(
  3602.     DWORD dwMilliseconds,
  3603.     BOOL bAlertable
  3604.     );
  3605.  
  3606. WINBASEAPI
  3607. DWORD
  3608. WINAPI
  3609. WaitForSingleObjectEx(
  3610.     HANDLE hHandle,
  3611.     DWORD dwMilliseconds,
  3612.     BOOL bAlertable
  3613.     );
  3614.  
  3615. WINBASEAPI
  3616. DWORD
  3617. WINAPI
  3618. WaitForMultipleObjectsEx(
  3619.     DWORD nCount,
  3620.     CONST HANDLE *lpHandles,
  3621.     BOOL bWaitAll,
  3622.     DWORD dwMilliseconds,
  3623.     BOOL bAlertable
  3624.     );
  3625.  
  3626. #if(_WIN32_WINNT >= 0x0400)
  3627. WINBASEAPI
  3628. DWORD
  3629. WINAPI
  3630. SignalObjectAndWait(
  3631.     HANDLE hObjectToSignal,
  3632.     HANDLE hObjectToWaitOn,
  3633.     DWORD dwMilliseconds,
  3634.     BOOL bAlertable
  3635.     );
  3636. #endif /* _WIN32_WINNT >= 0x0400 */
  3637.  
  3638. WINBASEAPI
  3639. BOOL
  3640. WINAPI
  3641. ReadFileEx(
  3642.     HANDLE hFile,
  3643.     LPVOID lpBuffer,
  3644.     DWORD nNumberOfBytesToRead,
  3645.     LPOVERLAPPED lpOverlapped,
  3646.     LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
  3647.     );
  3648.  
  3649. WINBASEAPI
  3650. BOOL
  3651. WINAPI
  3652. WriteFileEx(
  3653.     HANDLE hFile,
  3654.     LPCVOID lpBuffer,
  3655.     DWORD nNumberOfBytesToWrite,
  3656.     LPOVERLAPPED lpOverlapped,
  3657.     LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
  3658.     );
  3659.  
  3660. WINBASEAPI
  3661. BOOL
  3662. WINAPI
  3663. BackupRead(
  3664.     HANDLE hFile,
  3665.     LPBYTE lpBuffer,
  3666.     DWORD nNumberOfBytesToRead,
  3667.     LPDWORD lpNumberOfBytesRead,
  3668.     BOOL bAbort,
  3669.     BOOL bProcessSecurity,
  3670.     LPVOID *lpContext
  3671.     );
  3672.  
  3673. WINBASEAPI
  3674. BOOL
  3675. WINAPI
  3676. BackupSeek(
  3677.     HANDLE hFile,
  3678.     DWORD  dwLowBytesToSeek,
  3679.     DWORD  dwHighBytesToSeek,
  3680.     LPDWORD lpdwLowByteSeeked,
  3681.     LPDWORD lpdwHighByteSeeked,
  3682.     LPVOID *lpContext
  3683.     );
  3684.  
  3685. WINBASEAPI
  3686. BOOL
  3687. WINAPI
  3688. BackupWrite(
  3689.     HANDLE hFile,
  3690.     LPBYTE lpBuffer,
  3691.     DWORD nNumberOfBytesToWrite,
  3692.     LPDWORD lpNumberOfBytesWritten,
  3693.     BOOL bAbort,
  3694.     BOOL bProcessSecurity,
  3695.     LPVOID *lpContext
  3696.     );
  3697.  
  3698. //
  3699. //  Stream id structure
  3700. //
  3701. typedef struct _WIN32_STREAM_ID {
  3702.         DWORD          dwStreamId ;
  3703.         DWORD          dwStreamAttributes ;
  3704.         LARGE_INTEGER  Size ;
  3705.         DWORD          dwStreamNameSize ;
  3706.         WCHAR          cStreamName[ ANYSIZE_ARRAY ] ;
  3707. } WIN32_STREAM_ID, *LPWIN32_STREAM_ID ;
  3708.  
  3709. //
  3710. //  Stream Ids
  3711. //
  3712.  
  3713. #define BACKUP_INVALID          0x00000000
  3714. #define BACKUP_DATA             0x00000001
  3715. #define BACKUP_EA_DATA          0x00000002
  3716. #define BACKUP_SECURITY_DATA    0x00000003
  3717. #define BACKUP_ALTERNATE_DATA   0x00000004
  3718. #define BACKUP_LINK             0x00000005
  3719. #define BACKUP_PROPERTY_DATA    0x00000006
  3720. #define BACKUP_OBJECT_ID        0x00000007
  3721. #define BACKUP_REPARSE_DATA     0x00000008
  3722. #define BACKUP_SPARSE_BLOCK     0x00000009
  3723.  
  3724.  
  3725. //
  3726. //  Stream Attributes
  3727. //
  3728.  
  3729. #define STREAM_NORMAL_ATTRIBUTE         0x00000000
  3730. #define STREAM_MODIFIED_WHEN_READ       0x00000001
  3731. #define STREAM_CONTAINS_SECURITY        0x00000002
  3732. #define STREAM_CONTAINS_PROPERTIES      0x00000004
  3733. #define STREAM_SPARSE_ATTRIBUTE         0x00000008
  3734.  
  3735. WINBASEAPI
  3736. BOOL
  3737. WINAPI
  3738. ReadFileScatter(
  3739.     HANDLE hFile,
  3740.     FILE_SEGMENT_ELEMENT aSegmentArray[],
  3741.     DWORD nNumberOfBytesToRead,
  3742.     LPDWORD lpReserved,
  3743.     LPOVERLAPPED lpOverlapped
  3744.     );
  3745.  
  3746. WINBASEAPI
  3747. BOOL
  3748. WINAPI
  3749. WriteFileGather(
  3750.     HANDLE hFile,
  3751.     FILE_SEGMENT_ELEMENT aSegmentArray[],
  3752.     DWORD nNumberOfBytesToWrite,
  3753.     LPDWORD lpReserved,
  3754.     LPOVERLAPPED lpOverlapped
  3755.     );
  3756.  
  3757. //
  3758. // Dual Mode API below this line. Dual Mode Structures also included.
  3759. //
  3760.  
  3761. #define STARTF_USESHOWWINDOW    0x00000001
  3762. #define STARTF_USESIZE          0x00000002
  3763. #define STARTF_USEPOSITION      0x00000004
  3764. #define STARTF_USECOUNTCHARS    0x00000008
  3765. #define STARTF_USEFILLATTRIBUTE 0x00000010
  3766. #define STARTF_RUNFULLSCREEN    0x00000020  // ignored for non-x86 platforms
  3767. #define STARTF_FORCEONFEEDBACK  0x00000040
  3768. #define STARTF_FORCEOFFFEEDBACK 0x00000080
  3769. #define STARTF_USESTDHANDLES    0x00000100
  3770. #if(WINVER >= 0x0400)
  3771. #define STARTF_USEHOTKEY        0x00000200
  3772. #endif /* WINVER >= 0x0400 */
  3773.  
  3774. typedef struct _STARTUPINFOA {
  3775.     DWORD   cb;
  3776.     LPSTR   lpReserved;
  3777.     LPSTR   lpDesktop;
  3778.     LPSTR   lpTitle;
  3779.     DWORD   dwX;
  3780.     DWORD   dwY;
  3781.     DWORD   dwXSize;
  3782.     DWORD   dwYSize;
  3783.     DWORD   dwXCountChars;
  3784.     DWORD   dwYCountChars;
  3785.     DWORD   dwFillAttribute;
  3786.     DWORD   dwFlags;
  3787.     WORD    wShowWindow;
  3788.     WORD    cbReserved2;
  3789.     LPBYTE  lpReserved2;
  3790.     HANDLE  hStdInput;
  3791.     HANDLE  hStdOutput;
  3792.     HANDLE  hStdError;
  3793. } STARTUPINFOA, *LPSTARTUPINFOA;
  3794. typedef struct _STARTUPINFOW {
  3795.     DWORD   cb;
  3796.     LPWSTR  lpReserved;
  3797.     LPWSTR  lpDesktop;
  3798.     LPWSTR  lpTitle;
  3799.     DWORD   dwX;
  3800.     DWORD   dwY;
  3801.     DWORD   dwXSize;
  3802.     DWORD   dwYSize;
  3803.     DWORD   dwXCountChars;
  3804.     DWORD   dwYCountChars;
  3805.     DWORD   dwFillAttribute;
  3806.     DWORD   dwFlags;
  3807.     WORD    wShowWindow;
  3808.     WORD    cbReserved2;
  3809.     LPBYTE  lpReserved2;
  3810.     HANDLE  hStdInput;
  3811.     HANDLE  hStdOutput;
  3812.     HANDLE  hStdError;
  3813. } STARTUPINFOW, *LPSTARTUPINFOW;
  3814. #ifdef UNICODE
  3815. typedef STARTUPINFOW STARTUPINFO;
  3816. typedef LPSTARTUPINFOW LPSTARTUPINFO;
  3817. #else
  3818. typedef STARTUPINFOA STARTUPINFO;
  3819. typedef LPSTARTUPINFOA LPSTARTUPINFO;
  3820. #endif // UNICODE
  3821.  
  3822. #define SHUTDOWN_NORETRY                0x00000001
  3823.  
  3824. typedef struct _WIN32_FIND_DATAA {
  3825.     DWORD dwFileAttributes;
  3826.     FILETIME ftCreationTime;
  3827.     FILETIME ftLastAccessTime;
  3828.     FILETIME ftLastWriteTime;
  3829.     DWORD nFileSizeHigh;
  3830.     DWORD nFileSizeLow;
  3831.     DWORD dwReserved0;
  3832.     DWORD dwReserved1;
  3833.     CHAR   cFileName[ MAX_PATH ];
  3834.     CHAR   cAlternateFileName[ 14 ];
  3835. #ifdef _MAC
  3836.     DWORD dwFileType;
  3837.     DWORD dwCreatorType;
  3838.     WORD  wFinderFlags;
  3839. #endif
  3840. } WIN32_FIND_DATAA, *PWIN32_FIND_DATAA, *LPWIN32_FIND_DATAA;
  3841. typedef struct _WIN32_FIND_DATAW {
  3842.     DWORD dwFileAttributes;
  3843.     FILETIME ftCreationTime;
  3844.     FILETIME ftLastAccessTime;
  3845.     FILETIME ftLastWriteTime;
  3846.     DWORD nFileSizeHigh;
  3847.     DWORD nFileSizeLow;
  3848.     DWORD dwReserved0;
  3849.     DWORD dwReserved1;
  3850.     WCHAR  cFileName[ MAX_PATH ];
  3851.     WCHAR  cAlternateFileName[ 14 ];
  3852. #ifdef _MAC
  3853.     DWORD dwFileType;
  3854.     DWORD dwCreatorType;
  3855.     WORD  wFinderFlags;
  3856. #endif
  3857. } WIN32_FIND_DATAW, *PWIN32_FIND_DATAW, *LPWIN32_FIND_DATAW;
  3858. #ifdef UNICODE
  3859. typedef WIN32_FIND_DATAW WIN32_FIND_DATA;
  3860. typedef PWIN32_FIND_DATAW PWIN32_FIND_DATA;
  3861. typedef LPWIN32_FIND_DATAW LPWIN32_FIND_DATA;
  3862. #else
  3863. typedef WIN32_FIND_DATAA WIN32_FIND_DATA;
  3864. typedef PWIN32_FIND_DATAA PWIN32_FIND_DATA;
  3865. typedef LPWIN32_FIND_DATAA LPWIN32_FIND_DATA;
  3866. #endif // UNICODE
  3867.  
  3868. typedef struct _WIN32_FILE_ATTRIBUTE_DATA {
  3869.     DWORD dwFileAttributes;
  3870.     FILETIME ftCreationTime;
  3871.     FILETIME ftLastAccessTime;
  3872.     FILETIME ftLastWriteTime;
  3873.     DWORD nFileSizeHigh;
  3874.     DWORD nFileSizeLow;
  3875. } WIN32_FILE_ATTRIBUTE_DATA, *LPWIN32_FILE_ATTRIBUTE_DATA;
  3876.  
  3877. WINBASEAPI
  3878. HANDLE
  3879. WINAPI
  3880. CreateMutexA(
  3881.     LPSECURITY_ATTRIBUTES lpMutexAttributes,
  3882.     BOOL bInitialOwner,
  3883.     LPCSTR lpName
  3884.     );
  3885. WINBASEAPI
  3886. HANDLE
  3887. WINAPI
  3888. CreateMutexW(
  3889.     LPSECURITY_ATTRIBUTES lpMutexAttributes,
  3890.     BOOL bInitialOwner,
  3891.     LPCWSTR lpName
  3892.     );
  3893. #ifdef UNICODE
  3894. #define CreateMutex  CreateMutexW
  3895. #else
  3896. #define CreateMutex  CreateMutexA
  3897. #endif // !UNICODE
  3898.  
  3899. WINBASEAPI
  3900. HANDLE
  3901. WINAPI
  3902. OpenMutexA(
  3903.     DWORD dwDesiredAccess,
  3904.     BOOL bInheritHandle,
  3905.     LPCSTR lpName
  3906.     );
  3907. WINBASEAPI
  3908. HANDLE
  3909. WINAPI
  3910. OpenMutexW(
  3911.     DWORD dwDesiredAccess,
  3912.     BOOL bInheritHandle,
  3913.     LPCWSTR lpName
  3914.     );
  3915. #ifdef UNICODE
  3916. #define OpenMutex  OpenMutexW
  3917. #else
  3918. #define OpenMutex  OpenMutexA
  3919. #endif // !UNICODE
  3920.  
  3921. WINBASEAPI
  3922. HANDLE
  3923. WINAPI
  3924. CreateEventA(
  3925.     LPSECURITY_ATTRIBUTES lpEventAttributes,
  3926.     BOOL bManualReset,
  3927.     BOOL bInitialState,
  3928.     LPCSTR lpName
  3929.     );
  3930. WINBASEAPI
  3931. HANDLE
  3932. WINAPI
  3933. CreateEventW(
  3934.     LPSECURITY_ATTRIBUTES lpEventAttributes,
  3935.     BOOL bManualReset,
  3936.     BOOL bInitialState,
  3937.     LPCWSTR lpName
  3938.     );
  3939. #ifdef UNICODE
  3940. #define CreateEvent  CreateEventW
  3941. #else
  3942. #define CreateEvent  CreateEventA
  3943. #endif // !UNICODE
  3944.  
  3945. WINBASEAPI
  3946. HANDLE
  3947. WINAPI
  3948. OpenEventA(
  3949.     DWORD dwDesiredAccess,
  3950.     BOOL bInheritHandle,
  3951.     LPCSTR lpName
  3952.     );
  3953. WINBASEAPI
  3954. HANDLE
  3955. WINAPI
  3956. OpenEventW(
  3957.     DWORD dwDesiredAccess,
  3958.     BOOL bInheritHandle,
  3959.     LPCWSTR lpName
  3960.     );
  3961. #ifdef UNICODE
  3962. #define OpenEvent  OpenEventW
  3963. #else
  3964. #define OpenEvent  OpenEventA
  3965. #endif // !UNICODE
  3966.  
  3967. WINBASEAPI
  3968. HANDLE
  3969. WINAPI
  3970. CreateSemaphoreA(
  3971.     LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
  3972.     LONG lInitialCount,
  3973.     LONG lMaximumCount,
  3974.     LPCSTR lpName
  3975.     );
  3976. WINBASEAPI
  3977. HANDLE
  3978. WINAPI
  3979. CreateSemaphoreW(
  3980.     LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,
  3981.     LONG lInitialCount,
  3982.     LONG lMaximumCount,
  3983.     LPCWSTR lpName
  3984.     );
  3985. #ifdef UNICODE
  3986. #define CreateSemaphore  CreateSemaphoreW
  3987. #else
  3988. #define CreateSemaphore  CreateSemaphoreA
  3989. #endif // !UNICODE
  3990.  
  3991. WINBASEAPI
  3992. HANDLE
  3993. WINAPI
  3994. OpenSemaphoreA(
  3995.     DWORD dwDesiredAccess,
  3996.     BOOL bInheritHandle,
  3997.     LPCSTR lpName
  3998.     );
  3999. WINBASEAPI
  4000. HANDLE
  4001. WINAPI
  4002. OpenSemaphoreW(
  4003.     DWORD dwDesiredAccess,
  4004.     BOOL bInheritHandle,
  4005.     LPCWSTR lpName
  4006.     );
  4007. #ifdef UNICODE
  4008. #define OpenSemaphore  OpenSemaphoreW
  4009. #else
  4010. #define OpenSemaphore  OpenSemaphoreA
  4011. #endif // !UNICODE
  4012.  
  4013. #if (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400)
  4014. typedef
  4015. VOID
  4016. (APIENTRY *PTIMERAPCROUTINE)(
  4017.     LPVOID lpArgToCompletionRoutine,
  4018.     DWORD dwTimerLowValue,
  4019.     DWORD dwTimerHighValue
  4020.     );
  4021.  
  4022. WINBASEAPI
  4023. HANDLE
  4024. WINAPI
  4025. CreateWaitableTimerA(
  4026.     LPSECURITY_ATTRIBUTES lpTimerAttributes,
  4027.     BOOL bManualReset,
  4028.     LPCSTR lpTimerName
  4029.     );
  4030. WINBASEAPI
  4031. HANDLE
  4032. WINAPI
  4033. CreateWaitableTimerW(
  4034.     LPSECURITY_ATTRIBUTES lpTimerAttributes,
  4035.     BOOL bManualReset,
  4036.     LPCWSTR lpTimerName
  4037.     );
  4038. #ifdef UNICODE
  4039. #define CreateWaitableTimer  CreateWaitableTimerW
  4040. #else
  4041. #define CreateWaitableTimer  CreateWaitableTimerA
  4042. #endif // !UNICODE
  4043.  
  4044. WINBASEAPI
  4045. HANDLE
  4046. WINAPI
  4047. OpenWaitableTimerA(
  4048.     DWORD dwDesiredAccess,
  4049.     BOOL bInheritHandle,
  4050.     LPCSTR lpTimerName
  4051.     );
  4052. WINBASEAPI
  4053. HANDLE
  4054. WINAPI
  4055. OpenWaitableTimerW(
  4056.     DWORD dwDesiredAccess,
  4057.     BOOL bInheritHandle,
  4058.     LPCWSTR lpTimerName
  4059.     );
  4060. #ifdef UNICODE
  4061. #define OpenWaitableTimer  OpenWaitableTimerW
  4062. #else
  4063. #define OpenWaitableTimer  OpenWaitableTimerA
  4064. #endif // !UNICODE
  4065.  
  4066. WINBASEAPI
  4067. BOOL
  4068. WINAPI
  4069. SetWaitableTimer(
  4070.     HANDLE hTimer,
  4071.     const LARGE_INTEGER *lpDueTime,
  4072.     LONG lPeriod,
  4073.     PTIMERAPCROUTINE pfnCompletionRoutine,
  4074.     LPVOID lpArgToCompletionRoutine,
  4075.     BOOL fResume
  4076.     );
  4077.  
  4078. WINBASEAPI
  4079. BOOL
  4080. WINAPI
  4081. CancelWaitableTimer(
  4082.     HANDLE hTimer
  4083.     );
  4084. #endif /* (_WIN32_WINNT >= 0x0400) || (_WIN32_WINDOWS > 0x0400) */
  4085.  
  4086. WINBASEAPI
  4087. HANDLE
  4088. WINAPI
  4089. CreateFileMappingA(
  4090.     HANDLE hFile,
  4091.     LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
  4092.     DWORD flProtect,
  4093.     DWORD dwMaximumSizeHigh,
  4094.     DWORD dwMaximumSizeLow,
  4095.     LPCSTR lpName
  4096.     );
  4097. WINBASEAPI
  4098. HANDLE
  4099. WINAPI
  4100. CreateFileMappingW(
  4101.     HANDLE hFile,
  4102.     LPSECURITY_ATTRIBUTES lpFileMappingAttributes,
  4103.     DWORD flProtect,
  4104.     DWORD dwMaximumSizeHigh,
  4105.     DWORD dwMaximumSizeLow,
  4106.     LPCWSTR lpName
  4107.     );
  4108. #ifdef UNICODE
  4109. #define CreateFileMapping  CreateFileMappingW
  4110. #else
  4111. #define CreateFileMapping  CreateFileMappingA
  4112. #endif // !UNICODE
  4113.  
  4114. WINBASEAPI
  4115. HANDLE
  4116. WINAPI
  4117. OpenFileMappingA(
  4118.     DWORD dwDesiredAccess,
  4119.     BOOL bInheritHandle,
  4120.     LPCSTR lpName
  4121.     );
  4122. WINBASEAPI
  4123. HANDLE
  4124. WINAPI
  4125. OpenFileMappingW(
  4126.     DWORD dwDesiredAccess,
  4127.     BOOL bInheritHandle,
  4128.     LPCWSTR lpName
  4129.     );
  4130. #ifdef UNICODE
  4131. #define OpenFileMapping  OpenFileMappingW
  4132. #else
  4133. #define OpenFileMapping  OpenFileMappingA
  4134. #endif // !UNICODE
  4135.  
  4136. WINBASEAPI
  4137. DWORD
  4138. WINAPI
  4139. GetLogicalDriveStringsA(
  4140.     DWORD nBufferLength,
  4141.     LPSTR lpBuffer
  4142.     );
  4143. WINBASEAPI
  4144. DWORD
  4145. WINAPI
  4146. GetLogicalDriveStringsW(
  4147.     DWORD nBufferLength,
  4148.     LPWSTR lpBuffer
  4149.     );
  4150. #ifdef UNICODE
  4151. #define GetLogicalDriveStrings  GetLogicalDriveStringsW
  4152. #else
  4153. #define GetLogicalDriveStrings  GetLogicalDriveStringsA
  4154. #endif // !UNICODE
  4155.  
  4156. WINBASEAPI
  4157. HMODULE
  4158. WINAPI
  4159. LoadLibraryA(
  4160.     LPCSTR lpLibFileName
  4161.     );
  4162. WINBASEAPI
  4163. HMODULE
  4164. WINAPI
  4165. LoadLibraryW(
  4166.     LPCWSTR lpLibFileName
  4167.     );
  4168. #ifdef UNICODE
  4169. #define LoadLibrary  LoadLibraryW
  4170. #else
  4171. #define LoadLibrary  LoadLibraryA
  4172. #endif // !UNICODE
  4173.  
  4174. WINBASEAPI
  4175. HMODULE
  4176. WINAPI
  4177. LoadLibraryExA(
  4178.     LPCSTR lpLibFileName,
  4179.     HANDLE hFile,
  4180.     DWORD dwFlags
  4181.     );
  4182. WINBASEAPI
  4183. HMODULE
  4184. WINAPI
  4185. LoadLibraryExW(
  4186.     LPCWSTR lpLibFileName,
  4187.     HANDLE hFile,
  4188.     DWORD dwFlags
  4189.     );
  4190. #ifdef UNICODE
  4191. #define LoadLibraryEx  LoadLibraryExW
  4192. #else
  4193. #define LoadLibraryEx  LoadLibraryExA
  4194. #endif // !UNICODE
  4195.  
  4196.  
  4197. #define DONT_RESOLVE_DLL_REFERENCES     0x00000001
  4198. #define LOAD_LIBRARY_AS_DATAFILE        0x00000002
  4199. #define LOAD_WITH_ALTERED_SEARCH_PATH   0x00000008
  4200.  
  4201.  
  4202. WINBASEAPI
  4203. DWORD
  4204. WINAPI
  4205. GetModuleFileNameA(
  4206.     HMODULE hModule,
  4207.     LPSTR lpFilename,
  4208.     DWORD nSize
  4209.     );
  4210. WINBASEAPI
  4211. DWORD
  4212. WINAPI
  4213. GetModuleFileNameW(
  4214.     HMODULE hModule,
  4215.     LPWSTR lpFilename,
  4216.     DWORD nSize
  4217.     );
  4218. #ifdef UNICODE
  4219. #define GetModuleFileName  GetModuleFileNameW
  4220. #else
  4221. #define GetModuleFileName  GetModuleFileNameA
  4222. #endif // !UNICODE
  4223.  
  4224. WINBASEAPI
  4225. HMODULE
  4226. WINAPI
  4227. GetModuleHandleA(
  4228.     LPCSTR lpModuleName
  4229.     );
  4230. WINBASEAPI
  4231. HMODULE
  4232. WINAPI
  4233. GetModuleHandleW(
  4234.     LPCWSTR lpModuleName
  4235.     );
  4236. #ifdef UNICODE
  4237. #define GetModuleHandle  GetModuleHandleW
  4238. #else
  4239. #define GetModuleHandle  GetModuleHandleA
  4240. #endif // !UNICODE
  4241.  
  4242. WINBASEAPI
  4243. BOOL
  4244. WINAPI
  4245. CreateProcessA(
  4246.     LPCSTR lpApplicationName,
  4247.     LPSTR lpCommandLine,
  4248.     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  4249.     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  4250.     BOOL bInheritHandles,
  4251.     DWORD dwCreationFlags,
  4252.     LPVOID lpEnvironment,
  4253.     LPCSTR lpCurrentDirectory,
  4254.     LPSTARTUPINFOA lpStartupInfo,
  4255.     LPPROCESS_INFORMATION lpProcessInformation
  4256.     );
  4257. WINBASEAPI
  4258. BOOL
  4259. WINAPI
  4260. CreateProcessW(
  4261.     LPCWSTR lpApplicationName,
  4262.     LPWSTR lpCommandLine,
  4263.     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  4264.     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  4265.     BOOL bInheritHandles,
  4266.     DWORD dwCreationFlags,
  4267.     LPVOID lpEnvironment,
  4268.     LPCWSTR lpCurrentDirectory,
  4269.     LPSTARTUPINFOW lpStartupInfo,
  4270.     LPPROCESS_INFORMATION lpProcessInformation
  4271.     );
  4272. #ifdef UNICODE
  4273. #define CreateProcess  CreateProcessW
  4274. #else
  4275. #define CreateProcess  CreateProcessA
  4276. #endif // !UNICODE
  4277.  
  4278. WINBASEAPI
  4279. BOOL
  4280. WINAPI
  4281. SetProcessShutdownParameters(
  4282.     DWORD dwLevel,
  4283.     DWORD dwFlags
  4284.     );
  4285.  
  4286. WINBASEAPI
  4287. BOOL
  4288. WINAPI
  4289. GetProcessShutdownParameters(
  4290.     LPDWORD lpdwLevel,
  4291.     LPDWORD lpdwFlags
  4292.     );
  4293.  
  4294. WINBASEAPI
  4295. DWORD
  4296. WINAPI
  4297. GetProcessVersion(
  4298.     DWORD ProcessId
  4299.     );
  4300.  
  4301. WINBASEAPI
  4302. VOID
  4303. WINAPI
  4304. FatalAppExitA(
  4305.     UINT uAction,
  4306.     LPCSTR lpMessageText
  4307.     );
  4308. WINBASEAPI
  4309. VOID
  4310. WINAPI
  4311. FatalAppExitW(
  4312.     UINT uAction,
  4313.     LPCWSTR lpMessageText
  4314.     );
  4315. #ifdef UNICODE
  4316. #define FatalAppExit  FatalAppExitW
  4317. #else
  4318. #define FatalAppExit  FatalAppExitA
  4319. #endif // !UNICODE
  4320.  
  4321. WINBASEAPI
  4322. VOID
  4323. WINAPI
  4324. GetStartupInfoA(
  4325.     LPSTARTUPINFOA lpStartupInfo
  4326.     );
  4327. WINBASEAPI
  4328. VOID
  4329. WINAPI
  4330. GetStartupInfoW(
  4331.     LPSTARTUPINFOW lpStartupInfo
  4332.     );
  4333. #ifdef UNICODE
  4334. #define GetStartupInfo  GetStartupInfoW
  4335. #else
  4336. #define GetStartupInfo  GetStartupInfoA
  4337. #endif // !UNICODE
  4338.  
  4339. WINBASEAPI
  4340. LPSTR
  4341. WINAPI
  4342. GetCommandLineA(
  4343.     VOID
  4344.     );
  4345. WINBASEAPI
  4346. LPWSTR
  4347. WINAPI
  4348. GetCommandLineW(
  4349.     VOID
  4350.     );
  4351. #ifdef UNICODE
  4352. #define GetCommandLine  GetCommandLineW
  4353. #else
  4354. #define GetCommandLine  GetCommandLineA
  4355. #endif // !UNICODE
  4356.  
  4357. WINBASEAPI
  4358. DWORD
  4359. WINAPI
  4360. GetEnvironmentVariableA(
  4361.     LPCSTR lpName,
  4362.     LPSTR lpBuffer,
  4363.     DWORD nSize
  4364.     );
  4365. WINBASEAPI
  4366. DWORD
  4367. WINAPI
  4368. GetEnvironmentVariableW(
  4369.     LPCWSTR lpName,
  4370.     LPWSTR lpBuffer,
  4371.     DWORD nSize
  4372.     );
  4373. #ifdef UNICODE
  4374. #define GetEnvironmentVariable  GetEnvironmentVariableW
  4375. #else
  4376. #define GetEnvironmentVariable  GetEnvironmentVariableA
  4377. #endif // !UNICODE
  4378.  
  4379. WINBASEAPI
  4380. BOOL
  4381. WINAPI
  4382. SetEnvironmentVariableA(
  4383.     LPCSTR lpName,
  4384.     LPCSTR lpValue
  4385.     );
  4386. WINBASEAPI
  4387. BOOL
  4388. WINAPI
  4389. SetEnvironmentVariableW(
  4390.     LPCWSTR lpName,
  4391.     LPCWSTR lpValue
  4392.     );
  4393. #ifdef UNICODE
  4394. #define SetEnvironmentVariable  SetEnvironmentVariableW
  4395. #else
  4396. #define SetEnvironmentVariable  SetEnvironmentVariableA
  4397. #endif // !UNICODE
  4398.  
  4399. WINBASEAPI
  4400. DWORD
  4401. WINAPI
  4402. ExpandEnvironmentStringsA(
  4403.     LPCSTR lpSrc,
  4404.     LPSTR lpDst,
  4405.     DWORD nSize
  4406.     );
  4407. WINBASEAPI
  4408. DWORD
  4409. WINAPI
  4410. ExpandEnvironmentStringsW(
  4411.     LPCWSTR lpSrc,
  4412.     LPWSTR lpDst,
  4413.     DWORD nSize
  4414.     );
  4415. #ifdef UNICODE
  4416. #define ExpandEnvironmentStrings  ExpandEnvironmentStringsW
  4417. #else
  4418. #define ExpandEnvironmentStrings  ExpandEnvironmentStringsA
  4419. #endif // !UNICODE
  4420.  
  4421. WINBASEAPI
  4422. VOID
  4423. WINAPI
  4424. OutputDebugStringA(
  4425.     LPCSTR lpOutputString
  4426.     );
  4427. WINBASEAPI
  4428. VOID
  4429. WINAPI
  4430. OutputDebugStringW(
  4431.     LPCWSTR lpOutputString
  4432.     );
  4433. #ifdef UNICODE
  4434. #define OutputDebugString  OutputDebugStringW
  4435. #else
  4436. #define OutputDebugString  OutputDebugStringA
  4437. #endif // !UNICODE
  4438.  
  4439. WINBASEAPI
  4440. HRSRC
  4441. WINAPI
  4442. FindResourceA(
  4443.     HMODULE hModule,
  4444.     LPCSTR lpName,
  4445.     LPCSTR lpType
  4446.     );
  4447. WINBASEAPI
  4448. HRSRC
  4449. WINAPI
  4450. FindResourceW(
  4451.     HMODULE hModule,
  4452.     LPCWSTR lpName,
  4453.     LPCWSTR lpType
  4454.     );
  4455. #ifdef UNICODE
  4456. #define FindResource  FindResourceW
  4457. #else
  4458. #define FindResource  FindResourceA
  4459. #endif // !UNICODE
  4460.  
  4461. WINBASEAPI
  4462. HRSRC
  4463. WINAPI
  4464. FindResourceExA(
  4465.     HMODULE hModule,
  4466.     LPCSTR lpType,
  4467.     LPCSTR lpName,
  4468.     WORD    wLanguage
  4469.     );
  4470. WINBASEAPI
  4471. HRSRC
  4472. WINAPI
  4473. FindResourceExW(
  4474.     HMODULE hModule,
  4475.     LPCWSTR lpType,
  4476.     LPCWSTR lpName,
  4477.     WORD    wLanguage
  4478.     );
  4479. #ifdef UNICODE
  4480. #define FindResourceEx  FindResourceExW
  4481. #else
  4482. #define FindResourceEx  FindResourceExA
  4483. #endif // !UNICODE
  4484.  
  4485. #ifdef STRICT
  4486. typedef BOOL (CALLBACK* ENUMRESTYPEPROC)(HMODULE hModule, LPTSTR lpType,
  4487.         LONG lParam);
  4488. typedef BOOL (CALLBACK* ENUMRESNAMEPROC)(HMODULE hModule, LPCTSTR lpType,
  4489.         LPTSTR lpName, LONG lParam);
  4490. typedef BOOL (CALLBACK* ENUMRESLANGPROC)(HMODULE hModule, LPCTSTR lpType,
  4491.         LPCTSTR lpName, WORD  wLanguage, LONG lParam);
  4492. #else
  4493. typedef FARPROC ENUMRESTYPEPROC;
  4494. typedef FARPROC ENUMRESNAMEPROC;
  4495. typedef FARPROC ENUMRESLANGPROC;
  4496. #endif
  4497.  
  4498. WINBASEAPI
  4499. BOOL
  4500. WINAPI
  4501. EnumResourceTypesA(
  4502.     HMODULE hModule,
  4503.     ENUMRESTYPEPROC lpEnumFunc,
  4504.     LONG lParam
  4505.     );
  4506. WINBASEAPI
  4507. BOOL
  4508. WINAPI
  4509. EnumResourceTypesW(
  4510.     HMODULE hModule,
  4511.     ENUMRESTYPEPROC lpEnumFunc,
  4512.     LONG lParam
  4513.     );
  4514. #ifdef UNICODE
  4515. #define EnumResourceTypes  EnumResourceTypesW
  4516. #else
  4517. #define EnumResourceTypes  EnumResourceTypesA
  4518. #endif // !UNICODE
  4519.  
  4520.  
  4521. WINBASEAPI
  4522. BOOL
  4523. WINAPI
  4524. EnumResourceNamesA(
  4525.     HMODULE hModule,
  4526.     LPCSTR lpType,
  4527.     ENUMRESNAMEPROC lpEnumFunc,
  4528.     LONG lParam
  4529.     );
  4530. WINBASEAPI
  4531. BOOL
  4532. WINAPI
  4533. EnumResourceNamesW(
  4534.     HMODULE hModule,
  4535.     LPCWSTR lpType,
  4536.     ENUMRESNAMEPROC lpEnumFunc,
  4537.     LONG lParam
  4538.     );
  4539. #ifdef UNICODE
  4540. #define EnumResourceNames  EnumResourceNamesW
  4541. #else
  4542. #define EnumResourceNames  EnumResourceNamesA
  4543. #endif // !UNICODE
  4544.  
  4545. WINBASEAPI
  4546. BOOL
  4547. WINAPI
  4548. EnumResourceLanguagesA(
  4549.     HMODULE hModule,
  4550.     LPCSTR lpType,
  4551.     LPCSTR lpName,
  4552.     ENUMRESLANGPROC lpEnumFunc,
  4553.     LONG lParam
  4554.     );
  4555. WINBASEAPI
  4556. BOOL
  4557. WINAPI
  4558. EnumResourceLanguagesW(
  4559.     HMODULE hModule,
  4560.     LPCWSTR lpType,
  4561.     LPCWSTR lpName,
  4562.     ENUMRESLANGPROC lpEnumFunc,
  4563.     LONG lParam
  4564.     );
  4565. #ifdef UNICODE
  4566. #define EnumResourceLanguages  EnumResourceLanguagesW
  4567. #else
  4568. #define EnumResourceLanguages  EnumResourceLanguagesA
  4569. #endif // !UNICODE
  4570.  
  4571. WINBASEAPI
  4572. HANDLE
  4573. WINAPI
  4574. BeginUpdateResourceA(
  4575.     LPCSTR pFileName,
  4576.     BOOL bDeleteExistingResources
  4577.     );
  4578. WINBASEAPI
  4579. HANDLE
  4580. WINAPI
  4581. BeginUpdateResourceW(
  4582.     LPCWSTR pFileName,
  4583.     BOOL bDeleteExistingResources
  4584.     );
  4585. #ifdef UNICODE
  4586. #define BeginUpdateResource  BeginUpdateResourceW
  4587. #else
  4588. #define BeginUpdateResource  BeginUpdateResourceA
  4589. #endif // !UNICODE
  4590.  
  4591. WINBASEAPI
  4592. BOOL
  4593. WINAPI
  4594. UpdateResourceA(
  4595.     HANDLE      hUpdate,
  4596.     LPCSTR     lpType,
  4597.     LPCSTR     lpName,
  4598.     WORD        wLanguage,
  4599.     LPVOID      lpData,
  4600.     DWORD       cbData
  4601.     );
  4602. WINBASEAPI
  4603. BOOL
  4604. WINAPI
  4605. UpdateResourceW(
  4606.     HANDLE      hUpdate,
  4607.     LPCWSTR     lpType,
  4608.     LPCWSTR     lpName,
  4609.     WORD        wLanguage,
  4610.     LPVOID      lpData,
  4611.     DWORD       cbData
  4612.     );
  4613. #ifdef UNICODE
  4614. #define UpdateResource  UpdateResourceW
  4615. #else
  4616. #define UpdateResource  UpdateResourceA
  4617. #endif // !UNICODE
  4618.  
  4619. WINBASEAPI
  4620. BOOL
  4621. WINAPI
  4622. EndUpdateResourceA(
  4623.     HANDLE      hUpdate,
  4624.     BOOL        fDiscard
  4625.     );
  4626. WINBASEAPI
  4627. BOOL
  4628. WINAPI
  4629. EndUpdateResourceW(
  4630.     HANDLE      hUpdate,
  4631.     BOOL        fDiscard
  4632.     );
  4633. #ifdef UNICODE
  4634. #define EndUpdateResource  EndUpdateResourceW
  4635. #else
  4636. #define EndUpdateResource  EndUpdateResourceA
  4637. #endif // !UNICODE
  4638.  
  4639. WINBASEAPI
  4640. ATOM
  4641. WINAPI
  4642. GlobalAddAtomA(
  4643.     LPCSTR lpString
  4644.     );
  4645. WINBASEAPI
  4646. ATOM
  4647. WINAPI
  4648. GlobalAddAtomW(
  4649.     LPCWSTR lpString
  4650.     );
  4651. #ifdef UNICODE
  4652. #define GlobalAddAtom  GlobalAddAtomW
  4653. #else
  4654. #define GlobalAddAtom  GlobalAddAtomA
  4655. #endif // !UNICODE
  4656.  
  4657. WINBASEAPI
  4658. ATOM
  4659. WINAPI
  4660. GlobalFindAtomA(
  4661.     LPCSTR lpString
  4662.     );
  4663. WINBASEAPI
  4664. ATOM
  4665. WINAPI
  4666. GlobalFindAtomW(
  4667.     LPCWSTR lpString
  4668.     );
  4669. #ifdef UNICODE
  4670. #define GlobalFindAtom  GlobalFindAtomW
  4671. #else
  4672. #define GlobalFindAtom  GlobalFindAtomA
  4673. #endif // !UNICODE
  4674.  
  4675. WINBASEAPI
  4676. UINT
  4677. WINAPI
  4678. GlobalGetAtomNameA(
  4679.     ATOM nAtom,
  4680.     LPSTR lpBuffer,
  4681.     int nSize
  4682.     );
  4683. WINBASEAPI
  4684. UINT
  4685. WINAPI
  4686. GlobalGetAtomNameW(
  4687.     ATOM nAtom,
  4688.     LPWSTR lpBuffer,
  4689.     int nSize
  4690.     );
  4691. #ifdef UNICODE
  4692. #define GlobalGetAtomName  GlobalGetAtomNameW
  4693. #else
  4694. #define GlobalGetAtomName  GlobalGetAtomNameA
  4695. #endif // !UNICODE
  4696.  
  4697. WINBASEAPI
  4698. ATOM
  4699. WINAPI
  4700. AddAtomA(
  4701.     LPCSTR lpString
  4702.     );
  4703. WINBASEAPI
  4704. ATOM
  4705. WINAPI
  4706. AddAtomW(
  4707.     LPCWSTR lpString
  4708.     );
  4709. #ifdef UNICODE
  4710. #define AddAtom  AddAtomW
  4711. #else
  4712. #define AddAtom  AddAtomA
  4713. #endif // !UNICODE
  4714.  
  4715. WINBASEAPI
  4716. ATOM
  4717. WINAPI
  4718. FindAtomA(
  4719.     LPCSTR lpString
  4720.     );
  4721. WINBASEAPI
  4722. ATOM
  4723. WINAPI
  4724. FindAtomW(
  4725.     LPCWSTR lpString
  4726.     );
  4727. #ifdef UNICODE
  4728. #define FindAtom  FindAtomW
  4729. #else
  4730. #define FindAtom  FindAtomA
  4731. #endif // !UNICODE
  4732.  
  4733. WINBASEAPI
  4734. UINT
  4735. WINAPI
  4736. GetAtomNameA(
  4737.     ATOM nAtom,
  4738.     LPSTR lpBuffer,
  4739.     int nSize
  4740.     );
  4741. WINBASEAPI
  4742. UINT
  4743. WINAPI
  4744. GetAtomNameW(
  4745.     ATOM nAtom,
  4746.     LPWSTR lpBuffer,
  4747.     int nSize
  4748.     );
  4749. #ifdef UNICODE
  4750. #define GetAtomName  GetAtomNameW
  4751. #else
  4752. #define GetAtomName  GetAtomNameA
  4753. #endif // !UNICODE
  4754.  
  4755. WINBASEAPI
  4756. UINT
  4757. WINAPI
  4758. GetProfileIntA(
  4759.     LPCSTR lpAppName,
  4760.     LPCSTR lpKeyName,
  4761.     INT nDefault
  4762.     );
  4763. WINBASEAPI
  4764. UINT
  4765. WINAPI
  4766. GetProfileIntW(
  4767.     LPCWSTR lpAppName,
  4768.     LPCWSTR lpKeyName,
  4769.     INT nDefault
  4770.     );
  4771. #ifdef UNICODE
  4772. #define GetProfileInt  GetProfileIntW
  4773. #else
  4774. #define GetProfileInt  GetProfileIntA
  4775. #endif // !UNICODE
  4776.  
  4777. WINBASEAPI
  4778. DWORD
  4779. WINAPI
  4780. GetProfileStringA(
  4781.     LPCSTR lpAppName,
  4782.     LPCSTR lpKeyName,
  4783.     LPCSTR lpDefault,
  4784.     LPSTR lpReturnedString,
  4785.     DWORD nSize
  4786.     );
  4787. WINBASEAPI
  4788. DWORD
  4789. WINAPI
  4790. GetProfileStringW(
  4791.     LPCWSTR lpAppName,
  4792.     LPCWSTR lpKeyName,
  4793.     LPCWSTR lpDefault,
  4794.     LPWSTR lpReturnedString,
  4795.     DWORD nSize
  4796.     );
  4797. #ifdef UNICODE
  4798. #define GetProfileString  GetProfileStringW
  4799. #else
  4800. #define GetProfileString  GetProfileStringA
  4801. #endif // !UNICODE
  4802.  
  4803. WINBASEAPI
  4804. BOOL
  4805. WINAPI
  4806. WriteProfileStringA(
  4807.     LPCSTR lpAppName,
  4808.     LPCSTR lpKeyName,
  4809.     LPCSTR lpString
  4810.     );
  4811. WINBASEAPI
  4812. BOOL
  4813. WINAPI
  4814. WriteProfileStringW(
  4815.     LPCWSTR lpAppName,
  4816.     LPCWSTR lpKeyName,
  4817.     LPCWSTR lpString
  4818.     );
  4819. #ifdef UNICODE
  4820. #define WriteProfileString  WriteProfileStringW
  4821. #else
  4822. #define WriteProfileString  WriteProfileStringA
  4823. #endif // !UNICODE
  4824.  
  4825. WINBASEAPI
  4826. DWORD
  4827. WINAPI
  4828. GetProfileSectionA(
  4829.     LPCSTR lpAppName,
  4830.     LPSTR lpReturnedString,
  4831.     DWORD nSize
  4832.     );
  4833. WINBASEAPI
  4834. DWORD
  4835. WINAPI
  4836. GetProfileSectionW(
  4837.     LPCWSTR lpAppName,
  4838.     LPWSTR lpReturnedString,
  4839.     DWORD nSize
  4840.     );
  4841. #ifdef UNICODE
  4842. #define GetProfileSection  GetProfileSectionW
  4843. #else
  4844. #define GetProfileSection  GetProfileSectionA
  4845. #endif // !UNICODE
  4846.  
  4847. WINBASEAPI
  4848. BOOL
  4849. WINAPI
  4850. WriteProfileSectionA(
  4851.     LPCSTR lpAppName,
  4852.     LPCSTR lpString
  4853.     );
  4854. WINBASEAPI
  4855. BOOL
  4856. WINAPI
  4857. WriteProfileSectionW(
  4858.     LPCWSTR lpAppName,
  4859.     LPCWSTR lpString
  4860.     );
  4861. #ifdef UNICODE
  4862. #define WriteProfileSection  WriteProfileSectionW
  4863. #else
  4864. #define WriteProfileSection  WriteProfileSectionA
  4865. #endif // !UNICODE
  4866.  
  4867. WINBASEAPI
  4868. UINT
  4869. WINAPI
  4870. GetPrivateProfileIntA(
  4871.     LPCSTR lpAppName,
  4872.     LPCSTR lpKeyName,
  4873.     INT nDefault,
  4874.     LPCSTR lpFileName
  4875.     );
  4876. WINBASEAPI
  4877. UINT
  4878. WINAPI
  4879. GetPrivateProfileIntW(
  4880.     LPCWSTR lpAppName,
  4881.     LPCWSTR lpKeyName,
  4882.     INT nDefault,
  4883.     LPCWSTR lpFileName
  4884.     );
  4885. #ifdef UNICODE
  4886. #define GetPrivateProfileInt  GetPrivateProfileIntW
  4887. #else
  4888. #define GetPrivateProfileInt  GetPrivateProfileIntA
  4889. #endif // !UNICODE
  4890.  
  4891. WINBASEAPI
  4892. DWORD
  4893. WINAPI
  4894. GetPrivateProfileStringA(
  4895.     LPCSTR lpAppName,
  4896.     LPCSTR lpKeyName,
  4897.     LPCSTR lpDefault,
  4898.     LPSTR lpReturnedString,
  4899.     DWORD nSize,
  4900.     LPCSTR lpFileName
  4901.     );
  4902. WINBASEAPI
  4903. DWORD
  4904. WINAPI
  4905. GetPrivateProfileStringW(
  4906.     LPCWSTR lpAppName,
  4907.     LPCWSTR lpKeyName,
  4908.     LPCWSTR lpDefault,
  4909.     LPWSTR lpReturnedString,
  4910.     DWORD nSize,
  4911.     LPCWSTR lpFileName
  4912.     );
  4913. #ifdef UNICODE
  4914. #define GetPrivateProfileString  GetPrivateProfileStringW
  4915. #else
  4916. #define GetPrivateProfileString  GetPrivateProfileStringA
  4917. #endif // !UNICODE
  4918.  
  4919. WINBASEAPI
  4920. BOOL
  4921. WINAPI
  4922. WritePrivateProfileStringA(
  4923.     LPCSTR lpAppName,
  4924.     LPCSTR lpKeyName,
  4925.     LPCSTR lpString,
  4926.     LPCSTR lpFileName
  4927.     );
  4928. WINBASEAPI
  4929. BOOL
  4930. WINAPI
  4931. WritePrivateProfileStringW(
  4932.     LPCWSTR lpAppName,
  4933.     LPCWSTR lpKeyName,
  4934.     LPCWSTR lpString,
  4935.     LPCWSTR lpFileName
  4936.     );
  4937. #ifdef UNICODE
  4938. #define WritePrivateProfileString  WritePrivateProfileStringW
  4939. #else
  4940. #define WritePrivateProfileString  WritePrivateProfileStringA
  4941. #endif // !UNICODE
  4942.  
  4943. WINBASEAPI
  4944. DWORD
  4945. WINAPI
  4946. GetPrivateProfileSectionA(
  4947.     LPCSTR lpAppName,
  4948.     LPSTR lpReturnedString,
  4949.     DWORD nSize,
  4950.     LPCSTR lpFileName
  4951.     );
  4952. WINBASEAPI
  4953. DWORD
  4954. WINAPI
  4955. GetPrivateProfileSectionW(
  4956.     LPCWSTR lpAppName,
  4957.     LPWSTR lpReturnedString,
  4958.     DWORD nSize,
  4959.     LPCWSTR lpFileName
  4960.     );
  4961. #ifdef UNICODE
  4962. #define GetPrivateProfileSection  GetPrivateProfileSectionW
  4963. #else
  4964. #define GetPrivateProfileSection  GetPrivateProfileSectionA
  4965. #endif // !UNICODE
  4966.  
  4967. WINBASEAPI
  4968. BOOL
  4969. WINAPI
  4970. WritePrivateProfileSectionA(
  4971.     LPCSTR lpAppName,
  4972.     LPCSTR lpString,
  4973.     LPCSTR lpFileName
  4974.     );
  4975. WINBASEAPI
  4976. BOOL
  4977. WINAPI
  4978. WritePrivateProfileSectionW(
  4979.     LPCWSTR lpAppName,
  4980.     LPCWSTR lpString,
  4981.     LPCWSTR lpFileName
  4982.     );
  4983. #ifdef UNICODE
  4984. #define WritePrivateProfileSection  WritePrivateProfileSectionW
  4985. #else
  4986. #define WritePrivateProfileSection  WritePrivateProfileSectionA
  4987. #endif // !UNICODE
  4988.  
  4989.  
  4990. WINBASEAPI
  4991. DWORD
  4992. WINAPI
  4993. GetPrivateProfileSectionNamesA(
  4994.     LPSTR lpszReturnBuffer,
  4995.     DWORD nSize,
  4996.     LPCSTR lpFileName
  4997.     );
  4998. WINBASEAPI
  4999. DWORD
  5000. WINAPI
  5001. GetPrivateProfileSectionNamesW(
  5002.     LPWSTR lpszReturnBuffer,
  5003.     DWORD nSize,
  5004.     LPCWSTR lpFileName
  5005.     );
  5006. #ifdef UNICODE
  5007. #define GetPrivateProfileSectionNames  GetPrivateProfileSectionNamesW
  5008. #else
  5009. #define GetPrivateProfileSectionNames  GetPrivateProfileSectionNamesA
  5010. #endif // !UNICODE
  5011.  
  5012. WINBASEAPI
  5013. BOOL
  5014. WINAPI
  5015. GetPrivateProfileStructA(
  5016.     LPCSTR lpszSection,
  5017.     LPCSTR lpszKey,
  5018.     LPVOID   lpStruct,
  5019.     UINT     uSizeStruct,
  5020.     LPCSTR szFile
  5021.     );
  5022. WINBASEAPI
  5023. BOOL
  5024. WINAPI
  5025. GetPrivateProfileStructW(
  5026.     LPCWSTR lpszSection,
  5027.     LPCWSTR lpszKey,
  5028.     LPVOID   lpStruct,
  5029.     UINT     uSizeStruct,
  5030.     LPCWSTR szFile
  5031.     );
  5032. #ifdef UNICODE
  5033. #define GetPrivateProfileStruct  GetPrivateProfileStructW
  5034. #else
  5035. #define GetPrivateProfileStruct  GetPrivateProfileStructA
  5036. #endif // !UNICODE
  5037.  
  5038. WINBASEAPI
  5039. BOOL
  5040. WINAPI
  5041. WritePrivateProfileStructA(
  5042.     LPCSTR lpszSection,
  5043.     LPCSTR lpszKey,
  5044.     LPVOID   lpStruct,
  5045.     UINT     uSizeStruct,
  5046.     LPCSTR szFile
  5047.     );
  5048. WINBASEAPI
  5049. BOOL
  5050. WINAPI
  5051. WritePrivateProfileStructW(
  5052.     LPCWSTR lpszSection,
  5053.     LPCWSTR lpszKey,
  5054.     LPVOID   lpStruct,
  5055.     UINT     uSizeStruct,
  5056.     LPCWSTR szFile
  5057.     );
  5058. #ifdef UNICODE
  5059. #define WritePrivateProfileStruct  WritePrivateProfileStructW
  5060. #else
  5061. #define WritePrivateProfileStruct  WritePrivateProfileStructA
  5062. #endif // !UNICODE
  5063.  
  5064.  
  5065. WINBASEAPI
  5066. UINT
  5067. WINAPI
  5068. GetDriveTypeA(
  5069.     LPCSTR lpRootPathName
  5070.     );
  5071. WINBASEAPI
  5072. UINT
  5073. WINAPI
  5074. GetDriveTypeW(
  5075.     LPCWSTR lpRootPathName
  5076.     );
  5077. #ifdef UNICODE
  5078. #define GetDriveType  GetDriveTypeW
  5079. #else
  5080. #define GetDriveType  GetDriveTypeA
  5081. #endif // !UNICODE
  5082.  
  5083. WINBASEAPI
  5084. UINT
  5085. WINAPI
  5086. GetSystemDirectoryA(
  5087.     LPSTR lpBuffer,
  5088.     UINT uSize
  5089.     );
  5090. WINBASEAPI
  5091. UINT
  5092. WINAPI
  5093. GetSystemDirectoryW(
  5094.     LPWSTR lpBuffer,
  5095.     UINT uSize
  5096.     );
  5097. #ifdef UNICODE
  5098. #define GetSystemDirectory  GetSystemDirectoryW
  5099. #else
  5100. #define GetSystemDirectory  GetSystemDirectoryA
  5101. #endif // !UNICODE
  5102.  
  5103. WINBASEAPI
  5104. DWORD
  5105. WINAPI
  5106. GetTempPathA(
  5107.     DWORD nBufferLength,
  5108.     LPSTR lpBuffer
  5109.     );
  5110. WINBASEAPI
  5111. DWORD
  5112. WINAPI
  5113. GetTempPathW(
  5114.     DWORD nBufferLength,
  5115.     LPWSTR lpBuffer
  5116.     );
  5117. #ifdef UNICODE
  5118. #define GetTempPath  GetTempPathW
  5119. #else
  5120. #define GetTempPath  GetTempPathA
  5121. #endif // !UNICODE
  5122.  
  5123. WINBASEAPI
  5124. UINT
  5125. WINAPI
  5126. GetTempFileNameA(
  5127.     LPCSTR lpPathName,
  5128.     LPCSTR lpPrefixString,
  5129.     UINT uUnique,
  5130.     LPSTR lpTempFileName
  5131.     );
  5132. WINBASEAPI
  5133. UINT
  5134. WINAPI
  5135. GetTempFileNameW(
  5136.     LPCWSTR lpPathName,
  5137.     LPCWSTR lpPrefixString,
  5138.     UINT uUnique,
  5139.     LPWSTR lpTempFileName
  5140.     );
  5141. #ifdef UNICODE
  5142. #define GetTempFileName  GetTempFileNameW
  5143. #else
  5144. #define GetTempFileName  GetTempFileNameA
  5145. #endif // !UNICODE
  5146.  
  5147. WINBASEAPI
  5148. UINT
  5149. WINAPI
  5150. GetWindowsDirectoryA(
  5151.     LPSTR lpBuffer,
  5152.     UINT uSize
  5153.     );
  5154. WINBASEAPI
  5155. UINT
  5156. WINAPI
  5157. GetWindowsDirectoryW(
  5158.     LPWSTR lpBuffer,
  5159.     UINT uSize
  5160.     );
  5161. #ifdef UNICODE
  5162. #define GetWindowsDirectory  GetWindowsDirectoryW
  5163. #else
  5164. #define GetWindowsDirectory  GetWindowsDirectoryA
  5165. #endif // !UNICODE
  5166.  
  5167. WINBASEAPI
  5168. BOOL
  5169. WINAPI
  5170. SetCurrentDirectoryA(
  5171.     LPCSTR lpPathName
  5172.     );
  5173. WINBASEAPI
  5174. BOOL
  5175. WINAPI
  5176. SetCurrentDirectoryW(
  5177.     LPCWSTR lpPathName
  5178.     );
  5179. #ifdef UNICODE
  5180. #define SetCurrentDirectory  SetCurrentDirectoryW
  5181. #else
  5182. #define SetCurrentDirectory  SetCurrentDirectoryA
  5183. #endif // !UNICODE
  5184.  
  5185. WINBASEAPI
  5186. DWORD
  5187. WINAPI
  5188. GetCurrentDirectoryA(
  5189.     DWORD nBufferLength,
  5190.     LPSTR lpBuffer
  5191.     );
  5192. WINBASEAPI
  5193. DWORD
  5194. WINAPI
  5195. GetCurrentDirectoryW(
  5196.     DWORD nBufferLength,
  5197.     LPWSTR lpBuffer
  5198.     );
  5199. #ifdef UNICODE
  5200. #define GetCurrentDirectory  GetCurrentDirectoryW
  5201. #else
  5202. #define GetCurrentDirectory  GetCurrentDirectoryA
  5203. #endif // !UNICODE
  5204.  
  5205. WINBASEAPI
  5206. BOOL
  5207. WINAPI
  5208. GetDiskFreeSpaceA(
  5209.     LPCSTR lpRootPathName,
  5210.     LPDWORD lpSectorsPerCluster,
  5211.     LPDWORD lpBytesPerSector,
  5212.     LPDWORD lpNumberOfFreeClusters,
  5213.     LPDWORD lpTotalNumberOfClusters
  5214.     );
  5215. WINBASEAPI
  5216. BOOL
  5217. WINAPI
  5218. GetDiskFreeSpaceW(
  5219.     LPCWSTR lpRootPathName,
  5220.     LPDWORD lpSectorsPerCluster,
  5221.     LPDWORD lpBytesPerSector,
  5222.     LPDWORD lpNumberOfFreeClusters,
  5223.     LPDWORD lpTotalNumberOfClusters
  5224.     );
  5225. #ifdef UNICODE
  5226. #define GetDiskFreeSpace  GetDiskFreeSpaceW
  5227. #else
  5228. #define GetDiskFreeSpace  GetDiskFreeSpaceA
  5229. #endif // !UNICODE
  5230.  
  5231. WINBASEAPI
  5232. BOOL
  5233. WINAPI
  5234. GetDiskFreeSpaceExA(
  5235.     LPCSTR lpDirectoryName,
  5236.     PULARGE_INTEGER lpFreeBytesAvailableToCaller,
  5237.     PULARGE_INTEGER lpTotalNumberOfBytes,
  5238.     PULARGE_INTEGER lpTotalNumberOfFreeBytes
  5239.     );
  5240. WINBASEAPI
  5241. BOOL
  5242. WINAPI
  5243. GetDiskFreeSpaceExW(
  5244.     LPCWSTR lpDirectoryName,
  5245.     PULARGE_INTEGER lpFreeBytesAvailableToCaller,
  5246.     PULARGE_INTEGER lpTotalNumberOfBytes,
  5247.     PULARGE_INTEGER lpTotalNumberOfFreeBytes
  5248.     );
  5249. #ifdef UNICODE
  5250. #define GetDiskFreeSpaceEx  GetDiskFreeSpaceExW
  5251. #else
  5252. #define GetDiskFreeSpaceEx  GetDiskFreeSpaceExA
  5253. #endif // !UNICODE
  5254.  
  5255. WINBASEAPI
  5256. BOOL
  5257. WINAPI
  5258. CreateDirectoryA(
  5259.     LPCSTR lpPathName,
  5260.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  5261.     );
  5262. WINBASEAPI
  5263. BOOL
  5264. WINAPI
  5265. CreateDirectoryW(
  5266.     LPCWSTR lpPathName,
  5267.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  5268.     );
  5269. #ifdef UNICODE
  5270. #define CreateDirectory  CreateDirectoryW
  5271. #else
  5272. #define CreateDirectory  CreateDirectoryA
  5273. #endif // !UNICODE
  5274.  
  5275. WINBASEAPI
  5276. BOOL
  5277. WINAPI
  5278. CreateDirectoryExA(
  5279.     LPCSTR lpTemplateDirectory,
  5280.     LPCSTR lpNewDirectory,
  5281.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  5282.     );
  5283. WINBASEAPI
  5284. BOOL
  5285. WINAPI
  5286. CreateDirectoryExW(
  5287.     LPCWSTR lpTemplateDirectory,
  5288.     LPCWSTR lpNewDirectory,
  5289.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  5290.     );
  5291. #ifdef UNICODE
  5292. #define CreateDirectoryEx  CreateDirectoryExW
  5293. #else
  5294. #define CreateDirectoryEx  CreateDirectoryExA
  5295. #endif // !UNICODE
  5296.  
  5297. WINBASEAPI
  5298. BOOL
  5299. WINAPI
  5300. RemoveDirectoryA(
  5301.     LPCSTR lpPathName
  5302.     );
  5303. WINBASEAPI
  5304. BOOL
  5305. WINAPI
  5306. RemoveDirectoryW(
  5307.     LPCWSTR lpPathName
  5308.     );
  5309. #ifdef UNICODE
  5310. #define RemoveDirectory  RemoveDirectoryW
  5311. #else
  5312. #define RemoveDirectory  RemoveDirectoryA
  5313. #endif // !UNICODE
  5314.  
  5315. WINBASEAPI
  5316. DWORD
  5317. WINAPI
  5318. GetFullPathNameA(
  5319.     LPCSTR lpFileName,
  5320.     DWORD nBufferLength,
  5321.     LPSTR lpBuffer,
  5322.     LPSTR *lpFilePart
  5323.     );
  5324. WINBASEAPI
  5325. DWORD
  5326. WINAPI
  5327. GetFullPathNameW(
  5328.     LPCWSTR lpFileName,
  5329.     DWORD nBufferLength,
  5330.     LPWSTR lpBuffer,
  5331.     LPWSTR *lpFilePart
  5332.     );
  5333. #ifdef UNICODE
  5334. #define GetFullPathName  GetFullPathNameW
  5335. #else
  5336. #define GetFullPathName  GetFullPathNameA
  5337. #endif // !UNICODE
  5338.  
  5339.  
  5340. #define DDD_RAW_TARGET_PATH         0x00000001
  5341. #define DDD_REMOVE_DEFINITION       0x00000002
  5342. #define DDD_EXACT_MATCH_ON_REMOVE   0x00000004
  5343. #define DDD_NO_BROADCAST_SYSTEM     0x00000008
  5344.  
  5345. WINBASEAPI
  5346. BOOL
  5347. WINAPI
  5348. DefineDosDeviceA(
  5349.     DWORD dwFlags,
  5350.     LPCSTR lpDeviceName,
  5351.     LPCSTR lpTargetPath
  5352.     );
  5353. WINBASEAPI
  5354. BOOL
  5355. WINAPI
  5356. DefineDosDeviceW(
  5357.     DWORD dwFlags,
  5358.     LPCWSTR lpDeviceName,
  5359.     LPCWSTR lpTargetPath
  5360.     );
  5361. #ifdef UNICODE
  5362. #define DefineDosDevice  DefineDosDeviceW
  5363. #else
  5364. #define DefineDosDevice  DefineDosDeviceA
  5365. #endif // !UNICODE
  5366.  
  5367. WINBASEAPI
  5368. DWORD
  5369. WINAPI
  5370. QueryDosDeviceA(
  5371.     LPCSTR lpDeviceName,
  5372.     LPSTR lpTargetPath,
  5373.     DWORD ucchMax
  5374.     );
  5375. WINBASEAPI
  5376. DWORD
  5377. WINAPI
  5378. QueryDosDeviceW(
  5379.     LPCWSTR lpDeviceName,
  5380.     LPWSTR lpTargetPath,
  5381.     DWORD ucchMax
  5382.     );
  5383. #ifdef UNICODE
  5384. #define QueryDosDevice  QueryDosDeviceW
  5385. #else
  5386. #define QueryDosDevice  QueryDosDeviceA
  5387. #endif // !UNICODE
  5388.  
  5389. #define EXPAND_LOCAL_DRIVES
  5390.  
  5391. WINBASEAPI
  5392. HANDLE
  5393. WINAPI
  5394. CreateFileA(
  5395.     LPCSTR lpFileName,
  5396.     DWORD dwDesiredAccess,
  5397.     DWORD dwShareMode,
  5398.     LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  5399.     DWORD dwCreationDisposition,
  5400.     DWORD dwFlagsAndAttributes,
  5401.     HANDLE hTemplateFile
  5402.     );
  5403. WINBASEAPI
  5404. HANDLE
  5405. WINAPI
  5406. CreateFileW(
  5407.     LPCWSTR lpFileName,
  5408.     DWORD dwDesiredAccess,
  5409.     DWORD dwShareMode,
  5410.     LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  5411.     DWORD dwCreationDisposition,
  5412.     DWORD dwFlagsAndAttributes,
  5413.     HANDLE hTemplateFile
  5414.     );
  5415. #ifdef UNICODE
  5416. #define CreateFile  CreateFileW
  5417. #else
  5418. #define CreateFile  CreateFileA
  5419. #endif // !UNICODE
  5420.  
  5421. WINBASEAPI
  5422. BOOL
  5423. WINAPI
  5424. SetFileAttributesA(
  5425.     LPCSTR lpFileName,
  5426.     DWORD dwFileAttributes
  5427.     );
  5428. WINBASEAPI
  5429. BOOL
  5430. WINAPI
  5431. SetFileAttributesW(
  5432.     LPCWSTR lpFileName,
  5433.     DWORD dwFileAttributes
  5434.     );
  5435. #ifdef UNICODE
  5436. #define SetFileAttributes  SetFileAttributesW
  5437. #else
  5438. #define SetFileAttributes  SetFileAttributesA
  5439. #endif // !UNICODE
  5440.  
  5441. WINBASEAPI
  5442. DWORD
  5443. WINAPI
  5444. GetFileAttributesA(
  5445.     LPCSTR lpFileName
  5446.     );
  5447. WINBASEAPI
  5448. DWORD
  5449. WINAPI
  5450. GetFileAttributesW(
  5451.     LPCWSTR lpFileName
  5452.     );
  5453. #ifdef UNICODE
  5454. #define GetFileAttributes  GetFileAttributesW
  5455. #else
  5456. #define GetFileAttributes  GetFileAttributesA
  5457. #endif // !UNICODE
  5458.  
  5459. typedef enum _GET_FILEEX_INFO_LEVELS {
  5460.     GetFileExInfoStandard,
  5461.     GetFileExMaxInfoLevel
  5462. } GET_FILEEX_INFO_LEVELS;
  5463.  
  5464. WINBASEAPI
  5465. BOOL
  5466. WINAPI
  5467. GetFileAttributesExA(
  5468.     LPCSTR lpFileName,
  5469.     GET_FILEEX_INFO_LEVELS fInfoLevelId,
  5470.     LPVOID lpFileInformation
  5471.     );
  5472. WINBASEAPI
  5473. BOOL
  5474. WINAPI
  5475. GetFileAttributesExW(
  5476.     LPCWSTR lpFileName,
  5477.     GET_FILEEX_INFO_LEVELS fInfoLevelId,
  5478.     LPVOID lpFileInformation
  5479.     );
  5480. #ifdef UNICODE
  5481. #define GetFileAttributesEx  GetFileAttributesExW
  5482. #else
  5483. #define GetFileAttributesEx  GetFileAttributesExA
  5484. #endif // !UNICODE
  5485.  
  5486. WINBASEAPI
  5487. DWORD
  5488. WINAPI
  5489. GetCompressedFileSizeA(
  5490.     LPCSTR lpFileName,
  5491.     LPDWORD lpFileSizeHigh
  5492.     );
  5493. WINBASEAPI
  5494. DWORD
  5495. WINAPI
  5496. GetCompressedFileSizeW(
  5497.     LPCWSTR lpFileName,
  5498.     LPDWORD lpFileSizeHigh
  5499.     );
  5500. #ifdef UNICODE
  5501. #define GetCompressedFileSize  GetCompressedFileSizeW
  5502. #else
  5503. #define GetCompressedFileSize  GetCompressedFileSizeA
  5504. #endif // !UNICODE
  5505.  
  5506. WINBASEAPI
  5507. BOOL
  5508. WINAPI
  5509. DeleteFileA(
  5510.     LPCSTR lpFileName
  5511.     );
  5512. WINBASEAPI
  5513. BOOL
  5514. WINAPI
  5515. DeleteFileW(
  5516.     LPCWSTR lpFileName
  5517.     );
  5518. #ifdef UNICODE
  5519. #define DeleteFile  DeleteFileW
  5520. #else
  5521. #define DeleteFile  DeleteFileA
  5522. #endif // !UNICODE
  5523.  
  5524. #if(_WIN32_WINNT >= 0x0400)
  5525. typedef enum _FINDEX_INFO_LEVELS {
  5526.     FindExInfoStandard,
  5527.     FindExInfoMaxInfoLevel
  5528. } FINDEX_INFO_LEVELS;
  5529.  
  5530. typedef enum _FINDEX_SEARCH_OPS {
  5531.     FindExSearchNameMatch,
  5532.     FindExSearchLimitToDirectories,
  5533.     FindExSearchLimitToDevices,
  5534.     FindExSearchMaxSearchOp
  5535. } FINDEX_SEARCH_OPS;
  5536.  
  5537. #define FIND_FIRST_EX_CASE_SENSITIVE   0x00000001
  5538.  
  5539. WINBASEAPI
  5540. HANDLE
  5541. WINAPI
  5542. FindFirstFileExA(
  5543.     LPCSTR lpFileName,
  5544.     FINDEX_INFO_LEVELS fInfoLevelId,
  5545.     LPVOID lpFindFileData,
  5546.     FINDEX_SEARCH_OPS fSearchOp,
  5547.     LPVOID lpSearchFilter,
  5548.     DWORD dwAdditionalFlags
  5549.     );
  5550. WINBASEAPI
  5551. HANDLE
  5552. WINAPI
  5553. FindFirstFileExW(
  5554.     LPCWSTR lpFileName,
  5555.     FINDEX_INFO_LEVELS fInfoLevelId,
  5556.     LPVOID lpFindFileData,
  5557.     FINDEX_SEARCH_OPS fSearchOp,
  5558.     LPVOID lpSearchFilter,
  5559.     DWORD dwAdditionalFlags
  5560.     );
  5561. #ifdef UNICODE
  5562. #define FindFirstFileEx  FindFirstFileExW
  5563. #else
  5564. #define FindFirstFileEx  FindFirstFileExA
  5565. #endif // !UNICODE
  5566. #endif /* _WIN32_WINNT >= 0x0400 */
  5567.  
  5568. WINBASEAPI
  5569. HANDLE
  5570. WINAPI
  5571. FindFirstFileA(
  5572.     LPCSTR lpFileName,
  5573.     LPWIN32_FIND_DATAA lpFindFileData
  5574.     );
  5575. WINBASEAPI
  5576. HANDLE
  5577. WINAPI
  5578. FindFirstFileW(
  5579.     LPCWSTR lpFileName,
  5580.     LPWIN32_FIND_DATAW lpFindFileData
  5581.     );
  5582. #ifdef UNICODE
  5583. #define FindFirstFile  FindFirstFileW
  5584. #else
  5585. #define FindFirstFile  FindFirstFileA
  5586. #endif // !UNICODE
  5587.  
  5588. WINBASEAPI
  5589. BOOL
  5590. WINAPI
  5591. FindNextFileA(
  5592.     HANDLE hFindFile,
  5593.     LPWIN32_FIND_DATAA lpFindFileData
  5594.     );
  5595. WINBASEAPI
  5596. BOOL
  5597. WINAPI
  5598. FindNextFileW(
  5599.     HANDLE hFindFile,
  5600.     LPWIN32_FIND_DATAW lpFindFileData
  5601.     );
  5602. #ifdef UNICODE
  5603. #define FindNextFile  FindNextFileW
  5604. #else
  5605. #define FindNextFile  FindNextFileA
  5606. #endif // !UNICODE
  5607.  
  5608. WINBASEAPI
  5609. DWORD
  5610. WINAPI
  5611. SearchPathA(
  5612.     LPCSTR lpPath,
  5613.     LPCSTR lpFileName,
  5614.     LPCSTR lpExtension,
  5615.     DWORD nBufferLength,
  5616.     LPSTR lpBuffer,
  5617.     LPSTR *lpFilePart
  5618.     );
  5619. WINBASEAPI
  5620. DWORD
  5621. WINAPI
  5622. SearchPathW(
  5623.     LPCWSTR lpPath,
  5624.     LPCWSTR lpFileName,
  5625.     LPCWSTR lpExtension,
  5626.     DWORD nBufferLength,
  5627.     LPWSTR lpBuffer,
  5628.     LPWSTR *lpFilePart
  5629.     );
  5630. #ifdef UNICODE
  5631. #define SearchPath  SearchPathW
  5632. #else
  5633. #define SearchPath  SearchPathA
  5634. #endif // !UNICODE
  5635.  
  5636. WINBASEAPI
  5637. BOOL
  5638. WINAPI
  5639. CopyFileA(
  5640.     LPCSTR lpExistingFileName,
  5641.     LPCSTR lpNewFileName,
  5642.     BOOL bFailIfExists
  5643.     );
  5644. WINBASEAPI
  5645. BOOL
  5646. WINAPI
  5647. CopyFileW(
  5648.     LPCWSTR lpExistingFileName,
  5649.     LPCWSTR lpNewFileName,
  5650.     BOOL bFailIfExists
  5651.     );
  5652. #ifdef UNICODE
  5653. #define CopyFile  CopyFileW
  5654. #else
  5655. #define CopyFile  CopyFileA
  5656. #endif // !UNICODE
  5657.  
  5658. #if(_WIN32_WINNT >= 0x0400)
  5659. typedef
  5660. DWORD
  5661. (WINAPI *LPPROGRESS_ROUTINE)(
  5662.     LARGE_INTEGER TotalFileSize,
  5663.     LARGE_INTEGER TotalBytesTransferred,
  5664.     LARGE_INTEGER StreamSize,
  5665.     LARGE_INTEGER StreamBytesTransferred,
  5666.     DWORD dwStreamNumber,
  5667.     DWORD dwCallbackReason,
  5668.     HANDLE hSourceFile,
  5669.     HANDLE hDestinationFile,
  5670.     LPVOID lpData OPTIONAL
  5671.     );
  5672.  
  5673. WINBASEAPI
  5674. BOOL
  5675. WINAPI
  5676. CopyFileExA(
  5677.     LPCSTR lpExistingFileName,
  5678.     LPCSTR lpNewFileName,
  5679.     LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
  5680.     LPVOID lpData OPTIONAL,
  5681.     LPBOOL pbCancel OPTIONAL,
  5682.     DWORD dwCopyFlags
  5683.     );
  5684. WINBASEAPI
  5685. BOOL
  5686. WINAPI
  5687. CopyFileExW(
  5688.     LPCWSTR lpExistingFileName,
  5689.     LPCWSTR lpNewFileName,
  5690.     LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
  5691.     LPVOID lpData OPTIONAL,
  5692.     LPBOOL pbCancel OPTIONAL,
  5693.     DWORD dwCopyFlags
  5694.     );
  5695. #ifdef UNICODE
  5696. #define CopyFileEx  CopyFileExW
  5697. #else
  5698. #define CopyFileEx  CopyFileExA
  5699. #endif // !UNICODE
  5700. #endif /* _WIN32_WINNT >= 0x0400 */
  5701.  
  5702. WINBASEAPI
  5703. BOOL
  5704. WINAPI
  5705. MoveFileA(
  5706.     LPCSTR lpExistingFileName,
  5707.     LPCSTR lpNewFileName
  5708.     );
  5709. WINBASEAPI
  5710. BOOL
  5711. WINAPI
  5712. MoveFileW(
  5713.     LPCWSTR lpExistingFileName,
  5714.     LPCWSTR lpNewFileName
  5715.     );
  5716. #ifdef UNICODE
  5717. #define MoveFile  MoveFileW
  5718. #else
  5719. #define MoveFile  MoveFileA
  5720. #endif // !UNICODE
  5721.  
  5722. WINBASEAPI
  5723. BOOL
  5724. WINAPI
  5725. MoveFileExA(
  5726.     LPCSTR lpExistingFileName,
  5727.     LPCSTR lpNewFileName,
  5728.     DWORD dwFlags
  5729.     );
  5730. WINBASEAPI
  5731. BOOL
  5732. WINAPI
  5733. MoveFileExW(
  5734.     LPCWSTR lpExistingFileName,
  5735.     LPCWSTR lpNewFileName,
  5736.     DWORD dwFlags
  5737.     );
  5738. #ifdef UNICODE
  5739. #define MoveFileEx  MoveFileExW
  5740. #else
  5741. #define MoveFileEx  MoveFileExA
  5742. #endif // !UNICODE
  5743.  
  5744. #if (_WIN32_WINNT >= 0x0500)
  5745. WINBASEAPI
  5746. BOOL
  5747. WINAPI
  5748. MoveFileWithProgressA(
  5749.     LPCSTR lpExistingFileName,
  5750.     LPCSTR lpNewFileName,
  5751.     LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
  5752.     LPVOID lpData OPTIONAL,
  5753.     DWORD dwFlags
  5754.     );
  5755. WINBASEAPI
  5756. BOOL
  5757. WINAPI
  5758. MoveFileWithProgressW(
  5759.     LPCWSTR lpExistingFileName,
  5760.     LPCWSTR lpNewFileName,
  5761.     LPPROGRESS_ROUTINE lpProgressRoutine OPTIONAL,
  5762.     LPVOID lpData OPTIONAL,
  5763.     DWORD dwFlags
  5764.     );
  5765. #ifdef UNICODE
  5766. #define MoveFileWithProgress  MoveFileWithProgressW
  5767. #else
  5768. #define MoveFileWithProgress  MoveFileWithProgressA
  5769. #endif // !UNICODE
  5770. #endif // (_WIN32_WINNT >= 0x0500)
  5771.  
  5772. #define MOVEFILE_REPLACE_EXISTING       0x00000001
  5773. #define MOVEFILE_COPY_ALLOWED           0x00000002
  5774. #define MOVEFILE_DELAY_UNTIL_REBOOT     0x00000004
  5775. #define MOVEFILE_WRITE_THROUGH          0x00000008
  5776. #if (_WIN32_WINNT >= 0x0500)
  5777. #define MOVEFILE_CREATE_HARDLINK        0x00000010
  5778. #define MOVEFILE_FAIL_IF_NOT_TRACKABLE  0x00000020
  5779. #endif // (_WIN32_WINNT >= 0x0500)
  5780.  
  5781.  
  5782. #if (_WIN32_WINNT >= 0x0500)
  5783. //
  5784. // API call to create hard links.
  5785. //
  5786.  
  5787. WINBASEAPI
  5788. BOOL
  5789. WINAPI
  5790. CreateHardLinkA(
  5791.     LPCSTR lpFileName,
  5792.     LPCSTR lpExistingFileName,
  5793.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  5794.     );
  5795. WINBASEAPI
  5796. BOOL
  5797. WINAPI
  5798. CreateHardLinkW(
  5799.     LPCWSTR lpFileName,
  5800.     LPCWSTR lpExistingFileName,
  5801.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  5802.     );
  5803. #ifdef UNICODE
  5804. #define CreateHardLink  CreateHardLinkW
  5805. #else
  5806. #define CreateHardLink  CreateHardLinkA
  5807. #endif // !UNICODE
  5808.  
  5809. #endif // (_WIN32_WINNT >= 0x0500)
  5810.  
  5811.  
  5812. WINBASEAPI
  5813. HANDLE
  5814. WINAPI
  5815. CreateNamedPipeA(
  5816.     LPCSTR lpName,
  5817.     DWORD dwOpenMode,
  5818.     DWORD dwPipeMode,
  5819.     DWORD nMaxInstances,
  5820.     DWORD nOutBufferSize,
  5821.     DWORD nInBufferSize,
  5822.     DWORD nDefaultTimeOut,
  5823.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  5824.     );
  5825. WINBASEAPI
  5826. HANDLE
  5827. WINAPI
  5828. CreateNamedPipeW(
  5829.     LPCWSTR lpName,
  5830.     DWORD dwOpenMode,
  5831.     DWORD dwPipeMode,
  5832.     DWORD nMaxInstances,
  5833.     DWORD nOutBufferSize,
  5834.     DWORD nInBufferSize,
  5835.     DWORD nDefaultTimeOut,
  5836.     LPSECURITY_ATTRIBUTES lpSecurityAttributes
  5837.     );
  5838. #ifdef UNICODE
  5839. #define CreateNamedPipe  CreateNamedPipeW
  5840. #else
  5841. #define CreateNamedPipe  CreateNamedPipeA
  5842. #endif // !UNICODE
  5843.  
  5844. WINBASEAPI
  5845. BOOL
  5846. WINAPI
  5847. GetNamedPipeHandleStateA(
  5848.     HANDLE hNamedPipe,
  5849.     LPDWORD lpState,
  5850.     LPDWORD lpCurInstances,
  5851.     LPDWORD lpMaxCollectionCount,
  5852.     LPDWORD lpCollectDataTimeout,
  5853.     LPSTR lpUserName,
  5854.     DWORD nMaxUserNameSize
  5855.     );
  5856. WINBASEAPI
  5857. BOOL
  5858. WINAPI
  5859. GetNamedPipeHandleStateW(
  5860.     HANDLE hNamedPipe,
  5861.     LPDWORD lpState,
  5862.     LPDWORD lpCurInstances,
  5863.     LPDWORD lpMaxCollectionCount,
  5864.     LPDWORD lpCollectDataTimeout,
  5865.     LPWSTR lpUserName,
  5866.     DWORD nMaxUserNameSize
  5867.     );
  5868. #ifdef UNICODE
  5869. #define GetNamedPipeHandleState  GetNamedPipeHandleStateW
  5870. #else
  5871. #define GetNamedPipeHandleState  GetNamedPipeHandleStateA
  5872. #endif // !UNICODE
  5873.  
  5874. WINBASEAPI
  5875. BOOL
  5876. WINAPI
  5877. CallNamedPipeA(
  5878.     LPCSTR lpNamedPipeName,
  5879.     LPVOID lpInBuffer,
  5880.     DWORD nInBufferSize,
  5881.     LPVOID lpOutBuffer,
  5882.     DWORD nOutBufferSize,
  5883.     LPDWORD lpBytesRead,
  5884.     DWORD nTimeOut
  5885.     );
  5886. WINBASEAPI
  5887. BOOL
  5888. WINAPI
  5889. CallNamedPipeW(
  5890.     LPCWSTR lpNamedPipeName,
  5891.     LPVOID lpInBuffer,
  5892.     DWORD nInBufferSize,
  5893.     LPVOID lpOutBuffer,
  5894.     DWORD nOutBufferSize,
  5895.     LPDWORD lpBytesRead,
  5896.     DWORD nTimeOut
  5897.     );
  5898. #ifdef UNICODE
  5899. #define CallNamedPipe  CallNamedPipeW
  5900. #else
  5901. #define CallNamedPipe  CallNamedPipeA
  5902. #endif // !UNICODE
  5903.  
  5904. WINBASEAPI
  5905. BOOL
  5906. WINAPI
  5907. WaitNamedPipeA(
  5908.     LPCSTR lpNamedPipeName,
  5909.     DWORD nTimeOut
  5910.     );
  5911. WINBASEAPI
  5912. BOOL
  5913. WINAPI
  5914. WaitNamedPipeW(
  5915.     LPCWSTR lpNamedPipeName,
  5916.     DWORD nTimeOut
  5917.     );
  5918. #ifdef UNICODE
  5919. #define WaitNamedPipe  WaitNamedPipeW
  5920. #else
  5921. #define WaitNamedPipe  WaitNamedPipeA
  5922. #endif // !UNICODE
  5923.  
  5924. WINBASEAPI
  5925. BOOL
  5926. WINAPI
  5927. SetVolumeLabelA(
  5928.     LPCSTR lpRootPathName,
  5929.     LPCSTR lpVolumeName
  5930.     );
  5931. WINBASEAPI
  5932. BOOL
  5933. WINAPI
  5934. SetVolumeLabelW(
  5935.     LPCWSTR lpRootPathName,
  5936.     LPCWSTR lpVolumeName
  5937.     );
  5938. #ifdef UNICODE
  5939. #define SetVolumeLabel  SetVolumeLabelW
  5940. #else
  5941. #define SetVolumeLabel  SetVolumeLabelA
  5942. #endif // !UNICODE
  5943.  
  5944. WINBASEAPI
  5945. VOID
  5946. WINAPI
  5947. SetFileApisToOEM( VOID );
  5948.  
  5949. WINBASEAPI
  5950. VOID
  5951. WINAPI
  5952. SetFileApisToANSI( VOID );
  5953.  
  5954. WINBASEAPI
  5955. BOOL
  5956. WINAPI
  5957. AreFileApisANSI( VOID );
  5958.  
  5959. WINBASEAPI
  5960. BOOL
  5961. WINAPI
  5962. GetVolumeInformationA(
  5963.     LPCSTR lpRootPathName,
  5964.     LPSTR lpVolumeNameBuffer,
  5965.     DWORD nVolumeNameSize,
  5966.     LPDWORD lpVolumeSerialNumber,
  5967.     LPDWORD lpMaximumComponentLength,
  5968.     LPDWORD lpFileSystemFlags,
  5969.     LPSTR lpFileSystemNameBuffer,
  5970.     DWORD nFileSystemNameSize
  5971.     );
  5972. WINBASEAPI
  5973. BOOL
  5974. WINAPI
  5975. GetVolumeInformationW(
  5976.     LPCWSTR lpRootPathName,
  5977.     LPWSTR lpVolumeNameBuffer,
  5978.     DWORD nVolumeNameSize,
  5979.     LPDWORD lpVolumeSerialNumber,
  5980.     LPDWORD lpMaximumComponentLength,
  5981.     LPDWORD lpFileSystemFlags,
  5982.     LPWSTR lpFileSystemNameBuffer,
  5983.     DWORD nFileSystemNameSize
  5984.     );
  5985. #ifdef UNICODE
  5986. #define GetVolumeInformation  GetVolumeInformationW
  5987. #else
  5988. #define GetVolumeInformation  GetVolumeInformationA
  5989. #endif // !UNICODE
  5990.  
  5991. WINBASEAPI
  5992. BOOL
  5993. WINAPI
  5994. CancelIo(
  5995.     HANDLE hFile
  5996.     );
  5997.  
  5998. //
  5999. // Event logging APIs
  6000. //
  6001.  
  6002. WINADVAPI
  6003. BOOL
  6004. WINAPI
  6005. ClearEventLogA (
  6006.     HANDLE hEventLog,
  6007.     LPCSTR lpBackupFileName
  6008.     );
  6009. WINADVAPI
  6010. BOOL
  6011. WINAPI
  6012. ClearEventLogW (
  6013.     HANDLE hEventLog,
  6014.     LPCWSTR lpBackupFileName
  6015.     );
  6016. #ifdef UNICODE
  6017. #define ClearEventLog  ClearEventLogW
  6018. #else
  6019. #define ClearEventLog  ClearEventLogA
  6020. #endif // !UNICODE
  6021.  
  6022. WINADVAPI
  6023. BOOL
  6024. WINAPI
  6025. BackupEventLogA (
  6026.     HANDLE hEventLog,
  6027.     LPCSTR lpBackupFileName
  6028.     );
  6029. WINADVAPI
  6030. BOOL
  6031. WINAPI
  6032. BackupEventLogW (
  6033.     HANDLE hEventLog,
  6034.     LPCWSTR lpBackupFileName
  6035.     );
  6036. #ifdef UNICODE
  6037. #define BackupEventLog  BackupEventLogW
  6038. #else
  6039. #define BackupEventLog  BackupEventLogA
  6040. #endif // !UNICODE
  6041.  
  6042. WINADVAPI
  6043. BOOL
  6044. WINAPI
  6045. CloseEventLog (
  6046.     HANDLE hEventLog
  6047.     );
  6048.  
  6049. WINADVAPI
  6050. BOOL
  6051. WINAPI
  6052. DeregisterEventSource (
  6053.     HANDLE hEventLog
  6054.     );
  6055.  
  6056. WINADVAPI
  6057. BOOL
  6058. WINAPI
  6059. NotifyChangeEventLog(
  6060.     HANDLE  hEventLog,
  6061.     HANDLE  hEvent
  6062.     );
  6063.  
  6064. WINADVAPI
  6065. BOOL
  6066. WINAPI
  6067. GetNumberOfEventLogRecords (
  6068.     HANDLE hEventLog,
  6069.     PDWORD NumberOfRecords
  6070.     );
  6071.  
  6072. WINADVAPI
  6073. BOOL
  6074. WINAPI
  6075. GetOldestEventLogRecord (
  6076.     HANDLE hEventLog,
  6077.     PDWORD OldestRecord
  6078.     );
  6079.  
  6080. WINADVAPI
  6081. HANDLE
  6082. WINAPI
  6083. OpenEventLogA (
  6084.     LPCSTR lpUNCServerName,
  6085.     LPCSTR lpSourceName
  6086.     );
  6087. WINADVAPI
  6088. HANDLE
  6089. WINAPI
  6090. OpenEventLogW (
  6091.     LPCWSTR lpUNCServerName,
  6092.     LPCWSTR lpSourceName
  6093.     );
  6094. #ifdef UNICODE
  6095. #define OpenEventLog  OpenEventLogW
  6096. #else
  6097. #define OpenEventLog  OpenEventLogA
  6098. #endif // !UNICODE
  6099.  
  6100. WINADVAPI
  6101. HANDLE
  6102. WINAPI
  6103. RegisterEventSourceA (
  6104.     LPCSTR lpUNCServerName,
  6105.     LPCSTR lpSourceName
  6106.     );
  6107. WINADVAPI
  6108. HANDLE
  6109. WINAPI
  6110. RegisterEventSourceW (
  6111.     LPCWSTR lpUNCServerName,
  6112.     LPCWSTR lpSourceName
  6113.     );
  6114. #ifdef UNICODE
  6115. #define RegisterEventSource  RegisterEventSourceW
  6116. #else
  6117. #define RegisterEventSource  RegisterEventSourceA
  6118. #endif // !UNICODE
  6119.  
  6120. WINADVAPI
  6121. HANDLE
  6122. WINAPI
  6123. OpenBackupEventLogA (
  6124.     LPCSTR lpUNCServerName,
  6125.     LPCSTR lpFileName
  6126.     );
  6127. WINADVAPI
  6128. HANDLE
  6129. WINAPI
  6130. OpenBackupEventLogW (
  6131.     LPCWSTR lpUNCServerName,
  6132.     LPCWSTR lpFileName
  6133.     );
  6134. #ifdef UNICODE
  6135. #define OpenBackupEventLog  OpenBackupEventLogW
  6136. #else
  6137. #define OpenBackupEventLog  OpenBackupEventLogA
  6138. #endif // !UNICODE
  6139.  
  6140. WINADVAPI
  6141. BOOL
  6142. WINAPI
  6143. ReadEventLogA (
  6144.      HANDLE     hEventLog,
  6145.      DWORD      dwReadFlags,
  6146.      DWORD      dwRecordOffset,
  6147.      LPVOID     lpBuffer,
  6148.      DWORD      nNumberOfBytesToRead,
  6149.      DWORD      *pnBytesRead,
  6150.      DWORD      *pnMinNumberOfBytesNeeded
  6151.     );
  6152. WINADVAPI
  6153. BOOL
  6154. WINAPI
  6155. ReadEventLogW (
  6156.      HANDLE     hEventLog,
  6157.      DWORD      dwReadFlags,
  6158.      DWORD      dwRecordOffset,
  6159.      LPVOID     lpBuffer,
  6160.      DWORD      nNumberOfBytesToRead,
  6161.      DWORD      *pnBytesRead,
  6162.      DWORD      *pnMinNumberOfBytesNeeded
  6163.     );
  6164. #ifdef UNICODE
  6165. #define ReadEventLog  ReadEventLogW
  6166. #else
  6167. #define ReadEventLog  ReadEventLogA
  6168. #endif // !UNICODE
  6169.  
  6170. WINADVAPI
  6171. BOOL
  6172. WINAPI
  6173. ReportEventA (
  6174.      HANDLE     hEventLog,
  6175.      WORD       wType,
  6176.      WORD       wCategory,
  6177.      DWORD      dwEventID,
  6178.      PSID       lpUserSid,
  6179.      WORD       wNumStrings,
  6180.      DWORD      dwDataSize,
  6181.      LPCSTR   *lpStrings,
  6182.      LPVOID     lpRawData
  6183.     );
  6184. WINADVAPI
  6185. BOOL
  6186. WINAPI
  6187. ReportEventW (
  6188.      HANDLE     hEventLog,
  6189.      WORD       wType,
  6190.      WORD       wCategory,
  6191.      DWORD      dwEventID,
  6192.      PSID       lpUserSid,
  6193.      WORD       wNumStrings,
  6194.      DWORD      dwDataSize,
  6195.      LPCWSTR   *lpStrings,
  6196.      LPVOID     lpRawData
  6197.     );
  6198. #ifdef UNICODE
  6199. #define ReportEvent  ReportEventW
  6200. #else
  6201. #define ReportEvent  ReportEventA
  6202. #endif // !UNICODE
  6203.  
  6204. //
  6205. //
  6206. // Security APIs
  6207. //
  6208.  
  6209.  
  6210. WINADVAPI
  6211. BOOL
  6212. WINAPI
  6213. DuplicateToken(
  6214.     HANDLE ExistingTokenHandle,
  6215.     SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
  6216.     PHANDLE DuplicateTokenHandle
  6217.     );
  6218.  
  6219. WINADVAPI
  6220. BOOL
  6221. WINAPI
  6222. GetKernelObjectSecurity (
  6223.     HANDLE Handle,
  6224.     SECURITY_INFORMATION RequestedInformation,
  6225.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6226.     DWORD nLength,
  6227.     LPDWORD lpnLengthNeeded
  6228.     );
  6229.  
  6230. WINADVAPI
  6231. BOOL
  6232. WINAPI
  6233. ImpersonateNamedPipeClient(
  6234.     HANDLE hNamedPipe
  6235.     );
  6236.  
  6237. WINADVAPI
  6238. BOOL
  6239. WINAPI
  6240. ImpersonateSelf(
  6241.     SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
  6242.     );
  6243.  
  6244.  
  6245. WINADVAPI
  6246. BOOL
  6247. WINAPI
  6248. RevertToSelf (
  6249.     VOID
  6250.     );
  6251.  
  6252. WINADVAPI
  6253. BOOL
  6254. APIENTRY
  6255. SetThreadToken (
  6256.     PHANDLE Thread,
  6257.     HANDLE Token
  6258.     );
  6259.  
  6260. WINADVAPI
  6261. BOOL
  6262. WINAPI
  6263. AccessCheck (
  6264.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6265.     HANDLE ClientToken,
  6266.     DWORD DesiredAccess,
  6267.     PGENERIC_MAPPING GenericMapping,
  6268.     PPRIVILEGE_SET PrivilegeSet,
  6269.     LPDWORD PrivilegeSetLength,
  6270.     LPDWORD GrantedAccess,
  6271.     LPBOOL AccessStatus
  6272.     );
  6273.  
  6274. #if(_WIN32_WINNT >= 0x0500)
  6275. WINADVAPI
  6276. BOOL
  6277. WINAPI
  6278. AccessCheckByType (
  6279.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6280.     PSID PrincipalSelfSid,
  6281.     HANDLE ClientToken,
  6282.     DWORD DesiredAccess,
  6283.     POBJECT_TYPE_LIST ObjectTypeList,
  6284.     DWORD ObjectTypeListLength,
  6285.     PGENERIC_MAPPING GenericMapping,
  6286.     PPRIVILEGE_SET PrivilegeSet,
  6287.     LPDWORD PrivilegeSetLength,
  6288.     LPDWORD GrantedAccess,
  6289.     LPBOOL AccessStatus
  6290.     );
  6291.  
  6292. WINADVAPI
  6293. BOOL
  6294. WINAPI
  6295. AccessCheckByTypeResultList (
  6296.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6297.     PSID PrincipalSelfSid,
  6298.     HANDLE ClientToken,
  6299.     DWORD DesiredAccess,
  6300.     POBJECT_TYPE_LIST ObjectTypeList,
  6301.     DWORD ObjectTypeListLength,
  6302.     PGENERIC_MAPPING GenericMapping,
  6303.     PPRIVILEGE_SET PrivilegeSet,
  6304.     LPDWORD PrivilegeSetLength,
  6305.     LPDWORD GrantedAccessList,
  6306.     LPDWORD AccessStatusList
  6307.     );
  6308. #endif /* _WIN32_WINNT >=  0x0500 */
  6309.  
  6310.  
  6311. WINADVAPI
  6312. BOOL
  6313. WINAPI
  6314. OpenProcessToken (
  6315.     HANDLE ProcessHandle,
  6316.     DWORD DesiredAccess,
  6317.     PHANDLE TokenHandle
  6318.     );
  6319.  
  6320.  
  6321. WINADVAPI
  6322. BOOL
  6323. WINAPI
  6324. OpenThreadToken (
  6325.     HANDLE ThreadHandle,
  6326.     DWORD DesiredAccess,
  6327.     BOOL OpenAsSelf,
  6328.     PHANDLE TokenHandle
  6329.     );
  6330.  
  6331.  
  6332. WINADVAPI
  6333. BOOL
  6334. WINAPI
  6335. GetTokenInformation (
  6336.     HANDLE TokenHandle,
  6337.     TOKEN_INFORMATION_CLASS TokenInformationClass,
  6338.     LPVOID TokenInformation,
  6339.     DWORD TokenInformationLength,
  6340.     PDWORD ReturnLength
  6341.     );
  6342.  
  6343.  
  6344. WINADVAPI
  6345. BOOL
  6346. WINAPI
  6347. SetTokenInformation (
  6348.     HANDLE TokenHandle,
  6349.     TOKEN_INFORMATION_CLASS TokenInformationClass,
  6350.     LPVOID TokenInformation,
  6351.     DWORD TokenInformationLength
  6352.     );
  6353.  
  6354.  
  6355. WINADVAPI
  6356. BOOL
  6357. WINAPI
  6358. AdjustTokenPrivileges (
  6359.     HANDLE TokenHandle,
  6360.     BOOL DisableAllPrivileges,
  6361.     PTOKEN_PRIVILEGES NewState,
  6362.     DWORD BufferLength,
  6363.     PTOKEN_PRIVILEGES PreviousState,
  6364.     PDWORD ReturnLength
  6365.     );
  6366.  
  6367.  
  6368. WINADVAPI
  6369. BOOL
  6370. WINAPI
  6371. AdjustTokenGroups (
  6372.     HANDLE TokenHandle,
  6373.     BOOL ResetToDefault,
  6374.     PTOKEN_GROUPS NewState,
  6375.     DWORD BufferLength,
  6376.     PTOKEN_GROUPS PreviousState,
  6377.     PDWORD ReturnLength
  6378.     );
  6379.  
  6380.  
  6381. WINADVAPI
  6382. BOOL
  6383. WINAPI
  6384. PrivilegeCheck (
  6385.     HANDLE ClientToken,
  6386.     PPRIVILEGE_SET RequiredPrivileges,
  6387.     LPBOOL pfResult
  6388.     );
  6389.  
  6390.  
  6391. WINADVAPI
  6392. BOOL
  6393. WINAPI
  6394. AccessCheckAndAuditAlarmA (
  6395.     LPCSTR SubsystemName,
  6396.     LPVOID HandleId,
  6397.     LPSTR ObjectTypeName,
  6398.     LPSTR ObjectName,
  6399.     PSECURITY_DESCRIPTOR SecurityDescriptor,
  6400.     DWORD DesiredAccess,
  6401.     PGENERIC_MAPPING GenericMapping,
  6402.     BOOL ObjectCreation,
  6403.     LPDWORD GrantedAccess,
  6404.     LPBOOL AccessStatus,
  6405.     LPBOOL pfGenerateOnClose
  6406.     );
  6407. WINADVAPI
  6408. BOOL
  6409. WINAPI
  6410. AccessCheckAndAuditAlarmW (
  6411.     LPCWSTR SubsystemName,
  6412.     LPVOID HandleId,
  6413.     LPWSTR ObjectTypeName,
  6414.     LPWSTR ObjectName,
  6415.     PSECURITY_DESCRIPTOR SecurityDescriptor,
  6416.     DWORD DesiredAccess,
  6417.     PGENERIC_MAPPING GenericMapping,
  6418.     BOOL ObjectCreation,
  6419.     LPDWORD GrantedAccess,
  6420.     LPBOOL AccessStatus,
  6421.     LPBOOL pfGenerateOnClose
  6422.     );
  6423. #ifdef UNICODE
  6424. #define AccessCheckAndAuditAlarm  AccessCheckAndAuditAlarmW
  6425. #else
  6426. #define AccessCheckAndAuditAlarm  AccessCheckAndAuditAlarmA
  6427. #endif // !UNICODE
  6428.  
  6429. #if(_WIN32_WINNT >= 0x0500)
  6430.  
  6431. WINADVAPI
  6432. BOOL
  6433. WINAPI
  6434. AccessCheckByTypeAndAuditAlarmA (
  6435.     LPCSTR SubsystemName,
  6436.     LPVOID HandleId,
  6437.     LPCSTR ObjectTypeName,
  6438.     LPCSTR ObjectName,
  6439.     PSECURITY_DESCRIPTOR SecurityDescriptor,
  6440.     PSID PrincipalSelfSid,
  6441.     DWORD DesiredAccess,
  6442.     AUDIT_EVENT_TYPE AuditType,
  6443.     DWORD Flags,
  6444.     POBJECT_TYPE_LIST ObjectTypeList,
  6445.     DWORD ObjectTypeListLength,
  6446.     PGENERIC_MAPPING GenericMapping,
  6447.     BOOL ObjectCreation,
  6448.     LPDWORD GrantedAccess,
  6449.     LPBOOL AccessStatus,
  6450.     LPBOOL pfGenerateOnClose
  6451.     );
  6452. WINADVAPI
  6453. BOOL
  6454. WINAPI
  6455. AccessCheckByTypeAndAuditAlarmW (
  6456.     LPCWSTR SubsystemName,
  6457.     LPVOID HandleId,
  6458.     LPCWSTR ObjectTypeName,
  6459.     LPCWSTR ObjectName,
  6460.     PSECURITY_DESCRIPTOR SecurityDescriptor,
  6461.     PSID PrincipalSelfSid,
  6462.     DWORD DesiredAccess,
  6463.     AUDIT_EVENT_TYPE AuditType,
  6464.     DWORD Flags,
  6465.     POBJECT_TYPE_LIST ObjectTypeList,
  6466.     DWORD ObjectTypeListLength,
  6467.     PGENERIC_MAPPING GenericMapping,
  6468.     BOOL ObjectCreation,
  6469.     LPDWORD GrantedAccess,
  6470.     LPBOOL AccessStatus,
  6471.     LPBOOL pfGenerateOnClose
  6472.     );
  6473. #ifdef UNICODE
  6474. #define AccessCheckByTypeAndAuditAlarm  AccessCheckByTypeAndAuditAlarmW
  6475. #else
  6476. #define AccessCheckByTypeAndAuditAlarm  AccessCheckByTypeAndAuditAlarmA
  6477. #endif // !UNICODE
  6478.  
  6479. WINADVAPI
  6480. BOOL
  6481. WINAPI
  6482. AccessCheckByTypeResultListAndAuditAlarmA (
  6483.     LPCSTR SubsystemName,
  6484.     LPVOID HandleId,
  6485.     LPCSTR ObjectTypeName,
  6486.     LPCSTR ObjectName,
  6487.     PSECURITY_DESCRIPTOR SecurityDescriptor,
  6488.     PSID PrincipalSelfSid,
  6489.     DWORD DesiredAccess,
  6490.     AUDIT_EVENT_TYPE AuditType,
  6491.     DWORD Flags,
  6492.     POBJECT_TYPE_LIST ObjectTypeList,
  6493.     DWORD ObjectTypeListLength,
  6494.     PGENERIC_MAPPING GenericMapping,
  6495.     BOOL ObjectCreation,
  6496.     LPDWORD GrantedAccess,
  6497.     LPDWORD AccessStatusList,
  6498.     LPBOOL pfGenerateOnClose
  6499.     );
  6500. WINADVAPI
  6501. BOOL
  6502. WINAPI
  6503. AccessCheckByTypeResultListAndAuditAlarmW (
  6504.     LPCWSTR SubsystemName,
  6505.     LPVOID HandleId,
  6506.     LPCWSTR ObjectTypeName,
  6507.     LPCWSTR ObjectName,
  6508.     PSECURITY_DESCRIPTOR SecurityDescriptor,
  6509.     PSID PrincipalSelfSid,
  6510.     DWORD DesiredAccess,
  6511.     AUDIT_EVENT_TYPE AuditType,
  6512.     DWORD Flags,
  6513.     POBJECT_TYPE_LIST ObjectTypeList,
  6514.     DWORD ObjectTypeListLength,
  6515.     PGENERIC_MAPPING GenericMapping,
  6516.     BOOL ObjectCreation,
  6517.     LPDWORD GrantedAccess,
  6518.     LPDWORD AccessStatusList,
  6519.     LPBOOL pfGenerateOnClose
  6520.     );
  6521. #ifdef UNICODE
  6522. #define AccessCheckByTypeResultListAndAuditAlarm  AccessCheckByTypeResultListAndAuditAlarmW
  6523. #else
  6524. #define AccessCheckByTypeResultListAndAuditAlarm  AccessCheckByTypeResultListAndAuditAlarmA
  6525. #endif // !UNICODE
  6526.  
  6527. #endif //(_WIN32_WINNT >= 0x0500)
  6528.  
  6529.  
  6530. WINADVAPI
  6531. BOOL
  6532. WINAPI
  6533. ObjectOpenAuditAlarmA (
  6534.     LPCSTR SubsystemName,
  6535.     LPVOID HandleId,
  6536.     LPSTR ObjectTypeName,
  6537.     LPSTR ObjectName,
  6538.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6539.     HANDLE ClientToken,
  6540.     DWORD DesiredAccess,
  6541.     DWORD GrantedAccess,
  6542.     PPRIVILEGE_SET Privileges,
  6543.     BOOL ObjectCreation,
  6544.     BOOL AccessGranted,
  6545.     LPBOOL GenerateOnClose
  6546.     );
  6547. WINADVAPI
  6548. BOOL
  6549. WINAPI
  6550. ObjectOpenAuditAlarmW (
  6551.     LPCWSTR SubsystemName,
  6552.     LPVOID HandleId,
  6553.     LPWSTR ObjectTypeName,
  6554.     LPWSTR ObjectName,
  6555.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  6556.     HANDLE ClientToken,
  6557.     DWORD DesiredAccess,
  6558.     DWORD GrantedAccess,
  6559.     PPRIVILEGE_SET Privileges,
  6560.     BOOL ObjectCreation,
  6561.     BOOL AccessGranted,
  6562.     LPBOOL GenerateOnClose
  6563.     );
  6564. #ifdef UNICODE
  6565. #define ObjectOpenAuditAlarm  ObjectOpenAuditAlarmW
  6566. #else
  6567. #define ObjectOpenAuditAlarm  ObjectOpenAuditAlarmA
  6568. #endif // !UNICODE
  6569.  
  6570.  
  6571. WINADVAPI
  6572. BOOL
  6573. WINAPI
  6574. ObjectPrivilegeAuditAlarmA (
  6575.     LPCSTR SubsystemName,
  6576.     LPVOID HandleId,
  6577.     HANDLE ClientToken,
  6578.     DWORD DesiredAccess,
  6579.     PPRIVILEGE_SET Privileges,
  6580.     BOOL AccessGranted
  6581.     );
  6582. WINADVAPI
  6583. BOOL
  6584. WINAPI
  6585. ObjectPrivilegeAuditAlarmW (
  6586.     LPCWSTR SubsystemName,
  6587.     LPVOID HandleId,
  6588.     HANDLE ClientToken,
  6589.     DWORD DesiredAccess,
  6590.     PPRIVILEGE_SET Privileges,
  6591.     BOOL AccessGranted
  6592.     );
  6593. #ifdef UNICODE
  6594. #define ObjectPrivilegeAuditAlarm  ObjectPrivilegeAuditAlarmW
  6595. #else
  6596. #define ObjectPrivilegeAuditAlarm  ObjectPrivilegeAuditAlarmA
  6597. #endif // !UNICODE
  6598.  
  6599.  
  6600. WINADVAPI
  6601. BOOL
  6602. WINAPI
  6603. ObjectCloseAuditAlarmA (
  6604.     LPCSTR SubsystemName,
  6605.     LPVOID HandleId,
  6606.     BOOL GenerateOnClose
  6607.     );
  6608. WINADVAPI
  6609. BOOL
  6610. WINAPI
  6611. ObjectCloseAuditAlarmW (
  6612.     LPCWSTR SubsystemName,
  6613.     LPVOID HandleId,
  6614.     BOOL GenerateOnClose
  6615.     );
  6616. #ifdef UNICODE
  6617. #define ObjectCloseAuditAlarm  ObjectCloseAuditAlarmW
  6618. #else
  6619. #define ObjectCloseAuditAlarm  ObjectCloseAuditAlarmA
  6620. #endif // !UNICODE
  6621.  
  6622.  
  6623. WINADVAPI
  6624. BOOL
  6625. WINAPI
  6626. ObjectDeleteAuditAlarmA (
  6627.     LPCSTR SubsystemName,
  6628.     LPVOID HandleId,
  6629.     BOOL GenerateOnClose
  6630.     );
  6631. WINADVAPI
  6632. BOOL
  6633. WINAPI
  6634. ObjectDeleteAuditAlarmW (
  6635.     LPCWSTR SubsystemName,
  6636.     LPVOID HandleId,
  6637.     BOOL GenerateOnClose
  6638.     );
  6639. #ifdef UNICODE
  6640. #define ObjectDeleteAuditAlarm  ObjectDeleteAuditAlarmW
  6641. #else
  6642. #define ObjectDeleteAuditAlarm  ObjectDeleteAuditAlarmA
  6643. #endif // !UNICODE
  6644.  
  6645.  
  6646. WINADVAPI
  6647. BOOL
  6648. WINAPI
  6649. PrivilegedServiceAuditAlarmA (
  6650.     LPCSTR SubsystemName,
  6651.     LPCSTR ServiceName,
  6652.     HANDLE ClientToken,
  6653.     PPRIVILEGE_SET Privileges,
  6654.     BOOL AccessGranted
  6655.     );
  6656. WINADVAPI
  6657. BOOL
  6658. WINAPI
  6659. PrivilegedServiceAuditAlarmW (
  6660.     LPCWSTR SubsystemName,
  6661.     LPCWSTR ServiceName,
  6662.     HANDLE ClientToken,
  6663.     PPRIVILEGE_SET Privileges,
  6664.     BOOL AccessGranted
  6665.     );
  6666. #ifdef UNICODE
  6667. #define PrivilegedServiceAuditAlarm  PrivilegedServiceAuditAlarmW
  6668. #else
  6669. #define PrivilegedServiceAuditAlarm  PrivilegedServiceAuditAlarmA
  6670. #endif // !UNICODE
  6671.  
  6672.  
  6673. WINADVAPI
  6674. BOOL
  6675. WINAPI
  6676. IsValidSid (
  6677.     PSID pSid
  6678.     );
  6679.  
  6680.  
  6681. WINADVAPI
  6682. BOOL
  6683. WINAPI
  6684. EqualSid (
  6685.     PSID pSid1,
  6686.     PSID pSid2
  6687.     );
  6688.  
  6689.  
  6690. WINADVAPI
  6691. BOOL
  6692. WINAPI
  6693. EqualPrefixSid (
  6694.     PSID pSid1,
  6695.     PSID pSid2
  6696.     );
  6697.  
  6698.  
  6699. WINADVAPI
  6700. DWORD
  6701. WINAPI
  6702. GetSidLengthRequired (
  6703.     UCHAR nSubAuthorityCount
  6704.     );
  6705.  
  6706.  
  6707. WINADVAPI
  6708. BOOL
  6709. WINAPI
  6710. AllocateAndInitializeSid (
  6711.     PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
  6712.     BYTE nSubAuthorityCount,
  6713.     DWORD nSubAuthority0,
  6714.     DWORD nSubAuthority1,
  6715.     DWORD nSubAuthority2,
  6716.     DWORD nSubAuthority3,
  6717.     DWORD nSubAuthority4,
  6718.     DWORD nSubAuthority5,
  6719.     DWORD nSubAuthority6,
  6720.     DWORD nSubAuthority7,
  6721.     PSID *pSid
  6722.     );
  6723.  
  6724. WINADVAPI
  6725. PVOID
  6726. WINAPI
  6727. FreeSid(
  6728.     PSID pSid
  6729.     );
  6730.  
  6731. WINADVAPI
  6732. BOOL
  6733. WINAPI
  6734. InitializeSid (
  6735.     PSID Sid,
  6736.     PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
  6737.     BYTE nSubAuthorityCount
  6738.     );
  6739.  
  6740.  
  6741. WINADVAPI
  6742. PSID_IDENTIFIER_AUTHORITY
  6743. WINAPI
  6744. GetSidIdentifierAuthority (
  6745.     PSID pSid
  6746.     );
  6747.  
  6748.  
  6749. WINADVAPI
  6750. PDWORD
  6751. WINAPI
  6752. GetSidSubAuthority (
  6753.     PSID pSid,
  6754.     DWORD nSubAuthority
  6755.     );
  6756.  
  6757.  
  6758. WINADVAPI
  6759. PUCHAR
  6760. WINAPI
  6761. GetSidSubAuthorityCount (
  6762.     PSID pSid
  6763.     );
  6764.  
  6765.  
  6766. WINADVAPI
  6767. DWORD
  6768. WINAPI
  6769. GetLengthSid (
  6770.     PSID pSid
  6771.     );
  6772.  
  6773.  
  6774. WINADVAPI
  6775. BOOL
  6776. WINAPI
  6777. CopySid (
  6778.     DWORD nDestinationSidLength,
  6779.     PSID pDestinationSid,
  6780.     PSID pSourceSid
  6781.     );
  6782.  
  6783.  
  6784. WINADVAPI
  6785. BOOL
  6786. WINAPI
  6787. AreAllAccessesGranted (
  6788.     DWORD GrantedAccess,
  6789.     DWORD DesiredAccess
  6790.     );
  6791.  
  6792.  
  6793. WINADVAPI
  6794. BOOL
  6795. WINAPI
  6796. AreAnyAccessesGranted (
  6797.     DWORD GrantedAccess,
  6798.     DWORD DesiredAccess
  6799.     );
  6800.  
  6801.  
  6802. WINADVAPI
  6803. VOID
  6804. WINAPI
  6805. MapGenericMask (
  6806.     PDWORD AccessMask,
  6807.     PGENERIC_MAPPING GenericMapping
  6808.     );
  6809.  
  6810.  
  6811. WINADVAPI
  6812. BOOL
  6813. WINAPI
  6814. IsValidAcl (
  6815.     PACL pAcl
  6816.     );
  6817.  
  6818.  
  6819. WINADVAPI
  6820. BOOL
  6821. WINAPI
  6822. InitializeAcl (
  6823.     PACL pAcl,
  6824.     DWORD nAclLength,
  6825.     DWORD dwAclRevision
  6826.     );
  6827.  
  6828.  
  6829. WINADVAPI
  6830. BOOL
  6831. WINAPI
  6832. GetAclInformation (
  6833.     PACL pAcl,
  6834.     LPVOID pAclInformation,
  6835.     DWORD nAclInformationLength,
  6836.     ACL_INFORMATION_CLASS dwAclInformationClass
  6837.     );
  6838.  
  6839.  
  6840. WINADVAPI
  6841. BOOL
  6842. WINAPI
  6843. SetAclInformation (
  6844.     PACL pAcl,
  6845.     LPVOID pAclInformation,
  6846.     DWORD nAclInformationLength,
  6847.     ACL_INFORMATION_CLASS dwAclInformationClass
  6848.     );
  6849.  
  6850.  
  6851. WINADVAPI
  6852. BOOL
  6853. WINAPI
  6854. AddAce (
  6855.     PACL pAcl,
  6856.     DWORD dwAceRevision,
  6857.     DWORD dwStartingAceIndex,
  6858.     LPVOID pAceList,
  6859.     DWORD nAceListLength
  6860.     );
  6861.  
  6862.  
  6863. WINADVAPI
  6864. BOOL
  6865. WINAPI
  6866. DeleteAce (
  6867.     PACL pAcl,
  6868.     DWORD dwAceIndex
  6869.     );
  6870.  
  6871.  
  6872. WINADVAPI
  6873. BOOL
  6874. WINAPI
  6875. GetAce (
  6876.     PACL pAcl,
  6877.     DWORD dwAceIndex,
  6878.     LPVOID *pAce
  6879.     );
  6880.  
  6881.  
  6882. WINADVAPI
  6883. BOOL
  6884. WINAPI
  6885. AddAccessAllowedAce (
  6886.     PACL pAcl,
  6887.     DWORD dwAceRevision,
  6888.     DWORD AccessMask,
  6889.     PSID pSid
  6890.     );
  6891.  
  6892. #if(_WIN32_WINNT >= 0x0500)
  6893. WINADVAPI
  6894. BOOL
  6895. WINAPI
  6896. AddAccessAllowedAceEx (
  6897.     PACL pAcl,
  6898.     DWORD dwAceRevision,
  6899.     DWORD AceFlags,
  6900.     DWORD AccessMask,
  6901.     PSID pSid
  6902.     );
  6903. #endif /* _WIN32_WINNT >=  0x0500 */
  6904.  
  6905.  
  6906. WINADVAPI
  6907. BOOL
  6908. WINAPI
  6909. AddAccessDeniedAce (
  6910.     PACL pAcl,
  6911.     DWORD dwAceRevision,
  6912.     DWORD AccessMask,
  6913.     PSID pSid
  6914.     );
  6915.  
  6916. #if(_WIN32_WINNT >= 0x0500)
  6917. WINADVAPI
  6918. BOOL
  6919. WINAPI
  6920. AddAccessDeniedAceEx (
  6921.     PACL pAcl,
  6922.     DWORD dwAceRevision,
  6923.     DWORD AceFlags,
  6924.     DWORD AccessMask,
  6925.     PSID pSid
  6926.     );
  6927. #endif /* _WIN32_WINNT >=  0x0500 */
  6928.  
  6929. WINADVAPI
  6930. BOOL
  6931. WINAPI
  6932. AddAuditAccessAce(
  6933.     PACL pAcl,
  6934.     DWORD dwAceRevision,
  6935.     DWORD dwAccessMask,
  6936.     PSID pSid,
  6937.     BOOL bAuditSuccess,
  6938.     BOOL bAuditFailure
  6939.     );
  6940.  
  6941. #if(_WIN32_WINNT >= 0x0500)
  6942. WINADVAPI
  6943. BOOL
  6944. WINAPI
  6945. AddAuditAccessAceEx(
  6946.     PACL pAcl,
  6947.     DWORD dwAceRevision,
  6948.     DWORD AceFlags,
  6949.     DWORD dwAccessMask,
  6950.     PSID pSid,
  6951.     BOOL bAuditSuccess,
  6952.     BOOL bAuditFailure
  6953.     );
  6954.  
  6955. WINADVAPI
  6956. BOOL
  6957. WINAPI
  6958. AddAccessAllowedObjectAce (
  6959.     PACL pAcl,
  6960.     DWORD dwAceRevision,
  6961.     DWORD AceFlags,
  6962.     DWORD AccessMask,
  6963.     GUID *ObjectTypeGuid,
  6964.     GUID *InheritedObjectTypeGuid,
  6965.     PSID pSid
  6966.     );
  6967.  
  6968. WINADVAPI
  6969. BOOL
  6970. WINAPI
  6971. AddAccessDeniedObjectAce (
  6972.     PACL pAcl,
  6973.     DWORD dwAceRevision,
  6974.     DWORD AceFlags,
  6975.     DWORD AccessMask,
  6976.     GUID *ObjectTypeGuid,
  6977.     GUID *InheritedObjectTypeGuid,
  6978.     PSID pSid
  6979.     );
  6980.  
  6981. WINADVAPI
  6982. BOOL
  6983. WINAPI
  6984. AddAuditAccessObjectAce (
  6985.     PACL pAcl,
  6986.     DWORD dwAceRevision,
  6987.     DWORD AceFlags,
  6988.     DWORD AccessMask,
  6989.     GUID *ObjectTypeGuid,
  6990.     GUID *InheritedObjectTypeGuid,
  6991.     PSID pSid,
  6992.     BOOL bAuditSuccess,
  6993.     BOOL bAuditFailure
  6994.     );
  6995. #endif /* _WIN32_WINNT >=  0x0500 */
  6996.  
  6997. WINADVAPI
  6998. BOOL
  6999. WINAPI
  7000. FindFirstFreeAce (
  7001.     PACL pAcl,
  7002.     LPVOID *pAce
  7003.     );
  7004.  
  7005.  
  7006. WINADVAPI
  7007. BOOL
  7008. WINAPI
  7009. InitializeSecurityDescriptor (
  7010.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  7011.     DWORD dwRevision
  7012.     );
  7013.  
  7014.  
  7015. WINADVAPI
  7016. BOOL
  7017. WINAPI
  7018. IsValidSecurityDescriptor (
  7019.     PSECURITY_DESCRIPTOR pSecurityDescriptor
  7020.     );
  7021.  
  7022.  
  7023. WINADVAPI
  7024. DWORD
  7025. WINAPI
  7026. GetSecurityDescriptorLength (
  7027.     PSECURITY_DESCRIPTOR pSecurityDescriptor
  7028.     );
  7029.  
  7030.  
  7031. WINADVAPI
  7032. BOOL
  7033. WINAPI
  7034. GetSecurityDescriptorControl (
  7035.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  7036.     PSECURITY_DESCRIPTOR_CONTROL pControl,
  7037.     LPDWORD lpdwRevision
  7038.     );
  7039.  
  7040. #if(_WIN32_WINNT >= 0x0500)
  7041. WINADVAPI
  7042. BOOL
  7043. WINAPI
  7044. SetSecurityDescriptorControl (
  7045.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  7046.     SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,
  7047.     SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet
  7048.     );
  7049. #endif /* _WIN32_WINNT >=  0x0500 */
  7050.  
  7051. WINADVAPI
  7052. BOOL
  7053. WINAPI
  7054. SetSecurityDescriptorDacl (
  7055.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  7056.     BOOL bDaclPresent,
  7057.     PACL pDacl,
  7058.     BOOL bDaclDefaulted
  7059.     );
  7060.  
  7061.  
  7062. WINADVAPI
  7063. BOOL
  7064. WINAPI
  7065. GetSecurityDescriptorDacl (
  7066.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  7067.     LPBOOL lpbDaclPresent,
  7068.     PACL *pDacl,
  7069.     LPBOOL lpbDaclDefaulted
  7070.     );
  7071.  
  7072.  
  7073. WINADVAPI
  7074. BOOL
  7075. WINAPI
  7076. SetSecurityDescriptorSacl (
  7077.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  7078.     BOOL bSaclPresent,
  7079.     PACL pSacl,
  7080.     BOOL bSaclDefaulted
  7081.     );
  7082.  
  7083.  
  7084. WINADVAPI
  7085. BOOL
  7086. WINAPI
  7087. GetSecurityDescriptorSacl (
  7088.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  7089.     LPBOOL lpbSaclPresent,
  7090.     PACL *pSacl,
  7091.     LPBOOL lpbSaclDefaulted
  7092.     );
  7093.  
  7094.  
  7095. WINADVAPI
  7096. BOOL
  7097. WINAPI
  7098. SetSecurityDescriptorOwner (
  7099.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  7100.     PSID pOwner,
  7101.     BOOL bOwnerDefaulted
  7102.     );
  7103.  
  7104.  
  7105. WINADVAPI
  7106. BOOL
  7107. WINAPI
  7108. GetSecurityDescriptorOwner (
  7109.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  7110.     PSID *pOwner,
  7111.     LPBOOL lpbOwnerDefaulted
  7112.     );
  7113.  
  7114.  
  7115. WINADVAPI
  7116. BOOL
  7117. WINAPI
  7118. SetSecurityDescriptorGroup (
  7119.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  7120.     PSID pGroup,
  7121.     BOOL bGroupDefaulted
  7122.     );
  7123.  
  7124.  
  7125. WINADVAPI
  7126. BOOL
  7127. WINAPI
  7128. GetSecurityDescriptorGroup (
  7129.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  7130.     PSID *pGroup,
  7131.     LPBOOL lpbGroupDefaulted
  7132.     );
  7133.  
  7134.  
  7135. WINADVAPI
  7136. BOOL
  7137. WINAPI
  7138. CreatePrivateObjectSecurity (
  7139.     PSECURITY_DESCRIPTOR ParentDescriptor,
  7140.     PSECURITY_DESCRIPTOR CreatorDescriptor,
  7141.     PSECURITY_DESCRIPTOR * NewDescriptor,
  7142.     BOOL IsDirectoryObject,
  7143.     HANDLE Token,
  7144.     PGENERIC_MAPPING GenericMapping
  7145.     );
  7146.  
  7147. #if(_WIN32_WINNT >= 0x0500)
  7148. WINADVAPI
  7149. BOOL
  7150. WINAPI
  7151. ConvertToAutoInheritPrivateObjectSecurity(
  7152.     PSECURITY_DESCRIPTOR ParentDescriptor,
  7153.     PSECURITY_DESCRIPTOR CurrentSecurityDescriptor,
  7154.     PSECURITY_DESCRIPTOR *NewSecurityDescriptor,
  7155.     GUID *ObjectType,
  7156.     BOOLEAN IsDirectoryObject,
  7157.     PGENERIC_MAPPING GenericMapping
  7158.     );
  7159.  
  7160.  
  7161. WINADVAPI
  7162. BOOL
  7163. WINAPI
  7164. CreatePrivateObjectSecurityEx (
  7165.     PSECURITY_DESCRIPTOR ParentDescriptor,
  7166.     PSECURITY_DESCRIPTOR CreatorDescriptor,
  7167.     PSECURITY_DESCRIPTOR * NewDescriptor,
  7168.     GUID *ObjectType,
  7169.     BOOL IsContainerObject,
  7170.     ULONG AutoInheritFlags,
  7171.     HANDLE Token,
  7172.     PGENERIC_MAPPING GenericMapping
  7173.     );
  7174. #endif /* _WIN32_WINNT >=  0x0500 */
  7175.  
  7176. WINADVAPI
  7177. BOOL
  7178. WINAPI
  7179. SetPrivateObjectSecurity (
  7180.     SECURITY_INFORMATION SecurityInformation,
  7181.     PSECURITY_DESCRIPTOR ModificationDescriptor,
  7182.     PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
  7183.     PGENERIC_MAPPING GenericMapping,
  7184.     HANDLE Token
  7185.     );
  7186.  
  7187. #if(_WIN32_WINNT >= 0x0500)
  7188. WINADVAPI
  7189. BOOL
  7190. WINAPI
  7191. SetPrivateObjectSecurityEx (
  7192.     SECURITY_INFORMATION SecurityInformation,
  7193.     PSECURITY_DESCRIPTOR ModificationDescriptor,
  7194.     PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
  7195.     ULONG AutoInheritFlags,
  7196.     PGENERIC_MAPPING GenericMapping,
  7197.     HANDLE Token OPTIONAL
  7198.     );
  7199. #endif /* _WIN32_WINNT >=  0x0500 */
  7200.  
  7201. WINADVAPI
  7202. BOOL
  7203. WINAPI
  7204. GetPrivateObjectSecurity (
  7205.     PSECURITY_DESCRIPTOR ObjectDescriptor,
  7206.     SECURITY_INFORMATION SecurityInformation,
  7207.     PSECURITY_DESCRIPTOR ResultantDescriptor,
  7208.     DWORD DescriptorLength,
  7209.     PDWORD ReturnLength
  7210.     );
  7211.  
  7212.  
  7213. WINADVAPI
  7214. BOOL
  7215. WINAPI
  7216. DestroyPrivateObjectSecurity (
  7217.     PSECURITY_DESCRIPTOR * ObjectDescriptor
  7218.     );
  7219.  
  7220.  
  7221. WINADVAPI
  7222. BOOL
  7223. WINAPI
  7224. MakeSelfRelativeSD (
  7225.     PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
  7226.     PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
  7227.     LPDWORD lpdwBufferLength
  7228.     );
  7229.  
  7230.  
  7231. WINADVAPI
  7232. BOOL
  7233. WINAPI
  7234. MakeAbsoluteSD (
  7235.     PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
  7236.     PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
  7237.     LPDWORD lpdwAbsoluteSecurityDescriptorSize,
  7238.     PACL pDacl,
  7239.     LPDWORD lpdwDaclSize,
  7240.     PACL pSacl,
  7241.     LPDWORD lpdwSaclSize,
  7242.     PSID pOwner,
  7243.     LPDWORD lpdwOwnerSize,
  7244.     PSID pPrimaryGroup,
  7245.     LPDWORD lpdwPrimaryGroupSize
  7246.     );
  7247.  
  7248.  
  7249. WINADVAPI
  7250. BOOL
  7251. WINAPI
  7252. SetFileSecurityA (
  7253.     LPCSTR lpFileName,
  7254.     SECURITY_INFORMATION SecurityInformation,
  7255.     PSECURITY_DESCRIPTOR pSecurityDescriptor
  7256.     );
  7257. WINADVAPI
  7258. BOOL
  7259. WINAPI
  7260. SetFileSecurityW (
  7261.     LPCWSTR lpFileName,
  7262.     SECURITY_INFORMATION SecurityInformation,
  7263.     PSECURITY_DESCRIPTOR pSecurityDescriptor
  7264.     );
  7265. #ifdef UNICODE
  7266. #define SetFileSecurity  SetFileSecurityW
  7267. #else
  7268. #define SetFileSecurity  SetFileSecurityA
  7269. #endif // !UNICODE
  7270.  
  7271.  
  7272. WINADVAPI
  7273. BOOL
  7274. WINAPI
  7275. GetFileSecurityA (
  7276.     LPCSTR lpFileName,
  7277.     SECURITY_INFORMATION RequestedInformation,
  7278.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  7279.     DWORD nLength,
  7280.     LPDWORD lpnLengthNeeded
  7281.     );
  7282. WINADVAPI
  7283. BOOL
  7284. WINAPI
  7285. GetFileSecurityW (
  7286.     LPCWSTR lpFileName,
  7287.     SECURITY_INFORMATION RequestedInformation,
  7288.     PSECURITY_DESCRIPTOR pSecurityDescriptor,
  7289.     DWORD nLength,
  7290.     LPDWORD lpnLengthNeeded
  7291.     );
  7292. #ifdef UNICODE
  7293. #define GetFileSecurity  GetFileSecurityW
  7294. #else
  7295. #define GetFileSecurity  GetFileSecurityA
  7296. #endif // !UNICODE
  7297.  
  7298.  
  7299. WINADVAPI
  7300. BOOL
  7301. WINAPI
  7302. SetKernelObjectSecurity (
  7303.     HANDLE Handle,
  7304.     SECURITY_INFORMATION SecurityInformation,
  7305.     PSECURITY_DESCRIPTOR SecurityDescriptor
  7306.     );
  7307.  
  7308.  
  7309.  
  7310. WINBASEAPI
  7311. HANDLE
  7312. WINAPI
  7313. FindFirstChangeNotificationA(
  7314.     LPCSTR lpPathName,
  7315.     BOOL bWatchSubtree,
  7316.     DWORD dwNotifyFilter
  7317.     );
  7318. WINBASEAPI
  7319. HANDLE
  7320. WINAPI
  7321. FindFirstChangeNotificationW(
  7322.     LPCWSTR lpPathName,
  7323.     BOOL bWatchSubtree,
  7324.     DWORD dwNotifyFilter
  7325.     );
  7326. #ifdef UNICODE
  7327. #define FindFirstChangeNotification  FindFirstChangeNotificationW
  7328. #else
  7329. #define FindFirstChangeNotification  FindFirstChangeNotificationA
  7330. #endif // !UNICODE
  7331.  
  7332. WINBASEAPI
  7333. BOOL
  7334. WINAPI
  7335. FindNextChangeNotification(
  7336.     HANDLE hChangeHandle
  7337.     );
  7338.  
  7339. WINBASEAPI
  7340. BOOL
  7341. WINAPI
  7342. FindCloseChangeNotification(
  7343.     HANDLE hChangeHandle
  7344.     );
  7345.  
  7346. #if(_WIN32_WINNT >= 0x0400)
  7347. WINBASEAPI
  7348. BOOL
  7349. WINAPI
  7350. ReadDirectoryChangesW(
  7351.     HANDLE hDirectory,
  7352.     LPVOID lpBuffer,
  7353.     DWORD nBufferLength,
  7354.     BOOL bWatchSubtree,
  7355.     DWORD dwNotifyFilter,
  7356.     LPDWORD lpBytesReturned,
  7357.     LPOVERLAPPED lpOverlapped,
  7358.     LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
  7359.     );
  7360. #endif /* _WIN32_WINNT >= 0x0400 */
  7361.  
  7362. WINBASEAPI
  7363. BOOL
  7364. WINAPI
  7365. VirtualLock(
  7366.     LPVOID lpAddress,
  7367.     DWORD dwSize
  7368.     );
  7369.  
  7370. WINBASEAPI
  7371. BOOL
  7372. WINAPI
  7373. VirtualUnlock(
  7374.     LPVOID lpAddress,
  7375.     DWORD dwSize
  7376.     );
  7377.  
  7378. WINBASEAPI
  7379. LPVOID
  7380. WINAPI
  7381. MapViewOfFileEx(
  7382.     HANDLE hFileMappingObject,
  7383.     DWORD dwDesiredAccess,
  7384.     DWORD dwFileOffsetHigh,
  7385.     DWORD dwFileOffsetLow,
  7386.     DWORD dwNumberOfBytesToMap,
  7387.     LPVOID lpBaseAddress
  7388.     );
  7389.  
  7390. WINBASEAPI
  7391. BOOL
  7392. WINAPI
  7393. SetPriorityClass(
  7394.     HANDLE hProcess,
  7395.     DWORD dwPriorityClass
  7396.     );
  7397.  
  7398. WINBASEAPI
  7399. DWORD
  7400. WINAPI
  7401. GetPriorityClass(
  7402.     HANDLE hProcess
  7403.     );
  7404.  
  7405. WINBASEAPI
  7406. BOOL
  7407. WINAPI
  7408. IsBadReadPtr(
  7409.     CONST VOID *lp,
  7410.     UINT ucb
  7411.     );
  7412.  
  7413. WINBASEAPI
  7414. BOOL
  7415. WINAPI
  7416. IsBadWritePtr(
  7417.     LPVOID lp,
  7418.     UINT ucb
  7419.     );
  7420.  
  7421. WINBASEAPI
  7422. BOOL
  7423. WINAPI
  7424. IsBadHugeReadPtr(
  7425.     CONST VOID *lp,
  7426.     UINT ucb
  7427.     );
  7428.  
  7429. WINBASEAPI
  7430. BOOL
  7431. WINAPI
  7432. IsBadHugeWritePtr(
  7433.     LPVOID lp,
  7434.     UINT ucb
  7435.     );
  7436.  
  7437. WINBASEAPI
  7438. BOOL
  7439. WINAPI
  7440. IsBadCodePtr(
  7441.     FARPROC lpfn
  7442.     );
  7443.  
  7444. WINBASEAPI
  7445. BOOL
  7446. WINAPI
  7447. IsBadStringPtrA(
  7448.     LPCSTR lpsz,
  7449.     UINT ucchMax
  7450.     );
  7451. WINBASEAPI
  7452. BOOL
  7453. WINAPI
  7454. IsBadStringPtrW(
  7455.     LPCWSTR lpsz,
  7456.     UINT ucchMax
  7457.     );
  7458. #ifdef UNICODE
  7459. #define IsBadStringPtr  IsBadStringPtrW
  7460. #else
  7461. #define IsBadStringPtr  IsBadStringPtrA
  7462. #endif // !UNICODE
  7463.  
  7464. WINADVAPI
  7465. BOOL
  7466. WINAPI
  7467. LookupAccountSidA(
  7468.     LPCSTR lpSystemName,
  7469.     PSID Sid,
  7470.     LPSTR Name,
  7471.     LPDWORD cbName,
  7472.     LPSTR ReferencedDomainName,
  7473.     LPDWORD cbReferencedDomainName,
  7474.     PSID_NAME_USE peUse
  7475.     );
  7476. WINADVAPI
  7477. BOOL
  7478. WINAPI
  7479. LookupAccountSidW(
  7480.     LPCWSTR lpSystemName,
  7481.     PSID Sid,
  7482.     LPWSTR Name,
  7483.     LPDWORD cbName,
  7484.     LPWSTR ReferencedDomainName,
  7485.     LPDWORD cbReferencedDomainName,
  7486.     PSID_NAME_USE peUse
  7487.     );
  7488. #ifdef UNICODE
  7489. #define LookupAccountSid  LookupAccountSidW
  7490. #else
  7491. #define LookupAccountSid  LookupAccountSidA
  7492. #endif // !UNICODE
  7493.  
  7494. WINADVAPI
  7495. BOOL
  7496. WINAPI
  7497. LookupAccountNameA(
  7498.     LPCSTR lpSystemName,
  7499.     LPCSTR lpAccountName,
  7500.     PSID Sid,
  7501.     LPDWORD cbSid,
  7502.     LPSTR ReferencedDomainName,
  7503.     LPDWORD cbReferencedDomainName,
  7504.     PSID_NAME_USE peUse
  7505.     );
  7506. WINADVAPI
  7507. BOOL
  7508. WINAPI
  7509. LookupAccountNameW(
  7510.     LPCWSTR lpSystemName,
  7511.     LPCWSTR lpAccountName,
  7512.     PSID Sid,
  7513.     LPDWORD cbSid,
  7514.     LPWSTR ReferencedDomainName,
  7515.     LPDWORD cbReferencedDomainName,
  7516.     PSID_NAME_USE peUse
  7517.     );
  7518. #ifdef UNICODE
  7519. #define LookupAccountName  LookupAccountNameW
  7520. #else
  7521. #define LookupAccountName  LookupAccountNameA
  7522. #endif // !UNICODE
  7523.  
  7524. WINADVAPI
  7525. BOOL
  7526. WINAPI
  7527. LookupPrivilegeValueA(
  7528.     LPCSTR lpSystemName,
  7529.     LPCSTR lpName,
  7530.     PLUID   lpLuid
  7531.     );
  7532. WINADVAPI
  7533. BOOL
  7534. WINAPI
  7535. LookupPrivilegeValueW(
  7536.     LPCWSTR lpSystemName,
  7537.     LPCWSTR lpName,
  7538.     PLUID   lpLuid
  7539.     );
  7540. #ifdef UNICODE
  7541. #define LookupPrivilegeValue  LookupPrivilegeValueW
  7542. #else
  7543. #define LookupPrivilegeValue  LookupPrivilegeValueA
  7544. #endif // !UNICODE
  7545.  
  7546. WINADVAPI
  7547. BOOL
  7548. WINAPI
  7549. LookupPrivilegeNameA(
  7550.     LPCSTR lpSystemName,
  7551.     PLUID   lpLuid,
  7552.     LPSTR lpName,
  7553.     LPDWORD cbName
  7554.     );
  7555. WINADVAPI
  7556. BOOL
  7557. WINAPI
  7558. LookupPrivilegeNameW(
  7559.     LPCWSTR lpSystemName,
  7560.     PLUID   lpLuid,
  7561.     LPWSTR lpName,
  7562.     LPDWORD cbName
  7563.     );
  7564. #ifdef UNICODE
  7565. #define LookupPrivilegeName  LookupPrivilegeNameW
  7566. #else
  7567. #define LookupPrivilegeName  LookupPrivilegeNameA
  7568. #endif // !UNICODE
  7569.  
  7570. WINADVAPI
  7571. BOOL
  7572. WINAPI
  7573. LookupPrivilegeDisplayNameA(
  7574.     LPCSTR lpSystemName,
  7575.     LPCSTR lpName,
  7576.     LPSTR lpDisplayName,
  7577.     LPDWORD cbDisplayName,
  7578.     LPDWORD lpLanguageId
  7579.     );
  7580. WINADVAPI
  7581. BOOL
  7582. WINAPI
  7583. LookupPrivilegeDisplayNameW(
  7584.     LPCWSTR lpSystemName,
  7585.     LPCWSTR lpName,
  7586.     LPWSTR lpDisplayName,
  7587.     LPDWORD cbDisplayName,
  7588.     LPDWORD lpLanguageId
  7589.     );
  7590. #ifdef UNICODE
  7591. #define LookupPrivilegeDisplayName  LookupPrivilegeDisplayNameW
  7592. #else
  7593. #define LookupPrivilegeDisplayName  LookupPrivilegeDisplayNameA
  7594. #endif // !UNICODE
  7595.  
  7596. WINADVAPI
  7597. BOOL
  7598. WINAPI
  7599. AllocateLocallyUniqueId(
  7600.     PLUID Luid
  7601.     );
  7602.  
  7603. WINBASEAPI
  7604. BOOL
  7605. WINAPI
  7606. BuildCommDCBA(
  7607.     LPCSTR lpDef,
  7608.     LPDCB lpDCB
  7609.     );
  7610. WINBASEAPI
  7611. BOOL
  7612. WINAPI
  7613. BuildCommDCBW(
  7614.     LPCWSTR lpDef,
  7615.     LPDCB lpDCB
  7616.     );
  7617. #ifdef UNICODE
  7618. #define BuildCommDCB  BuildCommDCBW
  7619. #else
  7620. #define BuildCommDCB  BuildCommDCBA
  7621. #endif // !UNICODE
  7622.  
  7623. WINBASEAPI
  7624. BOOL
  7625. WINAPI
  7626. BuildCommDCBAndTimeoutsA(
  7627.     LPCSTR lpDef,
  7628.     LPDCB lpDCB,
  7629.     LPCOMMTIMEOUTS lpCommTimeouts
  7630.     );
  7631. WINBASEAPI
  7632. BOOL
  7633. WINAPI
  7634. BuildCommDCBAndTimeoutsW(
  7635.     LPCWSTR lpDef,
  7636.     LPDCB lpDCB,
  7637.     LPCOMMTIMEOUTS lpCommTimeouts
  7638.     );
  7639. #ifdef UNICODE
  7640. #define BuildCommDCBAndTimeouts  BuildCommDCBAndTimeoutsW
  7641. #else
  7642. #define BuildCommDCBAndTimeouts  BuildCommDCBAndTimeoutsA
  7643. #endif // !UNICODE
  7644.  
  7645. WINBASEAPI
  7646. BOOL
  7647. WINAPI
  7648. CommConfigDialogA(
  7649.     LPCSTR lpszName,
  7650.     HWND hWnd,
  7651.     LPCOMMCONFIG lpCC
  7652.     );
  7653. WINBASEAPI
  7654. BOOL
  7655. WINAPI
  7656. CommConfigDialogW(
  7657.     LPCWSTR lpszName,
  7658.     HWND hWnd,
  7659.     LPCOMMCONFIG lpCC
  7660.     );
  7661. #ifdef UNICODE
  7662. #define CommConfigDialog  CommConfigDialogW
  7663. #else
  7664. #define CommConfigDialog  CommConfigDialogA
  7665. #endif // !UNICODE
  7666.  
  7667. WINBASEAPI
  7668. BOOL
  7669. WINAPI
  7670. GetDefaultCommConfigA(
  7671.     LPCSTR lpszName,
  7672.     LPCOMMCONFIG lpCC,
  7673.     LPDWORD lpdwSize
  7674.     );
  7675. WINBASEAPI
  7676. BOOL
  7677. WINAPI
  7678. GetDefaultCommConfigW(
  7679.     LPCWSTR lpszName,
  7680.     LPCOMMCONFIG lpCC,
  7681.     LPDWORD lpdwSize
  7682.     );
  7683. #ifdef UNICODE
  7684. #define GetDefaultCommConfig  GetDefaultCommConfigW
  7685. #else
  7686. #define GetDefaultCommConfig  GetDefaultCommConfigA
  7687. #endif // !UNICODE
  7688.  
  7689. WINBASEAPI
  7690. BOOL
  7691. WINAPI
  7692. SetDefaultCommConfigA(
  7693.     LPCSTR lpszName,
  7694.     LPCOMMCONFIG lpCC,
  7695.     DWORD dwSize
  7696.     );
  7697. WINBASEAPI
  7698. BOOL
  7699. WINAPI
  7700. SetDefaultCommConfigW(
  7701.     LPCWSTR lpszName,
  7702.     LPCOMMCONFIG lpCC,
  7703.     DWORD dwSize
  7704.     );
  7705. #ifdef UNICODE
  7706. #define SetDefaultCommConfig  SetDefaultCommConfigW
  7707. #else
  7708. #define SetDefaultCommConfig  SetDefaultCommConfigA
  7709. #endif // !UNICODE
  7710.  
  7711. #ifndef _MAC
  7712. #define MAX_COMPUTERNAME_LENGTH 15
  7713. #else
  7714. #define MAX_COMPUTERNAME_LENGTH 31
  7715. #endif
  7716.  
  7717. WINBASEAPI
  7718. BOOL
  7719. WINAPI
  7720. GetComputerNameA (
  7721.     LPSTR lpBuffer,
  7722.     LPDWORD nSize
  7723.     );
  7724. WINBASEAPI
  7725. BOOL
  7726. WINAPI
  7727. GetComputerNameW (
  7728.     LPWSTR lpBuffer,
  7729.     LPDWORD nSize
  7730.     );
  7731. #ifdef UNICODE
  7732. #define GetComputerName  GetComputerNameW
  7733. #else
  7734. #define GetComputerName  GetComputerNameA
  7735. #endif // !UNICODE
  7736.  
  7737. WINBASEAPI
  7738. BOOL
  7739. WINAPI
  7740. SetComputerNameA (
  7741.     LPCSTR lpComputerName
  7742.     );
  7743. WINBASEAPI
  7744. BOOL
  7745. WINAPI
  7746. SetComputerNameW (
  7747.     LPCWSTR lpComputerName
  7748.     );
  7749. #ifdef UNICODE
  7750. #define SetComputerName  SetComputerNameW
  7751. #else
  7752. #define SetComputerName  SetComputerNameA
  7753. #endif // !UNICODE
  7754.  
  7755. WINADVAPI
  7756. BOOL
  7757. WINAPI
  7758. GetUserNameA (
  7759.     LPSTR lpBuffer,
  7760.     LPDWORD nSize
  7761.     );
  7762. WINADVAPI
  7763. BOOL
  7764. WINAPI
  7765. GetUserNameW (
  7766.     LPWSTR lpBuffer,
  7767.     LPDWORD nSize
  7768.     );
  7769. #ifdef UNICODE
  7770. #define GetUserName  GetUserNameW
  7771. #else
  7772. #define GetUserName  GetUserNameA
  7773. #endif // !UNICODE
  7774.  
  7775. //
  7776. // Logon Support APIs
  7777. //
  7778.  
  7779. #define LOGON32_LOGON_INTERACTIVE   2
  7780. #define LOGON32_LOGON_NETWORK       3
  7781. #define LOGON32_LOGON_BATCH         4
  7782. #define LOGON32_LOGON_SERVICE       5
  7783.  
  7784. #define LOGON32_PROVIDER_DEFAULT    0
  7785. #define LOGON32_PROVIDER_WINNT35    1
  7786. #if(_WIN32_WINNT >= 0x0400)
  7787. #define LOGON32_PROVIDER_WINNT40    2
  7788. #endif /* _WIN32_WINNT >= 0x0400 */
  7789. #if(_WIN32_WINNT >= 0x0500)
  7790. #define LOGON32_PROVIDER_WINNT50    3
  7791. #endif // (_WIN32_WINNT >= 0x0500)
  7792.  
  7793.  
  7794.  
  7795. WINADVAPI
  7796. BOOL
  7797. WINAPI
  7798. LogonUserA (
  7799.     LPSTR lpszUsername,
  7800.     LPSTR lpszDomain,
  7801.     LPSTR lpszPassword,
  7802.     DWORD dwLogonType,
  7803.     DWORD dwLogonProvider,
  7804.     PHANDLE phToken
  7805.     );
  7806. WINADVAPI
  7807. BOOL
  7808. WINAPI
  7809. LogonUserW (
  7810.     LPWSTR lpszUsername,
  7811.     LPWSTR lpszDomain,
  7812.     LPWSTR lpszPassword,
  7813.     DWORD dwLogonType,
  7814.     DWORD dwLogonProvider,
  7815.     PHANDLE phToken
  7816.     );
  7817. #ifdef UNICODE
  7818. #define LogonUser  LogonUserW
  7819. #else
  7820. #define LogonUser  LogonUserA
  7821. #endif // !UNICODE
  7822.  
  7823. WINADVAPI
  7824. BOOL
  7825. WINAPI
  7826. ImpersonateLoggedOnUser(
  7827.     HANDLE  hToken
  7828.     );
  7829.  
  7830. WINADVAPI
  7831. BOOL
  7832. WINAPI
  7833. CreateProcessAsUserA (
  7834.     HANDLE hToken,
  7835.     LPCSTR lpApplicationName,
  7836.     LPSTR lpCommandLine,
  7837.     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  7838.     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  7839.     BOOL bInheritHandles,
  7840.     DWORD dwCreationFlags,
  7841.     LPVOID lpEnvironment,
  7842.     LPCSTR lpCurrentDirectory,
  7843.     LPSTARTUPINFOA lpStartupInfo,
  7844.     LPPROCESS_INFORMATION lpProcessInformation
  7845.     );
  7846. WINADVAPI
  7847. BOOL
  7848. WINAPI
  7849. CreateProcessAsUserW (
  7850.     HANDLE hToken,
  7851.     LPCWSTR lpApplicationName,
  7852.     LPWSTR lpCommandLine,
  7853.     LPSECURITY_ATTRIBUTES lpProcessAttributes,
  7854.     LPSECURITY_ATTRIBUTES lpThreadAttributes,
  7855.     BOOL bInheritHandles,
  7856.     DWORD dwCreationFlags,
  7857.     LPVOID lpEnvironment,
  7858.     LPCWSTR lpCurrentDirectory,
  7859.     LPSTARTUPINFOW lpStartupInfo,
  7860.     LPPROCESS_INFORMATION lpProcessInformation
  7861.     );
  7862. #ifdef UNICODE
  7863. #define CreateProcessAsUser  CreateProcessAsUserW
  7864. #else
  7865. #define CreateProcessAsUser  CreateProcessAsUserA
  7866. #endif // !UNICODE
  7867.  
  7868. WINADVAPI
  7869. BOOL
  7870. WINAPI
  7871. DuplicateTokenEx(
  7872.     HANDLE hExistingToken,
  7873.     DWORD dwDesiredAccess,
  7874.     LPSECURITY_ATTRIBUTES lpTokenAttributes,
  7875.     SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,
  7876.     TOKEN_TYPE TokenType,
  7877.     PHANDLE phNewToken);
  7878.  
  7879. WINADVAPI
  7880. BOOL
  7881. APIENTRY
  7882. CreateRestrictedToken(
  7883.     IN HANDLE ExistingTokenHandle,
  7884.     IN DWORD Flags,
  7885.     IN DWORD DisableSidCount,
  7886.     IN PSID_AND_ATTRIBUTES SidsToDisable OPTIONAL,
  7887.     IN DWORD DeletePrivilegeCount,
  7888.     IN PLUID_AND_ATTRIBUTES PrivilegesToDelete OPTIONAL,
  7889.     IN DWORD RestrictedSidCount,
  7890.     IN PSID_AND_ATTRIBUTES SidsToRestrict OPTIONAL,
  7891.     OUT PHANDLE NewTokenHandle
  7892.     );
  7893.  
  7894. WINADVAPI
  7895. BOOL
  7896. APIENTRY
  7897. IsTokenRestricted(
  7898.     IN HANDLE TokenHandle
  7899.     );
  7900.  
  7901.  
  7902. #if(_WIN32_WINNT >= 0x0400)
  7903. //
  7904. // Plug-and-Play API's
  7905. //
  7906.  
  7907. #define HW_PROFILE_GUIDLEN         39      // 36-characters plus NULL terminator
  7908. #define MAX_PROFILE_LEN            80
  7909.  
  7910. #define DOCKINFO_UNDOCKED          (0x1)
  7911. #define DOCKINFO_DOCKED            (0x2)
  7912. #define DOCKINFO_USER_SUPPLIED     (0x4)
  7913. #define DOCKINFO_USER_UNDOCKED     (DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED)
  7914. #define DOCKINFO_USER_DOCKED       (DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED)
  7915.  
  7916. typedef struct tagHW_PROFILE_INFOA {
  7917.     DWORD  dwDockInfo;
  7918.     CHAR   szHwProfileGuid[HW_PROFILE_GUIDLEN];
  7919.     CHAR   szHwProfileName[MAX_PROFILE_LEN];
  7920. } HW_PROFILE_INFOA, *LPHW_PROFILE_INFOA;
  7921. typedef struct tagHW_PROFILE_INFOW {
  7922.     DWORD  dwDockInfo;
  7923.     WCHAR  szHwProfileGuid[HW_PROFILE_GUIDLEN];
  7924.     WCHAR  szHwProfileName[MAX_PROFILE_LEN];
  7925. } HW_PROFILE_INFOW, *LPHW_PROFILE_INFOW;
  7926. #ifdef UNICODE
  7927. typedef HW_PROFILE_INFOW HW_PROFILE_INFO;
  7928. typedef LPHW_PROFILE_INFOW LPHW_PROFILE_INFO;
  7929. #else
  7930. typedef HW_PROFILE_INFOA HW_PROFILE_INFO;
  7931. typedef LPHW_PROFILE_INFOA LPHW_PROFILE_INFO;
  7932. #endif // UNICODE
  7933.  
  7934.  
  7935. WINADVAPI
  7936. BOOL
  7937. WINAPI
  7938. GetCurrentHwProfileA (
  7939.     OUT LPHW_PROFILE_INFOA  lpHwProfileInfo
  7940.     );
  7941. WINADVAPI
  7942. BOOL
  7943. WINAPI
  7944. GetCurrentHwProfileW (
  7945.     OUT LPHW_PROFILE_INFOW  lpHwProfileInfo
  7946.     );
  7947. #ifdef UNICODE
  7948. #define GetCurrentHwProfile  GetCurrentHwProfileW
  7949. #else
  7950. #define GetCurrentHwProfile  GetCurrentHwProfileA
  7951. #endif // !UNICODE
  7952. #endif /* _WIN32_WINNT >= 0x0400 */
  7953.  
  7954. //
  7955. // Performance counter API's
  7956. //
  7957.  
  7958. WINBASEAPI
  7959. BOOL
  7960. WINAPI
  7961. QueryPerformanceCounter(
  7962.     LARGE_INTEGER *lpPerformanceCount
  7963.     );
  7964.  
  7965. WINBASEAPI
  7966. BOOL
  7967. WINAPI
  7968. QueryPerformanceFrequency(
  7969.     LARGE_INTEGER *lpFrequency
  7970.     );
  7971.  
  7972. typedef struct _OSVERSIONINFOA {
  7973.     DWORD dwOSVersionInfoSize;
  7974.     DWORD dwMajorVersion;
  7975.     DWORD dwMinorVersion;
  7976.     DWORD dwBuildNumber;
  7977.     DWORD dwPlatformId;
  7978.     CHAR   szCSDVersion[ 128 ];     // Maintenance string for PSS usage
  7979. } OSVERSIONINFOA, *POSVERSIONINFOA, *LPOSVERSIONINFOA;
  7980. typedef struct _OSVERSIONINFOW {
  7981.     DWORD dwOSVersionInfoSize;
  7982.     DWORD dwMajorVersion;
  7983.     DWORD dwMinorVersion;
  7984.     DWORD dwBuildNumber;
  7985.     DWORD dwPlatformId;
  7986.     WCHAR  szCSDVersion[ 128 ];     // Maintenance string for PSS usage
  7987. } OSVERSIONINFOW, *POSVERSIONINFOW, *LPOSVERSIONINFOW;
  7988. #ifdef UNICODE
  7989. typedef OSVERSIONINFOW OSVERSIONINFO;
  7990. typedef POSVERSIONINFOW POSVERSIONINFO;
  7991. typedef LPOSVERSIONINFOW LPOSVERSIONINFO;
  7992. #else
  7993. typedef OSVERSIONINFOA OSVERSIONINFO;
  7994. typedef POSVERSIONINFOA POSVERSIONINFO;
  7995. typedef LPOSVERSIONINFOA LPOSVERSIONINFO;
  7996. #endif // UNICODE
  7997.  
  7998. typedef struct _OSVERSIONINFOEXA {
  7999.     DWORD dwOSVersionInfoSize;
  8000.     DWORD dwMajorVersion;
  8001.     DWORD dwMinorVersion;
  8002.     DWORD dwBuildNumber;
  8003.     DWORD dwPlatformId;
  8004.     CHAR   szCSDVersion[ 128 ];     // Maintenance string for PSS usage
  8005.     WORD wServicePackMajor;
  8006.     WORD wServicePackMinor;
  8007.     WORD wReserved[2];
  8008. } OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;
  8009. typedef struct _OSVERSIONINFOEXW {
  8010.     DWORD dwOSVersionInfoSize;
  8011.     DWORD dwMajorVersion;
  8012.     DWORD dwMinorVersion;
  8013.     DWORD dwBuildNumber;
  8014.     DWORD dwPlatformId;
  8015.     WCHAR  szCSDVersion[ 128 ];     // Maintenance string for PSS usage
  8016.     WORD wServicePackMajor;
  8017.     WORD wServicePackMinor;
  8018.     WORD wReserved[2];
  8019. } OSVERSIONINFOEXW, *POSVERSIONINFOEXW, *LPOSVERSIONINFOEXW;
  8020. #ifdef UNICODE
  8021. typedef OSVERSIONINFOEXW OSVERSIONINFOEX;
  8022. typedef POSVERSIONINFOEXW POSVERSIONINFOEX;
  8023. typedef LPOSVERSIONINFOEXW LPOSVERSIONINFOEX;
  8024. #else
  8025. typedef OSVERSIONINFOEXA OSVERSIONINFOEX;
  8026. typedef POSVERSIONINFOEXA POSVERSIONINFOEX;
  8027. typedef LPOSVERSIONINFOEXA LPOSVERSIONINFOEX;
  8028. #endif // UNICODE
  8029.  
  8030. //
  8031. // dwPlatformId defines:
  8032. //
  8033.  
  8034. #define VER_PLATFORM_WIN32s             0
  8035. #define VER_PLATFORM_WIN32_WINDOWS      1
  8036. #define VER_PLATFORM_WIN32_NT           2
  8037.  
  8038.  
  8039. WINBASEAPI
  8040. BOOL
  8041. WINAPI
  8042. GetVersionExA(
  8043.     LPOSVERSIONINFOA lpVersionInformation
  8044.     );
  8045. WINBASEAPI
  8046. BOOL
  8047. WINAPI
  8048. GetVersionExW(
  8049.     LPOSVERSIONINFOW lpVersionInformation
  8050.     );
  8051. #ifdef UNICODE
  8052. #define GetVersionEx  GetVersionExW
  8053. #else
  8054. #define GetVersionEx  GetVersionExA
  8055. #endif // !UNICODE
  8056.  
  8057.  
  8058. // DOS and OS/2 Compatible Error Code definitions returned by the Win32 Base
  8059. // API functions.
  8060. //
  8061.  
  8062. #include <winerror.h>
  8063.  
  8064. /* Abnormal termination codes */
  8065.  
  8066. #define TC_NORMAL       0
  8067. #define TC_HARDERR      1
  8068. #define TC_GP_TRAP      2
  8069. #define TC_SIGNAL       3
  8070.  
  8071. #if(WINVER >= 0x0400)
  8072. //
  8073. // Power Management APIs
  8074. //
  8075.  
  8076. #define AC_LINE_OFFLINE                 0x00
  8077. #define AC_LINE_ONLINE                  0x01
  8078. #define AC_LINE_BACKUP_POWER            0x02
  8079. #define AC_LINE_UNKNOWN                 0xFF
  8080.  
  8081. #define BATTERY_FLAG_HIGH               0x01
  8082. #define BATTERY_FLAG_LOW                0x02
  8083. #define BATTERY_FLAG_CRITICAL           0x04
  8084. #define BATTERY_FLAG_CHARGING           0x08
  8085. #define BATTERY_FLAG_NO_BATTERY         0x80
  8086. #define BATTERY_FLAG_UNKNOWN            0xFF
  8087.  
  8088. #define BATTERY_PERCENTAGE_UNKNOWN      0xFF
  8089.  
  8090. #define BATTERY_LIFE_UNKNOWN        0xFFFFFFFF
  8091.  
  8092. typedef struct _SYSTEM_POWER_STATUS {
  8093.     BYTE ACLineStatus;
  8094.     BYTE BatteryFlag;
  8095.     BYTE BatteryLifePercent;
  8096.     BYTE Reserved1;
  8097.     DWORD BatteryLifeTime;
  8098.     DWORD BatteryFullLifeTime;
  8099. }   SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
  8100.  
  8101. BOOL
  8102. WINAPI
  8103. GetSystemPowerStatus(
  8104.     LPSYSTEM_POWER_STATUS lpSystemPowerStatus
  8105.     );
  8106.  
  8107. BOOL
  8108. WINAPI
  8109. SetSystemPowerState(
  8110.     BOOL fSuspend,
  8111.     BOOL fForce
  8112.     );
  8113.  
  8114. #endif /* WINVER >= 0x0400 */
  8115.  
  8116. ///////////////////////////////////////////////////////////////
  8117. //                                                           //
  8118. //      Win Certificate API and Structures                   //
  8119. //                                                           //
  8120. ///////////////////////////////////////////////////////////////
  8121.  
  8122. //
  8123. // Structures
  8124. //
  8125.  
  8126. typedef struct _WIN_CERTIFICATE {
  8127.     DWORD       dwLength;
  8128.     WORD        wRevision;
  8129.     WORD        wCertificateType;   // WIN_CERT_TYPE_xxx
  8130.     BYTE        bCertificate[ANYSIZE_ARRAY];
  8131. } WIN_CERTIFICATE, *LPWIN_CERTIFICATE;
  8132.  
  8133. //
  8134. // Currently, the only defined certificate revision is WIN_CERT_REVISION_1_0
  8135. //
  8136.  
  8137. #define WIN_CERT_REVISION_1_0           (0x0100)
  8138. #define WIN_CERT_REVISION_2_0           (0x0200)
  8139.  
  8140. //
  8141. // Possible certificate types are specified by the following values
  8142. //
  8143.  
  8144. #define  WIN_CERT_TYPE_X509               (0x0001)   // bCertificate contains an X.509 Certificate
  8145. #define  WIN_CERT_TYPE_PKCS_SIGNED_DATA   (0x0002)   // bCertificate contains a PKCS SignedData structure
  8146. #define  WIN_CERT_TYPE_RESERVED_1         (0x0003)   // Reserved
  8147.  
  8148. //
  8149. // API
  8150. //
  8151.  
  8152.  
  8153.  
  8154.  
  8155. BOOL
  8156. WINAPI
  8157. WinSubmitCertificate(
  8158.     LPWIN_CERTIFICATE lpCertificate
  8159.     );
  8160.  
  8161.  
  8162.  
  8163. ///////////////////////////////////////////////////////////////
  8164. //                                                           //
  8165. //             Trust API and Structures                      //
  8166. //                                                           //
  8167. ///////////////////////////////////////////////////////////////
  8168.  
  8169. LONG
  8170. WINAPI
  8171. WinVerifyTrust(
  8172.     HWND    hwnd,
  8173.     GUID *  ActionID,
  8174.     LPVOID  ActionData
  8175.     );
  8176.  
  8177.  
  8178. BOOL
  8179. WINAPI
  8180. WinLoadTrustProvider(
  8181.     GUID * ActionID
  8182.     );
  8183.  
  8184. ///////////////////////////////////////////////////////////////
  8185. //                                                           //
  8186. //             Common Trust API Data Structures              //
  8187. //                                                           //
  8188. ///////////////////////////////////////////////////////////////
  8189.  
  8190.  
  8191. //
  8192. // Data type commonly used in ActionData structures
  8193. //
  8194.  
  8195. typedef LPVOID WIN_TRUST_SUBJECT;
  8196.  
  8197. //
  8198. // Two commonly used ActionData structures
  8199. //
  8200.  
  8201. typedef struct _WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT {
  8202.  
  8203.     HANDLE            hClientToken;
  8204.     GUID *            SubjectType;
  8205.     WIN_TRUST_SUBJECT Subject;
  8206.  
  8207. } WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT, *LPWIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT ;
  8208.  
  8209.  
  8210. typedef struct _WIN_TRUST_ACTDATA_SUBJECT_ONLY {
  8211.  
  8212.     GUID *            SubjectType;
  8213.     WIN_TRUST_SUBJECT Subject;
  8214.  
  8215. } WIN_TRUST_ACTDATA_SUBJECT_ONLY, *LPWIN_TRUST_ACTDATA_SUBJECT_ONLY;
  8216.  
  8217.  
  8218. ////////////////////////////////////////////////////////////////////
  8219. //                                                                 /
  8220. //      SUBJECT FORM DEFINITIONS                                   /
  8221. //                                                                 /
  8222. ////////////////////////////////////////////////////////////////////
  8223.  
  8224. ////////////////////////////////////////////////////////////////////
  8225. //                                                                 /
  8226. // Currently defined Subject Type Identifiers.  All of the below   /
  8227. // use the WIN_TRUST_SUBJECT_FILE subject form, defined below.     /
  8228. //                                                                 /
  8229. ////////////////////////////////////////////////////////////////////
  8230.  
  8231. /* RawFile == 959dc450-8d9e-11cf-8736-00aa00a485eb */
  8232. #define WIN_TRUST_SUBJTYPE_RAW_FILE                              \
  8233.             { 0x959dc450,                                        \
  8234.               0x8d9e,                                            \
  8235.               0x11cf,                                            \
  8236.               {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb}   \
  8237.             }
  8238.  
  8239. /* PeImage == 43c9a1e0-8da0-11cf-8736-00aa00a485eb */
  8240. #define WIN_TRUST_SUBJTYPE_PE_IMAGE                              \
  8241.             { 0x43c9a1e0,                                        \
  8242.               0x8da0,                                            \
  8243.               0x11cf,                                            \
  8244.               {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb}   \
  8245.             }
  8246.  
  8247.  
  8248. /* JavaClass = 08ad3990-8da1-11cf-8736-00aa00a485eb */
  8249. #define WIN_TRUST_SUBJTYPE_JAVA_CLASS                            \
  8250.             { 0x08ad3990,                                        \
  8251.               0x8da1,                                            \
  8252.               0x11cf,                                            \
  8253.               {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb}   \
  8254.             }
  8255. /* Cabinet = d17c5374-a392-11cf-9df5-00aa00c184e0 */
  8256. #define WIN_TRUST_SUBJTYPE_CABINET                               \
  8257.             { 0xd17c5374,                                        \
  8258.               0xa392,                                            \
  8259.               0x11cf,                                            \
  8260.               { 0x9d, 0xf5, 0x0, 0xaa, 0x0, 0xc1, 0x84, 0xe0 }   \
  8261.             }
  8262.  
  8263. //
  8264. // Associated Subject Data Structure:
  8265. //
  8266.  
  8267. typedef struct _WIN_TRUST_SUBJECT_FILE {
  8268.  
  8269.     HANDLE  hFile;
  8270.     LPCWSTR lpPath;
  8271.  
  8272. } WIN_TRUST_SUBJECT_FILE, *LPWIN_TRUST_SUBJECT_FILE;
  8273.  
  8274.  
  8275.  
  8276.  
  8277. ////////////////////////////////////////////////////////////////////
  8278. //                                                                 /
  8279. // The following subject types use the                             /
  8280. // WIN_TRUST_SUBJECT_FILE_AND_DISPLAY subject type, defined        /
  8281. // below.                                                          /
  8282. //                                                                 /
  8283. ////////////////////////////////////////////////////////////////////
  8284.  
  8285. #define WIN_TRUST_SUBJTYPE_RAW_FILEEX                            \
  8286.             { 0x6f458110,                                        \
  8287.               0xc2f1,                                            \
  8288.               0x11cf,                                            \
  8289.               { 0x8a, 0x69, 0x0, 0xaa, 0x0, 0x6c, 0x37, 0x6 }    \
  8290.             }
  8291.  
  8292. #define WIN_TRUST_SUBJTYPE_PE_IMAGEEX                            \
  8293.             { 0x6f458111,                                        \
  8294.               0xc2f1,                                            \
  8295.               0x11cf,                                            \
  8296.               { 0x8a, 0x69, 0x0, 0xaa, 0x0, 0x6c, 0x37, 0x6 }    \
  8297.             }
  8298.  
  8299. #define WIN_TRUST_SUBJTYPE_JAVA_CLASSEX                          \
  8300.             { 0x6f458113,                                        \
  8301.               0xc2f1,                                            \
  8302.               0x11cf,                                            \
  8303.               { 0x8a, 0x69, 0x0, 0xaa, 0x0, 0x6c, 0x37, 0x6 }    \
  8304.             }
  8305.  
  8306. #define WIN_TRUST_SUBJTYPE_CABINETEX                             \
  8307.             { 0x6f458114,                                        \
  8308.               0xc2f1,                                            \
  8309.               0x11cf,                                            \
  8310.               { 0x8a, 0x69, 0x0, 0xaa, 0x0, 0x6c, 0x37, 0x6 }    \
  8311.             }
  8312.  
  8313. //
  8314. // Associated Subject Data Structure:
  8315. //
  8316.  
  8317. typedef struct _WIN_TRUST_SUBJECT_FILE_AND_DISPLAY {
  8318.  
  8319.     HANDLE  hFile;              // handle to the open file if you got it
  8320.     LPCWSTR lpPath;             // the path to open if you don't
  8321.     LPCWSTR lpDisplayName;      // (optional) display name to show to user
  8322.                                 //      in place of path
  8323.  
  8324. } WIN_TRUST_SUBJECT_FILE_AND_DISPLAY, *LPWIN_TRUST_SUBJECT_FILE_AND_DISPLAY;
  8325.  
  8326.  
  8327. ////////////////////////////////////////////////////////////////////
  8328. //                                                                 /
  8329. // Other subject types:                                            /
  8330. //                                                                 /
  8331. ////////////////////////////////////////////////////////////////////
  8332.  
  8333. /* OleStorage == c257e740-8da0-11cf-8736-00aa00a485eb */
  8334. #define WIN_TRUST_SUBJTYPE_OLE_STORAGE                           \
  8335.             { 0xc257e740,                                        \
  8336.               0x8da0,                                            \
  8337.               0x11cf,                                            \
  8338.               {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb}   \
  8339.             }
  8340.  
  8341.  
  8342. ////////////////////////////////////////////////////////////////////
  8343. //                                                                 /
  8344. //      TRUST PROVIDER SPECIFIC DEFINITIONS                        /
  8345. //                                                                 /
  8346. //                                                                 /
  8347. //      Each trust provider will have the following                /
  8348. //      sections defined:                                          /
  8349. //                                                                 /
  8350. //      Actions - What actions are supported by the trust          /
  8351. //          provider.                                              /
  8352. //                                                                 /
  8353. //      SubjectForms - Subjects that may be evaluated by this      /
  8354. //          trust provider.                                        /
  8355. //                                                                 /
  8356. //                     and                                         /
  8357. //                                                                 /
  8358. //      Data structures to support the subject forms.              /
  8359. //                                                                 /
  8360. //                                                                 /
  8361. ////////////////////////////////////////////////////////////////////
  8362.  
  8363.  
  8364. ////////////////////////////////////////////////////////////////////
  8365. //                                                                 /
  8366. //             Software Publisher Trust Provider                   /
  8367. //                                                                 /
  8368. ////////////////////////////////////////////////////////////////////
  8369.  
  8370. //
  8371. // Actions:
  8372. //
  8373.  
  8374. /* TrustedPublisher == 66426730-8da1-11cf-8736-00aa00a485eb */
  8375. #define WIN_SPUB_ACTION_TRUSTED_PUBLISHER                        \
  8376.             { 0x66426730,                                        \
  8377.               0x8da1,                                            \
  8378.               0x11cf,                                            \
  8379.               {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb}   \
  8380.             }
  8381.  
  8382. /* NtActivateImage == 8bc96b00-8da1-11cf-8736-00aa00a485eb */
  8383. #define     WIN_SPUB_ACTION_NT_ACTIVATE_IMAGE                    \
  8384.             { 0x8bc96b00,                                        \
  8385.               0x8da1,                                            \
  8386.               0x11cf,                                            \
  8387.               {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb}   \
  8388.             }
  8389.  
  8390. /* PublishedSoftware == 64b9d180-8da2-11cf-8736-00aa00a485eb */
  8391. #define WIN_SPUB_ACTION_PUBLISHED_SOFTWARE                       \
  8392.             { 0x64b9d180,                                        \
  8393.               0x8da2,                                            \
  8394.               0x11cf,                                            \
  8395.               {0x87, 0x36, 0x00, 0xaa, 0x00, 0xa4, 0x85, 0xeb}   \
  8396.             }
  8397.  
  8398. //
  8399. // Data Structures:
  8400. //
  8401. // WIN_SPUB_ACTION_TRUSTED_PUBLISHER:
  8402. //
  8403. //      Uses WIN_SPUB_TRUSTED_PUBLISHER_DATA
  8404. //
  8405. // WIN_SPUB_ACTION_NT_ACTIVATE_IMAGE:
  8406. //
  8407. //      Uses WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT
  8408. //
  8409. // WIN_SPUB_ACTION_PUBLISHED_SOFTWARE:
  8410. //
  8411. //      Uses WIN_TRUST_ACTDATA_CONTEXT_WITH_SUBJECT
  8412. //
  8413.  
  8414. typedef struct _WIN_SPUB_TRUSTED_PUBLISHER_DATA {
  8415.  
  8416.     HANDLE            hClientToken;
  8417.     LPWIN_CERTIFICATE lpCertificate;
  8418.  
  8419. } WIN_SPUB_TRUSTED_PUBLISHER_DATA, *LPWIN_SPUB_TRUSTED_PUBLISHER_DATA;
  8420.  
  8421. #if (_WIN32_WINNT >= 0x0500)
  8422. //
  8423. // Very Large Memory API Subset
  8424. //
  8425.  
  8426. WINBASEAPI
  8427. PVOID64
  8428. WINAPI
  8429. VirtualAllocVlm(
  8430.     HANDLE hProcess,
  8431.     PVOID64 lpAddress,
  8432.     DWORDLONG ullSize,
  8433.     DWORD flAllocationType,
  8434.     DWORD flProtect
  8435.     );
  8436.  
  8437. WINBASEAPI
  8438. BOOL
  8439. WINAPI
  8440. VirtualFreeVlm(
  8441.     HANDLE hProcess,
  8442.     PVOID64 lpAddress,
  8443.     DWORDLONG ullSize,
  8444.     DWORD dwFreeType
  8445.     );
  8446.  
  8447. WINBASEAPI
  8448. BOOL
  8449. WINAPI
  8450. VirtualProtectVlm(
  8451.     HANDLE hProcess,
  8452.     PVOID64 lpAddress,
  8453.     DWORDLONG ullSize,
  8454.     DWORD flNewProtect,
  8455.     PDWORD lpflOldProtect
  8456.     );
  8457.  
  8458. WINBASEAPI
  8459. DWORD
  8460. WINAPI
  8461. VirtualQueryVlm(
  8462.     HANDLE hProcess,
  8463.     PVOID64 lpAddress,
  8464.     PMEMORY_BASIC_INFORMATION_VLM lpBuffer,
  8465.     DWORD dwLength
  8466.     );
  8467.  
  8468. typedef struct _MEMORYSTATUSVLM {
  8469.     DWORD dwLength;
  8470.     DWORD dwMemoryLoad;
  8471.     DWORDLONG ullTotalPhys;
  8472.     DWORDLONG ullAvailPhys;
  8473.     DWORDLONG ullTotalPageFile;
  8474.     DWORDLONG ullAvailPageFile;
  8475.     DWORDLONG ullTotalVirtual;
  8476.     DWORDLONG ullAvailVirtual;
  8477.     DWORDLONG ullAvailExtendedVirtual;
  8478. } MEMORYSTATUSVLM, *LPMEMORYSTATUSVLM;
  8479.  
  8480. WINBASEAPI
  8481. VOID
  8482. WINAPI
  8483. GlobalMemoryStatusVlm(
  8484.     LPMEMORYSTATUSVLM lpBuffer
  8485.     );
  8486.  
  8487. WINBASEAPI
  8488. BOOL
  8489. WINAPI
  8490. ReadProcessMemoryVlm(
  8491.     HANDLE hProcess,
  8492.     PVOID64 lpBaseAddress,
  8493.     PVOID64 lpBuffer,
  8494.     DWORD nSize,
  8495.     LPDWORD lpNumberOfBytesRead
  8496.     );
  8497.  
  8498. WINBASEAPI
  8499. BOOL
  8500. WINAPI
  8501. WriteProcessMemoryVlm(
  8502.     HANDLE hProcess,
  8503.     PVOID64 lpBaseAddress,
  8504.     PVOID64 lpBuffer,
  8505.     DWORD nSize,
  8506.     LPDWORD lpNumberOfBytesWritten
  8507.     );
  8508.  
  8509. WINBASEAPI
  8510. BOOL
  8511. WINAPI
  8512. ReadFileVlm(
  8513.     HANDLE hFile,
  8514.     PVOID64 lpBuffer,
  8515.     DWORD nNumberOfBytesToRead,
  8516.     LPDWORD lpReserved,
  8517.     LPOVERLAPPED lpOverlapped
  8518.     );
  8519.  
  8520. WINBASEAPI
  8521. BOOL
  8522. WINAPI
  8523. WriteFileVlm(
  8524.     HANDLE hFile,
  8525.     PVOID64 lpBuffer,
  8526.     DWORD nNumberOfBytesToWrite,
  8527.     LPDWORD lpReserved,
  8528.     LPOVERLAPPED lpOverlapped
  8529.     );
  8530.  
  8531. WINBASEAPI
  8532. HANDLE
  8533. WINAPI
  8534. CreateJobObjectA(
  8535.     LPSECURITY_ATTRIBUTES lpJobAttributes,
  8536.     LPCSTR lpName
  8537.     );
  8538. WINBASEAPI
  8539. HANDLE
  8540. WINAPI
  8541. CreateJobObjectW(
  8542.     LPSECURITY_ATTRIBUTES lpJobAttributes,
  8543.     LPCWSTR lpName
  8544.     );
  8545. #ifdef UNICODE
  8546. #define CreateJobObject  CreateJobObjectW
  8547. #else
  8548. #define CreateJobObject  CreateJobObjectA
  8549. #endif // !UNICODE
  8550.  
  8551. WINBASEAPI
  8552. HANDLE
  8553. WINAPI
  8554. OpenJobObjectA(
  8555.     DWORD dwDesiredAccess,
  8556.     BOOL bInheritHandle,
  8557.     LPCSTR lpName
  8558.     );
  8559. WINBASEAPI
  8560. HANDLE
  8561. WINAPI
  8562. OpenJobObjectW(
  8563.     DWORD dwDesiredAccess,
  8564.     BOOL bInheritHandle,
  8565.     LPCWSTR lpName
  8566.     );
  8567. #ifdef UNICODE
  8568. #define OpenJobObject  OpenJobObjectW
  8569. #else
  8570. #define OpenJobObject  OpenJobObjectA
  8571. #endif // !UNICODE
  8572.  
  8573. WINBASEAPI
  8574. BOOL
  8575. WINAPI
  8576. AssignProcessToJobObject(
  8577.     HANDLE hJob,
  8578.     HANDLE hProcess
  8579.     );
  8580.  
  8581. WINBASEAPI
  8582. BOOL
  8583. WINAPI
  8584. TerminateJobObject(
  8585.     HANDLE hJob,
  8586.     UINT uExitCode
  8587.     );
  8588.  
  8589. WINBASEAPI
  8590. BOOL
  8591. WINAPI
  8592. QueryInformationJobObject(
  8593.     HANDLE hJob,
  8594.     JOBOBJECTINFOCLASS JobObjectInformationClass,
  8595.     LPVOID lpJobObjectInformation,
  8596.     DWORD cbJobObjectInformationLength,
  8597.     LPDWORD lpReturnLength
  8598.     );
  8599.  
  8600. WINBASEAPI
  8601. BOOL
  8602. WINAPI
  8603. SetInformationJobObject(
  8604.     HANDLE hJob,
  8605.     JOBOBJECTINFOCLASS JobObjectInformationClass,
  8606.     LPVOID lpJobObjectInformation,
  8607.     DWORD cbJobObjectInformationLength
  8608.     );
  8609.  
  8610. #endif // (_WIN32_WINNT >= 0x0500)
  8611.  
  8612.  
  8613. #ifdef __cplusplus
  8614. }
  8615. #endif
  8616.  
  8617.  
  8618. #endif // _WINBASE_
  8619.  
  8620.