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