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