home *** CD-ROM | disk | FTP | other *** search
/ C Programming Starter Kit 2.0 / SamsPublishing-CProgrammingStarterKit-v2.0-Win31.iso / bc45 / geninc32.pak / WINBASE.H < prev    next >
C/C++ Source or Header  |  1997-07-23  |  133KB  |  7,009 lines

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