home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / Compilers / digital marsC compier / dm / include / win32 / Winbase.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-08  |  150.9 KB  |  7,724 lines

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