home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c083 / 19.ddi / GENINC32.PAK / WINBASE.H < prev    next >
Encoding:
C/C++ Source or Header  |  1993-12-02  |  108.0 KB  |  5,723 lines

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