home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / winbase.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  187KB  |  9,290 lines

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