home *** CD-ROM | disk | FTP | other *** search
/ OpenStep (Enterprise) / OpenStepENTCD.toast / OEDEV / DEV.Z / WINBASE.H < prev    next >
Encoding:
C/C++ Source or Header  |  1996-09-08  |  140.4 KB  |  7,514 lines

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