Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. /**
  2.  * This file has no copyright assigned and is placed in the Public Domain.
  3.  * This file is part of the w64 mingw-runtime package.
  4.  * No warranty is given; refer to the file DISCLAIMER within this package.
  5.  */
  6. #ifndef _WINBASE_
  7. #define _WINBASE_
  8.  
  9. #define WINADVAPI DECLSPEC_IMPORT
  10. #define WINBASEAPI DECLSPEC_IMPORT
  11. #define ZAWPROXYAPI DECLSPEC_IMPORT
  12.  
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16.  
  17. #define DefineHandleTable(w) ((w),TRUE)
  18. #define LimitEmsPages(dw)
  19. #define SetSwapAreaSize(w) (w)
  20. #define LockSegment(w) GlobalFix((HANDLE)(w))
  21. #define UnlockSegment(w) GlobalUnfix((HANDLE)(w))
  22. #define GetCurrentTime() GetTickCount()
  23.  
  24. #define Yield()
  25.  
  26. #define INVALID_HANDLE_VALUE ((HANDLE)(LONG_PTR)-1)
  27. #define INVALID_FILE_SIZE ((DWORD)0xffffffff)
  28. #define INVALID_SET_FILE_POINTER ((DWORD)-1)
  29. #define INVALID_FILE_ATTRIBUTES ((DWORD)-1)
  30.  
  31. #define FILE_BEGIN 0
  32. #define FILE_CURRENT 1
  33. #define FILE_END 2
  34.  
  35. #define TIME_ZONE_ID_INVALID ((DWORD)0xffffffff)
  36.  
  37. #define WAIT_FAILED ((DWORD)0xffffffff)
  38. #define WAIT_OBJECT_0 ((STATUS_WAIT_0) + 0)
  39. #define WAIT_ABANDONED ((STATUS_ABANDONED_WAIT_0) + 0)
  40. #define WAIT_ABANDONED_0 ((STATUS_ABANDONED_WAIT_0) + 0)
  41. #define WAIT_IO_COMPLETION STATUS_USER_APC
  42. #define STILL_ACTIVE STATUS_PENDING
  43. #define EXCEPTION_ACCESS_VIOLATION STATUS_ACCESS_VIOLATION
  44. #define EXCEPTION_DATATYPE_MISALIGNMENT STATUS_DATATYPE_MISALIGNMENT
  45. #define EXCEPTION_BREAKPOINT STATUS_BREAKPOINT
  46. #define EXCEPTION_SINGLE_STEP STATUS_SINGLE_STEP
  47. #define EXCEPTION_ARRAY_BOUNDS_EXCEEDED STATUS_ARRAY_BOUNDS_EXCEEDED
  48. #define EXCEPTION_FLT_DENORMAL_OPERAND STATUS_FLOAT_DENORMAL_OPERAND
  49. #define EXCEPTION_FLT_DIVIDE_BY_ZERO STATUS_FLOAT_DIVIDE_BY_ZERO
  50. #define EXCEPTION_FLT_INEXACT_RESULT STATUS_FLOAT_INEXACT_RESULT
  51. #define EXCEPTION_FLT_INVALID_OPERATION STATUS_FLOAT_INVALID_OPERATION
  52. #define EXCEPTION_FLT_OVERFLOW STATUS_FLOAT_OVERFLOW
  53. #define EXCEPTION_FLT_STACK_CHECK STATUS_FLOAT_STACK_CHECK
  54. #define EXCEPTION_FLT_UNDERFLOW STATUS_FLOAT_UNDERFLOW
  55. #define EXCEPTION_INT_DIVIDE_BY_ZERO STATUS_INTEGER_DIVIDE_BY_ZERO
  56. #define EXCEPTION_INT_OVERFLOW STATUS_INTEGER_OVERFLOW
  57. #define EXCEPTION_PRIV_INSTRUCTION STATUS_PRIVILEGED_INSTRUCTION
  58. #define EXCEPTION_IN_PAGE_ERROR STATUS_IN_PAGE_ERROR
  59. #define EXCEPTION_ILLEGAL_INSTRUCTION STATUS_ILLEGAL_INSTRUCTION
  60. #define EXCEPTION_NONCONTINUABLE_EXCEPTION STATUS_NONCONTINUABLE_EXCEPTION
  61. #define EXCEPTION_STACK_OVERFLOW STATUS_STACK_OVERFLOW
  62. #define EXCEPTION_INVALID_DISPOSITION STATUS_INVALID_DISPOSITION
  63. #define EXCEPTION_GUARD_PAGE STATUS_GUARD_PAGE_VIOLATION
  64. #define EXCEPTION_INVALID_HANDLE STATUS_INVALID_HANDLE
  65. #define EXCEPTION_POSSIBLE_DEADLOCK STATUS_POSSIBLE_DEADLOCK
  66. #define CONTROL_C_EXIT STATUS_CONTROL_C_EXIT
  67. #define MoveMemory RtlMoveMemory
  68. #define CopyMemory RtlCopyMemory
  69. #define FillMemory RtlFillMemory
  70. #define ZeroMemory RtlZeroMemory
  71. #define SecureZeroMemory RtlSecureZeroMemory
  72.  
  73. #define FILE_FLAG_WRITE_THROUGH 0x80000000
  74. #define FILE_FLAG_OVERLAPPED 0x40000000
  75. #define FILE_FLAG_NO_BUFFERING 0x20000000
  76. #define FILE_FLAG_RANDOM_ACCESS 0x10000000
  77. #define FILE_FLAG_SEQUENTIAL_SCAN 0x8000000
  78. #define FILE_FLAG_DELETE_ON_CLOSE 0x4000000
  79. #define FILE_FLAG_BACKUP_SEMANTICS 0x2000000
  80. #define FILE_FLAG_POSIX_SEMANTICS 0x1000000
  81. #define FILE_FLAG_OPEN_REPARSE_POINT 0x200000
  82. #define FILE_FLAG_OPEN_NO_RECALL 0x100000
  83. #define FILE_FLAG_FIRST_PIPE_INSTANCE 0x80000
  84.  
  85. #define CREATE_NEW 1
  86. #define CREATE_ALWAYS 2
  87. #define OPEN_EXISTING 3
  88. #define OPEN_ALWAYS 4
  89. #define TRUNCATE_EXISTING 5
  90.  
  91. #define PROGRESS_CONTINUE 0
  92. #define PROGRESS_CANCEL 1
  93. #define PROGRESS_STOP 2
  94. #define PROGRESS_QUIET 3
  95.  
  96. #define CALLBACK_CHUNK_FINISHED 0x0
  97. #define CALLBACK_STREAM_SWITCH 0x1
  98.  
  99. #define COPY_FILE_FAIL_IF_EXISTS 0x1
  100. #define COPY_FILE_RESTARTABLE 0x2
  101. #define COPY_FILE_OPEN_SOURCE_FOR_WRITE 0x4
  102. #define COPY_FILE_ALLOW_DECRYPTED_DESTINATION 0x8
  103.  
  104. #define REPLACEFILE_WRITE_THROUGH 0x1
  105. #define REPLACEFILE_IGNORE_MERGE_ERRORS 0x2
  106.  
  107. #define PIPE_ACCESS_INBOUND 0x1
  108. #define PIPE_ACCESS_OUTBOUND 0x2
  109. #define PIPE_ACCESS_DUPLEX 0x3
  110.  
  111. #define PIPE_CLIENT_END 0x0
  112. #define PIPE_SERVER_END 0x1
  113.  
  114. #define PIPE_WAIT 0x0
  115. #define PIPE_NOWAIT 0x1
  116. #define PIPE_READMODE_BYTE 0x0
  117. #define PIPE_READMODE_MESSAGE 0x2
  118. #define PIPE_TYPE_BYTE 0x0
  119. #define PIPE_TYPE_MESSAGE 0x4
  120.  
  121. #define PIPE_UNLIMITED_INSTANCES 255
  122.  
  123. #define SECURITY_ANONYMOUS (SecurityAnonymous << 16)
  124. #define SECURITY_IDENTIFICATION (SecurityIdentification << 16)
  125. #define SECURITY_IMPERSONATION (SecurityImpersonation << 16)
  126. #define SECURITY_DELEGATION (SecurityDelegation << 16)
  127.  
  128. #define SECURITY_CONTEXT_TRACKING 0x40000
  129. #define SECURITY_EFFECTIVE_ONLY 0x80000
  130.  
  131. #define SECURITY_SQOS_PRESENT 0x100000
  132. #define SECURITY_VALID_SQOS_FLAGS 0x1f0000
  133.  
  134.   typedef struct _OVERLAPPED {
  135.     ULONG_PTR Internal;
  136.     ULONG_PTR InternalHigh;
  137.     union {
  138.       struct {
  139.         DWORD Offset;
  140.         DWORD OffsetHigh;
  141.       };
  142.       PVOID Pointer;
  143.     };
  144.     HANDLE hEvent;
  145.   } OVERLAPPED,*LPOVERLAPPED;
  146.  
  147.   typedef struct _SECURITY_ATTRIBUTES {
  148.     DWORD nLength;
  149.     LPVOID lpSecurityDescriptor;
  150.     WINBOOL bInheritHandle;
  151.   } SECURITY_ATTRIBUTES,*PSECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES;
  152.  
  153.   typedef struct _PROCESS_INFORMATION {
  154.     HANDLE hProcess;
  155.     HANDLE hThread;
  156.     DWORD dwProcessId;
  157.     DWORD dwThreadId;
  158.   } PROCESS_INFORMATION,*PPROCESS_INFORMATION,*LPPROCESS_INFORMATION;
  159.  
  160. #ifndef _FILETIME_
  161. #define _FILETIME_
  162.   typedef struct _FILETIME {
  163.     DWORD dwLowDateTime;
  164.     DWORD dwHighDateTime;
  165.   } FILETIME,*PFILETIME,*LPFILETIME;
  166. #endif
  167.  
  168.   typedef struct _SYSTEMTIME {
  169.     WORD wYear;
  170.     WORD wMonth;
  171.     WORD wDayOfWeek;
  172.     WORD wDay;
  173.     WORD wHour;
  174.     WORD wMinute;
  175.     WORD wSecond;
  176.     WORD wMilliseconds;
  177.   } SYSTEMTIME,*PSYSTEMTIME,*LPSYSTEMTIME;
  178.  
  179.   typedef DWORD (WINAPI *PTHREAD_START_ROUTINE)(LPVOID lpThreadParameter);
  180.   typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
  181.   typedef VOID (WINAPI *PFIBER_START_ROUTINE)(LPVOID lpFiberParameter);
  182.   typedef PFIBER_START_ROUTINE LPFIBER_START_ROUTINE;
  183.  
  184.   typedef RTL_CRITICAL_SECTION CRITICAL_SECTION;
  185.   typedef PRTL_CRITICAL_SECTION PCRITICAL_SECTION;
  186.   typedef PRTL_CRITICAL_SECTION LPCRITICAL_SECTION;
  187.   typedef RTL_CRITICAL_SECTION_DEBUG CRITICAL_SECTION_DEBUG;
  188.   typedef PRTL_CRITICAL_SECTION_DEBUG PCRITICAL_SECTION_DEBUG;
  189.   typedef PRTL_CRITICAL_SECTION_DEBUG LPCRITICAL_SECTION_DEBUG;
  190.  
  191.   WINBASEAPI PVOID WINAPI EncodePointer(PVOID Ptr);
  192.   WINBASEAPI PVOID WINAPI DecodePointer(PVOID Ptr);
  193.   WINBASEAPI PVOID WINAPI EncodeSystemPointer(PVOID Ptr);
  194.   WINBASEAPI PVOID WINAPI DecodeSystemPointer(PVOID Ptr);
  195.  
  196. #ifdef I_X86_
  197.   typedef PLDT_ENTRY LPLDT_ENTRY;
  198. #else
  199.   typedef LPVOID LPLDT_ENTRY;
  200. #endif
  201.  
  202. #define MUTEX_MODIFY_STATE MUTANT_QUERY_STATE
  203. #define MUTEX_ALL_ACCESS MUTANT_ALL_ACCESS
  204.  
  205. #define SP_SERIALCOMM ((DWORD)0x1)
  206.  
  207. #define PST_UNSPECIFIED ((DWORD)0x0)
  208. #define PST_RS232 ((DWORD)0x1)
  209. #define PST_PARALLELPORT ((DWORD)0x2)
  210. #define PST_RS422 ((DWORD)0x3)
  211. #define PST_RS423 ((DWORD)0x4)
  212. #define PST_RS449 ((DWORD)0x5)
  213. #define PST_MODEM ((DWORD)0x6)
  214. #define PST_FAX ((DWORD)0x21)
  215. #define PST_SCANNER ((DWORD)0x22)
  216. #define PST_NETWORK_BRIDGE ((DWORD)0x100)
  217. #define PST_LAT ((DWORD)0x101)
  218. #define PST_TCPIP_TELNET ((DWORD)0x102)
  219. #define PST_X25 ((DWORD)0x103)
  220.  
  221. #define PCF_DTRDSR ((DWORD)0x1)
  222. #define PCF_RTSCTS ((DWORD)0x2)
  223. #define PCF_RLSD ((DWORD)0x4)
  224. #define PCF_PARITY_CHECK ((DWORD)0x8)
  225. #define PCF_XONXOFF ((DWORD)0x10)
  226. #define PCF_SETXCHAR ((DWORD)0x20)
  227. #define PCF_TOTALTIMEOUTS ((DWORD)0x40)
  228. #define PCF_INTTIMEOUTS ((DWORD)0x80)
  229. #define PCF_SPECIALCHARS ((DWORD)0x100)
  230. #define PCF_16BITMODE ((DWORD)0x200)
  231.  
  232. #define SP_PARITY ((DWORD)0x1)
  233. #define SP_BAUD ((DWORD)0x2)
  234. #define SP_DATABITS ((DWORD)0x4)
  235. #define SP_STOPBITS ((DWORD)0x8)
  236. #define SP_HANDSHAKING ((DWORD)0x10)
  237. #define SP_PARITY_CHECK ((DWORD)0x20)
  238. #define SP_RLSD ((DWORD)0x40)
  239.  
  240. #define BAUD_075 ((DWORD)0x1)
  241. #define BAUD_110 ((DWORD)0x2)
  242. #define BAUD_134_5 ((DWORD)0x4)
  243. #define BAUD_150 ((DWORD)0x8)
  244. #define BAUD_300 ((DWORD)0x10)
  245. #define BAUD_600 ((DWORD)0x20)
  246. #define BAUD_1200 ((DWORD)0x40)
  247. #define BAUD_1800 ((DWORD)0x80)
  248. #define BAUD_2400 ((DWORD)0x100)
  249. #define BAUD_4800 ((DWORD)0x200)
  250. #define BAUD_7200 ((DWORD)0x400)
  251. #define BAUD_9600 ((DWORD)0x800)
  252. #define BAUD_14400 ((DWORD)0x1000)
  253. #define BAUD_19200 ((DWORD)0x2000)
  254. #define BAUD_38400 ((DWORD)0x4000)
  255. #define BAUD_56K ((DWORD)0x8000)
  256. #define BAUD_128K ((DWORD)0x10000)
  257. #define BAUD_115200 ((DWORD)0x20000)
  258. #define BAUD_57600 ((DWORD)0x40000)
  259. #define BAUD_USER ((DWORD)0x10000000)
  260.  
  261. #define DATABITS_5 ((WORD)0x1)
  262. #define DATABITS_6 ((WORD)0x2)
  263. #define DATABITS_7 ((WORD)0x4)
  264. #define DATABITS_8 ((WORD)0x8)
  265. #define DATABITS_16 ((WORD)0x10)
  266. #define DATABITS_16X ((WORD)0x20)
  267.  
  268. #define STOPBITS_10 ((WORD)0x1)
  269. #define STOPBITS_15 ((WORD)0x2)
  270. #define STOPBITS_20 ((WORD)0x4)
  271. #define PARITY_NONE ((WORD)0x100)
  272. #define PARITY_ODD ((WORD)0x200)
  273. #define PARITY_EVEN ((WORD)0x400)
  274. #define PARITY_MARK ((WORD)0x800)
  275. #define PARITY_SPACE ((WORD)0x1000)
  276.  
  277.   typedef struct _COMMPROP {
  278.     WORD wPacketLength;
  279.     WORD wPacketVersion;
  280.     DWORD dwServiceMask;
  281.     DWORD dwReserved1;
  282.     DWORD dwMaxTxQueue;
  283.     DWORD dwMaxRxQueue;
  284.     DWORD dwMaxBaud;
  285.     DWORD dwProvSubType;
  286.     DWORD dwProvCapabilities;
  287.     DWORD dwSettableParams;
  288.     DWORD dwSettableBaud;
  289.     WORD wSettableData;
  290.     WORD wSettableStopParity;
  291.     DWORD dwCurrentTxQueue;
  292.     DWORD dwCurrentRxQueue;
  293.     DWORD dwProvSpec1;
  294.     DWORD dwProvSpec2;
  295.     WCHAR wcProvChar[1];
  296.   } COMMPROP,*LPCOMMPROP;
  297.  
  298. #define COMMPROP_INITIALIZED ((DWORD)0xE73CF52E)
  299.  
  300.   typedef struct _COMSTAT {
  301.     DWORD fCtsHold : 1;
  302.     DWORD fDsrHold : 1;
  303.     DWORD fRlsdHold : 1;
  304.     DWORD fXoffHold : 1;
  305.     DWORD fXoffSent : 1;
  306.     DWORD fEof : 1;
  307.     DWORD fTxim : 1;
  308.     DWORD fReserved : 25;
  309.     DWORD cbInQue;
  310.     DWORD cbOutQue;
  311.   } COMSTAT,*LPCOMSTAT;
  312.  
  313. #define DTR_CONTROL_DISABLE 0x0
  314. #define DTR_CONTROL_ENABLE 0x1
  315. #define DTR_CONTROL_HANDSHAKE 0x2
  316.  
  317. #define RTS_CONTROL_DISABLE 0x0
  318. #define RTS_CONTROL_ENABLE 0x1
  319. #define RTS_CONTROL_HANDSHAKE 0x2
  320. #define RTS_CONTROL_TOGGLE 0x3
  321.  
  322.   typedef struct _DCB {
  323.     DWORD DCBlength;
  324.     DWORD BaudRate;
  325.     DWORD fBinary: 1;
  326.     DWORD fParity: 1;
  327.     DWORD fOutxCtsFlow:1;
  328.     DWORD fOutxDsrFlow:1;
  329.     DWORD fDtrControl:2;
  330.     DWORD fDsrSensitivity:1;
  331.     DWORD fTXContinueOnXoff: 1;
  332.     DWORD fOutX: 1;
  333.     DWORD fInX: 1;
  334.     DWORD fErrorChar: 1;
  335.     DWORD fNull: 1;
  336.     DWORD fRtsControl:2;
  337.     DWORD fAbortOnError:1;
  338.     DWORD fDummy2:17;
  339.     WORD wReserved;
  340.     WORD XonLim;
  341.     WORD XoffLim;
  342.     BYTE ByteSize;
  343.     BYTE Parity;
  344.     BYTE StopBits;
  345.     char XonChar;
  346.     char XoffChar;
  347.     char ErrorChar;
  348.     char EofChar;
  349.     char EvtChar;
  350.     WORD wReserved1;
  351.   } DCB,*LPDCB;
  352.  
  353.   typedef struct _COMMTIMEOUTS {
  354.     DWORD ReadIntervalTimeout;
  355.     DWORD ReadTotalTimeoutMultiplier;
  356.     DWORD ReadTotalTimeoutConstant;
  357.     DWORD WriteTotalTimeoutMultiplier;
  358.     DWORD WriteTotalTimeoutConstant;
  359.   } COMMTIMEOUTS,*LPCOMMTIMEOUTS;
  360.  
  361.   typedef struct _COMMCONFIG {
  362.     DWORD dwSize;
  363.     WORD wVersion;
  364.     WORD wReserved;
  365.     DCB dcb;
  366.     DWORD dwProviderSubType;
  367.     DWORD dwProviderOffset;
  368.     DWORD dwProviderSize;
  369.     WCHAR wcProviderData[1];
  370.   } COMMCONFIG,*LPCOMMCONFIG;
  371.  
  372.   typedef struct _SYSTEM_INFO {
  373.     union {
  374.       DWORD dwOemId;
  375.       struct {
  376.         WORD wProcessorArchitecture;
  377.         WORD wReserved;
  378.       };
  379.     };
  380.     DWORD dwPageSize;
  381.     LPVOID lpMinimumApplicationAddress;
  382.     LPVOID lpMaximumApplicationAddress;
  383.     DWORD_PTR dwActiveProcessorMask;
  384.     DWORD dwNumberOfProcessors;
  385.     DWORD dwProcessorType;
  386.     DWORD dwAllocationGranularity;
  387.     WORD wProcessorLevel;
  388.     WORD wProcessorRevision;
  389.   } SYSTEM_INFO,*LPSYSTEM_INFO;
  390.  
  391. #define FreeModule(hLibModule) FreeLibrary((hLibModule))
  392. #define MakeProcInstance(lpProc,hInstance) (lpProc)
  393. #define FreeProcInstance(lpProc) (lpProc)
  394.  
  395. #define GMEM_FIXED 0x0
  396. #define GMEM_MOVEABLE 0x2
  397. #define GMEM_NOCOMPACT 0x10
  398. #define GMEM_NODISCARD 0x20
  399. #define GMEM_ZEROINIT 0x40
  400. #define GMEM_MODIFY 0x80
  401. #define GMEM_DISCARDABLE 0x100
  402. #define GMEM_NOT_BANKED 0x1000
  403. #define GMEM_SHARE 0x2000
  404. #define GMEM_DDESHARE 0x2000
  405. #define GMEM_NOTIFY 0x4000
  406. #define GMEM_LOWER GMEM_NOT_BANKED
  407. #define GMEM_VALID_FLAGS 0x7F72
  408. #define GMEM_INVALID_HANDLE 0x8000
  409.  
  410. #define GHND (GMEM_MOVEABLE | GMEM_ZEROINIT)
  411. #define GPTR (GMEM_FIXED | GMEM_ZEROINIT)
  412.  
  413. #define GlobalLRUNewest(h) ((HANDLE)(h))
  414. #define GlobalLRUOldest(h) ((HANDLE)(h))
  415. #define GlobalDiscard(h) GlobalReAlloc((h),0,GMEM_MOVEABLE)
  416.  
  417. #define GMEM_DISCARDED 0x4000
  418. #define GMEM_LOCKCOUNT 0xff
  419.  
  420.   typedef struct _MEMORYSTATUS {
  421.     DWORD dwLength;
  422.     DWORD dwMemoryLoad;
  423.     SIZE_T dwTotalPhys;
  424.     SIZE_T dwAvailPhys;
  425.     SIZE_T dwTotalPageFile;
  426.     SIZE_T dwAvailPageFile;
  427.     SIZE_T dwTotalVirtual;
  428.     SIZE_T dwAvailVirtual;
  429.   } MEMORYSTATUS,*LPMEMORYSTATUS;
  430.  
  431. #define LMEM_FIXED 0x0
  432. #define LMEM_MOVEABLE 0x2
  433. #define LMEM_NOCOMPACT 0x10
  434. #define LMEM_NODISCARD 0x20
  435. #define LMEM_ZEROINIT 0x40
  436. #define LMEM_MODIFY 0x80
  437. #define LMEM_DISCARDABLE 0xf00
  438. #define LMEM_VALID_FLAGS 0xf72
  439. #define LMEM_INVALID_HANDLE 0x8000
  440.  
  441. #define LHND (LMEM_MOVEABLE | LMEM_ZEROINIT)
  442. #define LPTR (LMEM_FIXED | LMEM_ZEROINIT)
  443.  
  444. #define NONZEROLHND (LMEM_MOVEABLE)
  445. #define NONZEROLPTR (LMEM_FIXED)
  446.  
  447. #define LocalDiscard(h) LocalReAlloc((h),0,LMEM_MOVEABLE)
  448.  
  449. #define LMEM_DISCARDED 0x4000
  450. #define LMEM_LOCKCOUNT 0xff
  451.  
  452. #define DEBUG_PROCESS 0x1
  453. #define DEBUG_ONLY_THIS_PROCESS 0x2
  454. #define CREATE_SUSPENDED 0x4
  455. #define DETACHED_PROCESS 0x8
  456. #define CREATE_NEW_CONSOLE 0x10
  457. #define NORMAL_PRIORITY_CLASS 0x20
  458. #define IDLE_PRIORITY_CLASS 0x40
  459. #define HIGH_PRIORITY_CLASS 0x80
  460. #define REALTIME_PRIORITY_CLASS 0x100
  461. #define CREATE_NEW_PROCESS_GROUP 0x200
  462. #define CREATE_UNICODE_ENVIRONMENT 0x400
  463. #define CREATE_SEPARATE_WOW_VDM 0x800
  464. #define CREATE_SHARED_WOW_VDM 0x1000
  465. #define CREATE_FORCEDOS 0x2000
  466. #define BELOW_NORMAL_PRIORITY_CLASS 0x4000
  467. #define ABOVE_NORMAL_PRIORITY_CLASS 0x8000
  468. #define STACK_SIZE_PARAM_IS_A_RESERVATION 0x10000
  469.  
  470. #define CREATE_BREAKAWAY_FROM_JOB 0x1000000
  471. #define CREATE_PRESERVE_CODE_AUTHZ_LEVEL 0x2000000
  472.  
  473. #define CREATE_DEFAULT_ERROR_MODE 0x4000000
  474. #define CREATE_NO_WINDOW 0x8000000
  475.  
  476. #define PROFILE_USER 0x10000000
  477. #define PROFILE_KERNEL 0x20000000
  478. #define PROFILE_SERVER 0x40000000
  479.  
  480. #define CREATE_IGNORE_SYSTEM_DEFAULT 0x80000000
  481.  
  482. #define THREAD_PRIORITY_LOWEST THREAD_BASE_PRIORITY_MIN
  483. #define THREAD_PRIORITY_BELOW_NORMAL (THREAD_PRIORITY_LOWEST+1)
  484. #define THREAD_PRIORITY_NORMAL 0
  485. #define THREAD_PRIORITY_HIGHEST THREAD_BASE_PRIORITY_MAX
  486. #define THREAD_PRIORITY_ABOVE_NORMAL (THREAD_PRIORITY_HIGHEST-1)
  487. #define THREAD_PRIORITY_ERROR_RETURN (MAXLONG)
  488.  
  489. #define THREAD_PRIORITY_TIME_CRITICAL THREAD_BASE_PRIORITY_LOWRT
  490. #define THREAD_PRIORITY_IDLE THREAD_BASE_PRIORITY_IDLE
  491.  
  492. #define EXCEPTION_DEBUG_EVENT 1
  493. #define CREATE_THREAD_DEBUG_EVENT 2
  494. #define CREATE_PROCESS_DEBUG_EVENT 3
  495. #define EXIT_THREAD_DEBUG_EVENT 4
  496. #define EXIT_PROCESS_DEBUG_EVENT 5
  497. #define LOAD_DLL_DEBUG_EVENT 6
  498. #define UNLOAD_DLL_DEBUG_EVENT 7
  499. #define OUTPUT_DEBUG_STRING_EVENT 8
  500. #define RIP_EVENT 9
  501.  
  502.   typedef struct _EXCEPTION_DEBUG_INFO {
  503.     EXCEPTION_RECORD ExceptionRecord;
  504.     DWORD dwFirstChance;
  505.   } EXCEPTION_DEBUG_INFO,*LPEXCEPTION_DEBUG_INFO;
  506.  
  507.   typedef struct _CREATE_THREAD_DEBUG_INFO {
  508.     HANDLE hThread;
  509.     LPVOID lpThreadLocalBase;
  510.     LPTHREAD_START_ROUTINE lpStartAddress;
  511.   } CREATE_THREAD_DEBUG_INFO,*LPCREATE_THREAD_DEBUG_INFO;
  512.  
  513.   typedef struct _CREATE_PROCESS_DEBUG_INFO {
  514.     HANDLE hFile;
  515.     HANDLE hProcess;
  516.     HANDLE hThread;
  517.     LPVOID lpBaseOfImage;
  518.     DWORD dwDebugInfoFileOffset;
  519.     DWORD nDebugInfoSize;
  520.     LPVOID lpThreadLocalBase;
  521.     LPTHREAD_START_ROUTINE lpStartAddress;
  522.     LPVOID lpImageName;
  523.     WORD fUnicode;
  524.   } CREATE_PROCESS_DEBUG_INFO,*LPCREATE_PROCESS_DEBUG_INFO;
  525.  
  526.   typedef struct _EXIT_THREAD_DEBUG_INFO {
  527.     DWORD dwExitCode;
  528.   } EXIT_THREAD_DEBUG_INFO,*LPEXIT_THREAD_DEBUG_INFO;
  529.  
  530.   typedef struct _EXIT_PROCESS_DEBUG_INFO {
  531.     DWORD dwExitCode;
  532.   } EXIT_PROCESS_DEBUG_INFO,*LPEXIT_PROCESS_DEBUG_INFO;
  533.  
  534.   typedef struct _LOAD_DLL_DEBUG_INFO {
  535.     HANDLE hFile;
  536.     LPVOID lpBaseOfDll;
  537.     DWORD dwDebugInfoFileOffset;
  538.     DWORD nDebugInfoSize;
  539.     LPVOID lpImageName;
  540.     WORD fUnicode;
  541.   } LOAD_DLL_DEBUG_INFO,*LPLOAD_DLL_DEBUG_INFO;
  542.  
  543.   typedef struct _UNLOAD_DLL_DEBUG_INFO {
  544.     LPVOID lpBaseOfDll;
  545.   } UNLOAD_DLL_DEBUG_INFO,*LPUNLOAD_DLL_DEBUG_INFO;
  546.  
  547.   typedef struct _OUTPUT_DEBUG_STRING_INFO {
  548.     LPSTR lpDebugStringData;
  549.     WORD fUnicode;
  550.     WORD nDebugStringLength;
  551.   } OUTPUT_DEBUG_STRING_INFO,*LPOUTPUT_DEBUG_STRING_INFO;
  552.  
  553.   typedef struct _RIP_INFO {
  554.     DWORD dwError;
  555.     DWORD dwType;
  556.   } RIP_INFO,*LPRIP_INFO;
  557.  
  558.   typedef struct _DEBUG_EVENT {
  559.     DWORD dwDebugEventCode;
  560.     DWORD dwProcessId;
  561.     DWORD dwThreadId;
  562.     union {
  563.       EXCEPTION_DEBUG_INFO Exception;
  564.       CREATE_THREAD_DEBUG_INFO CreateThread;
  565.       CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
  566.       EXIT_THREAD_DEBUG_INFO ExitThread;
  567.       EXIT_PROCESS_DEBUG_INFO ExitProcess;
  568.       LOAD_DLL_DEBUG_INFO LoadDll;
  569.       UNLOAD_DLL_DEBUG_INFO UnloadDll;
  570.       OUTPUT_DEBUG_STRING_INFO DebugString;
  571.       RIP_INFO RipInfo;
  572.     } u;
  573.   } DEBUG_EVENT,*LPDEBUG_EVENT;
  574.  
  575.   typedef PCONTEXT LPCONTEXT;
  576.   typedef PEXCEPTION_RECORD LPEXCEPTION_RECORD;
  577.   typedef PEXCEPTION_POINTERS LPEXCEPTION_POINTERS;
  578.  
  579. #define DRIVE_UNKNOWN 0
  580. #define DRIVE_NO_ROOT_DIR 1
  581. #define DRIVE_REMOVABLE 2
  582. #define DRIVE_FIXED 3
  583. #define DRIVE_REMOTE 4
  584. #define DRIVE_CDROM 5
  585. #define DRIVE_RAMDISK 6
  586.  
  587. #define GetFreeSpace(w) (0x100000L)
  588. #define FILE_TYPE_UNKNOWN 0x0
  589. #define FILE_TYPE_DISK 0x1
  590. #define FILE_TYPE_CHAR 0x2
  591. #define FILE_TYPE_PIPE 0x3
  592. #define FILE_TYPE_REMOTE 0x8000
  593.  
  594. #define STD_INPUT_HANDLE ((DWORD)-10)
  595. #define STD_OUTPUT_HANDLE ((DWORD)-11)
  596. #define STD_ERROR_HANDLE ((DWORD)-12)
  597.  
  598. #define NOPARITY 0
  599. #define ODDPARITY 1
  600. #define EVENPARITY 2
  601. #define MARKPARITY 3
  602. #define SPACEPARITY 4
  603.  
  604. #define ONESTOPBIT 0
  605. #define ONE5STOPBITS 1
  606. #define TWOSTOPBITS 2
  607.  
  608. #define IGNORE 0
  609. #define INFINITE 0xffffffff
  610.  
  611. #define CBR_110 110
  612. #define CBR_300 300
  613. #define CBR_600 600
  614. #define CBR_1200 1200
  615. #define CBR_2400 2400
  616. #define CBR_4800 4800
  617. #define CBR_9600 9600
  618. #define CBR_14400 14400
  619. #define CBR_19200 19200
  620. #define CBR_38400 38400
  621. #define CBR_56000 56000
  622. #define CBR_57600 57600
  623. #define CBR_115200 115200
  624. #define CBR_128000 128000
  625. #define CBR_256000 256000
  626.  
  627. #define CE_RXOVER 0x1
  628. #define CE_OVERRUN 0x2
  629. #define CE_RXPARITY 0x4
  630. #define CE_FRAME 0x8
  631. #define CE_BREAK 0x10
  632. #define CE_TXFULL 0x100
  633. #define CE_PTO 0x200
  634. #define CE_IOE 0x400
  635. #define CE_DNS 0x800
  636. #define CE_OOP 0x1000
  637. #define CE_MODE 0x8000
  638.  
  639. #define IE_BADID (-1)
  640. #define IE_OPEN (-2)
  641. #define IE_NOPEN (-3)
  642. #define IE_MEMORY (-4)
  643. #define IE_DEFAULT (-5)
  644. #define IE_HARDWARE (-10)
  645. #define IE_BYTESIZE (-11)
  646. #define IE_BAUDRATE (-12)
  647.  
  648. #define EV_RXCHAR 0x1
  649. #define EV_RXFLAG 0x2
  650. #define EV_TXEMPTY 0x4
  651. #define EV_CTS 0x8
  652. #define EV_DSR 0x10
  653. #define EV_RLSD 0x20
  654. #define EV_BREAK 0x40
  655. #define EV_ERR 0x80
  656. #define EV_RING 0x100
  657. #define EV_PERR 0x200
  658. #define EV_RX80FULL 0x400
  659. #define EV_EVENT1 0x800
  660. #define EV_EVENT2 0x1000
  661.  
  662. #define SETXOFF 1
  663. #define SETXON 2
  664. #define SETRTS 3
  665. #define CLRRTS 4
  666. #define SETDTR 5
  667. #define CLRDTR 6
  668. #define RESETDEV 7
  669. #define SETBREAK 8
  670. #define CLRBREAK 9
  671.  
  672. #define PURGE_TXABORT 0x1
  673. #define PURGE_RXABORT 0x2
  674. #define PURGE_TXCLEAR 0x4
  675. #define PURGE_RXCLEAR 0x8
  676.  
  677. #define LPTx 0x80
  678.  
  679. #define MS_CTS_ON ((DWORD)0x10)
  680. #define MS_DSR_ON ((DWORD)0x20)
  681. #define MS_RING_ON ((DWORD)0x40)
  682. #define MS_RLSD_ON ((DWORD)0x80)
  683.  
  684. #define S_QUEUEEMPTY 0
  685. #define S_THRESHOLD 1
  686. #define S_ALLTHRESHOLD 2
  687.  
  688. #define S_NORMAL 0
  689. #define S_LEGATO 1
  690. #define S_STACCATO 2
  691.  
  692. #define S_PERIOD512 0
  693. #define S_PERIOD1024 1
  694. #define S_PERIOD2048 2
  695. #define S_PERIODVOICE 3
  696. #define S_WHITE512 4
  697. #define S_WHITE1024 5
  698. #define S_WHITE2048 6
  699. #define S_WHITEVOICE 7
  700.  
  701. #define S_SERDVNA (-1)
  702. #define S_SEROFM (-2)
  703. #define S_SERMACT (-3)
  704. #define S_SERQFUL (-4)
  705. #define S_SERBDNT (-5)
  706. #define S_SERDLN (-6)
  707. #define S_SERDCC (-7)
  708. #define S_SERDTP (-8)
  709. #define S_SERDVL (-9)
  710. #define S_SERDMD (-10)
  711. #define S_SERDSH (-11)
  712. #define S_SERDPT (-12)
  713. #define S_SERDFQ (-13)
  714. #define S_SERDDR (-14)
  715. #define S_SERDSR (-15)
  716. #define S_SERDST (-16)
  717.  
  718. #define NMPWAIT_WAIT_FOREVER 0xffffffff
  719. #define NMPWAIT_NOWAIT 0x1
  720. #define NMPWAIT_USE_DEFAULT_WAIT 0x0
  721.  
  722. #define FS_CASE_IS_PRESERVED FILE_CASE_PRESERVED_NAMES
  723. #define FS_CASE_SENSITIVE FILE_CASE_SENSITIVE_SEARCH
  724. #define FS_UNICODE_STORED_ON_DISK FILE_UNICODE_ON_DISK
  725. #define FS_PERSISTENT_ACLS FILE_PERSISTENT_ACLS
  726. #define FS_VOL_IS_COMPRESSED FILE_VOLUME_IS_COMPRESSED
  727. #define FS_FILE_COMPRESSION FILE_FILE_COMPRESSION
  728. #define FS_FILE_ENCRYPTION FILE_SUPPORTS_ENCRYPTION
  729.  
  730. #define FILE_MAP_COPY SECTION_QUERY
  731. #define FILE_MAP_WRITE SECTION_MAP_WRITE
  732. #define FILE_MAP_READ SECTION_MAP_READ
  733. #define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS
  734. #define FILE_MAP_EXECUTE SECTION_MAP_EXECUTE_EXPLICIT
  735.  
  736. #define OF_READ 0x0
  737. #define OF_WRITE 0x1
  738. #define OF_READWRITE 0x2
  739. #define OF_SHARE_COMPAT 0x0
  740. #define OF_SHARE_EXCLUSIVE 0x10
  741. #define OF_SHARE_DENY_WRITE 0x20
  742. #define OF_SHARE_DENY_READ 0x30
  743. #define OF_SHARE_DENY_NONE 0x40
  744. #define OF_PARSE 0x100
  745. #define OF_DELETE 0x200
  746. #define OF_VERIFY 0x400
  747. #define OF_CANCEL 0x800
  748. #define OF_CREATE 0x1000
  749. #define OF_PROMPT 0x2000
  750. #define OF_EXIST 0x4000
  751. #define OF_REOPEN 0x8000
  752.  
  753. #define OFS_MAXPATHNAME 128
  754.   typedef struct _OFSTRUCT {
  755.     BYTE cBytes;
  756.     BYTE fFixedDisk;
  757.     WORD nErrCode;
  758.     WORD Reserved1;
  759.     WORD Reserved2;
  760.     CHAR szPathName[OFS_MAXPATHNAME];
  761.   } OFSTRUCT,*LPOFSTRUCT,*POFSTRUCT;
  762.  
  763. #ifndef NOWINBASEINTERLOCK
  764.  
  765. #ifndef _NTOS_
  766.  
  767. #if defined(__ia64__) && !defined(RC_INVOKED)
  768.  
  769. #define InterlockedIncrement _InterlockedIncrement
  770. #define InterlockedIncrementAcquire _InterlockedIncrement_acq
  771. #define InterlockedIncrementRelease _InterlockedIncrement_rel
  772. #define InterlockedDecrement _InterlockedDecrement
  773. #define InterlockedDecrementAcquire _InterlockedDecrement_acq
  774. #define InterlockedDecrementRelease _InterlockedDecrement_rel
  775. #define InterlockedExchange _InterlockedExchange
  776. #define InterlockedExchangeAdd _InterlockedExchangeAdd
  777. #define InterlockedCompareExchange _InterlockedCompareExchange
  778. #define InterlockedCompareExchangeAcquire _InterlockedCompareExchange_acq
  779. #define InterlockedCompareExchangeRelease _InterlockedCompareExchange_rel
  780. #define InterlockedExchangePointer _InterlockedExchangePointer
  781. #define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer
  782. #define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePointer_rel
  783. #define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePointer_acq
  784.  
  785. #define InterlockedIncrement64 _InterlockedIncrement64
  786. #define InterlockedDecrement64 _InterlockedDecrement64
  787. #define InterlockedExchange64 _InterlockedExchange64
  788. #define InterlockedExchangeAcquire64 _InterlockedExchange64_acq
  789. #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64
  790. #define InterlockedCompareExchange64 _InterlockedCompareExchange64
  791. #define InterlockedCompareExchangeAcquire64 _InterlockedCompareExchange64_acq
  792. #define InterlockedCompareExchangeRelease64 _InterlockedCompareExchange64_rel
  793.  
  794.   LONGLONG __cdecl InterlockedIncrement64(LONGLONG volatile *Addend);
  795.   LONGLONG __cdecl InterlockedDecrement64(LONGLONG volatile *Addend);
  796.   LONG __cdecl InterlockedIncrementAcquire(LONG volatile *Addend);
  797.   LONG __cdecl InterlockedDecrementAcquire(LONG volatile *Addend);
  798.   LONG __cdecl InterlockedIncrementRelease(LONG volatile *Addend);
  799.   LONG __cdecl InterlockedDecrementRelease(LONG volatile *Addend);
  800.   LONGLONG __cdecl InterlockedExchange64 (LONGLONG volatile *Target,LONGLONG Value);
  801.   LONGLONG __cdecl InterlockedExchangeAcquire64 (LONGLONG volatile *Target,LONGLONG Value);
  802.   LONGLONG __cdecl InterlockedExchangeAdd64 (LONGLONG volatile *Addend,LONGLONG Value);
  803.   LONGLONG __cdecl InterlockedCompareExchange64 (LONGLONG volatile *Destination,LONGLONG ExChange,LONGLONG Comperand);
  804.   LONGLONG __cdecl InterlockedCompareExchangeAcquire64 (LONGLONG volatile *Destination,LONGLONG ExChange,LONGLONG Comperand);
  805.   LONGLONG __cdecl InterlockedCompareExchangeRelease64 (LONGLONG volatile *Destination,LONGLONG ExChange,LONGLONG Comperand);
  806.   LONG __cdecl InterlockedIncrement(LONG volatile *lpAddend);
  807.   LONG __cdecl InterlockedDecrement(LONG volatile *lpAddend);
  808.   LONG __cdecl InterlockedExchange(LONG volatile *Target,LONG Value);
  809.   LONG __cdecl InterlockedExchangeAdd(LONG volatile *Addend,LONG Value);
  810.   LONG __cdecl InterlockedCompareExchange(LONG volatile *Destination,LONG ExChange,LONG Comperand);
  811.   LONG __cdecl InterlockedCompareExchangeRelease(LONG volatile *Destination,LONG ExChange,LONG Comperand);
  812.   LONG __cdecl InterlockedCompareExchangeAcquire(LONG volatile *Destination,LONG ExChange,LONG Comperand);
  813.   PVOID __cdecl InterlockedExchangePointer(PVOID volatile *Target,PVOID Value);
  814.   PVOID __cdecl InterlockedCompareExchangePointer(PVOID volatile *Destination,PVOID ExChange,PVOID Comperand);
  815.   PVOID __cdecl InterlockedCompareExchangePointerAcquire(PVOID volatile *Destination,PVOID Exchange,PVOID Comperand);
  816.   PVOID __cdecl InterlockedCompareExchangePointerRelease(PVOID volatile *Destination,PVOID Exchange,PVOID Comperand);
  817.  
  818. #ifndef InterlockedAnd
  819. #define InterlockedAnd InterlockedAnd_Inline
  820.   __CRT_INLINE LONG InterlockedAnd_Inline(LONG volatile *Target,LONG Set) {
  821.     LONG i;
  822.     LONG j;
  823.     j = *Target;
  824.     do {
  825.       i = j;
  826.       j = InterlockedCompareExchange(Target,i & Set,i);
  827.     } while(i!=j);
  828.     return j;
  829.   }
  830. #endif
  831.  
  832. #ifndef InterlockedOr
  833. #define InterlockedOr InterlockedOr_Inline
  834.  
  835.   __CRT_INLINE LONG InterlockedOr_Inline(LONG volatile *Target,LONG Set) {
  836.     LONG i;
  837.     LONG j;
  838.     j = *Target;
  839.     do {
  840.       i = j;
  841.       j = InterlockedCompareExchange(Target,i | Set,i);
  842.     } while(i!=j);
  843.     return j;
  844.   }
  845. #endif
  846.  
  847. #ifndef InterlockedXor
  848. #define InterlockedXor InterlockedXor_Inline
  849.  
  850.   __CRT_INLINE LONG InterlockedXor_Inline(LONG volatile *Target,LONG Set) {
  851.     LONG i;
  852.     LONG j;
  853.     j = *Target;
  854.     do {
  855.       i = j;
  856.       j = InterlockedCompareExchange(Target,i ^ Set,i);
  857.     } while(i!=j);
  858.     return j;
  859.   }
  860. #endif
  861.  
  862. #ifndef !defined (InterlockedAnd64)
  863. #define InterlockedAnd64 InterlockedAnd64_Inline
  864.  
  865.   __CRT_INLINE LONGLONG InterlockedAnd64_Inline (LONGLONG volatile *Destination,LONGLONG Value) {
  866.     LONGLONG Old;
  867.     do {
  868.       Old = *Destination;
  869.     } while(InterlockedCompareExchange64(Destination,Old & Value,Old)!=Old);
  870.     return Old;
  871.   }
  872. #endif
  873.  
  874. #ifndef InterlockedOr64
  875. #define InterlockedOr64 InterlockedOr64_Inline
  876.  
  877.   __CRT_INLINE LONGLONG InterlockedOr64_Inline (LONGLONG volatile *Destination,LONGLONG Value) {
  878.     LONGLONG Old;
  879.     do {
  880.       Old = *Destination;
  881.     } while(InterlockedCompareExchange64(Destination,Old | Value,Old)!=Old);
  882.     return Old;
  883.   }
  884. #endif
  885.  
  886. #ifndef InterlockedXor64
  887. #define InterlockedXor64 InterlockedXor64_Inline
  888.  
  889.   __CRT_INLINE LONGLONG InterlockedXor64_Inline (LONGLONG volatile *Destination,LONGLONG Value) {
  890.     LONGLONG Old;
  891.     do {
  892.       Old = *Destination;
  893.     } while(InterlockedCompareExchange64(Destination,Old ^ Value,Old)!=Old);
  894.     return Old;
  895.   }
  896. #endif
  897.  
  898. #ifndef InterlockedBitTestAndSet
  899. #define InterlockedBitTestAndSet InterlockedBitTestAndSet_Inline
  900.  
  901.   __CRT_INLINE BOOLEAN InterlockedBitTestAndSet_Inline(LONG *Base,LONG Bit) {
  902.     LONG tBit;
  903.     tBit = 1<<(Bit & (sizeof (*Base)*8-1));
  904.     return (BOOLEAN)((InterlockedOr(&Base[Bit/(sizeof(*Base)*8)],tBit)&tBit)!=0);
  905.   }
  906. #endif
  907.  
  908. #ifndef InterlockedBitTestAndReset
  909. #define InterlockedBitTestAndReset InterlockedBitTestAndReset_Inline
  910.  
  911.   __CRT_INLINE BOOLEAN InterlockedBitTestAndReset_Inline(LONG *Base,LONG Bit) {
  912.     LONG tBit;
  913.     tBit = 1<<(Bit & (sizeof (*Base)*8-1));
  914.     return (BOOLEAN)((InterlockedAnd(&Base[Bit/(sizeof(*Base)*8)],~tBit)&tBit)!=0);
  915.   }
  916. #endif
  917.  
  918. #ifndef InterlockedBitTestAndComplement
  919. #define InterlockedBitTestAndComplement InterlockedBitTestAndComplement_Inline
  920.  
  921.   __CRT_INLINE BOOLEAN InterlockedBitTestAndComplement_Inline(LONG *Base,LONG Bit) {
  922.     LONG tBit;
  923.     tBit = 1<<(Bit & (sizeof (*Base)*8-1));
  924.     return (BOOLEAN)((InterlockedXor(&Base[Bit/(sizeof(*Base)*8)],tBit)&tBit)!=0);
  925.   }
  926. #endif
  927. #elif defined(__x86_64) && !defined(RC_INVOKED)
  928.  
  929. #define InterlockedIncrement _InterlockedIncrement
  930. #define InterlockedIncrementAcquire InterlockedIncrement
  931. #define InterlockedIncrementRelease InterlockedIncrement
  932. #define InterlockedDecrement _InterlockedDecrement
  933. #define InterlockedDecrementAcquire InterlockedDecrement
  934. #define InterlockedDecrementRelease InterlockedDecrement
  935. #define InterlockedExchange _InterlockedExchange
  936. #define InterlockedExchangeAdd _InterlockedExchangeAdd
  937. #define InterlockedCompareExchange _InterlockedCompareExchange
  938. #define InterlockedCompareExchangeAcquire InterlockedCompareExchange
  939. #define InterlockedCompareExchangeRelease InterlockedCompareExchange
  940. #define InterlockedExchangePointer _InterlockedExchangePointer
  941. #define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer
  942. #define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePointer
  943. #define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePointer
  944. #define InterlockedAnd64 _InterlockedAnd64
  945. #define InterlockedOr64 _InterlockedOr64
  946. #define InterlockedXor64 _InterlockedXor64
  947. #define InterlockedIncrement64 _InterlockedIncrement64
  948. #define InterlockedDecrement64 _InterlockedDecrement64
  949. #define InterlockedExchange64 _InterlockedExchange64
  950. #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64
  951. #define InterlockedCompareExchange64 _InterlockedCompareExchange64
  952. #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64
  953. #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64
  954.  
  955.   LONG InterlockedIncrement(LONG volatile *Addend);
  956.   LONG InterlockedDecrement(LONG volatile *Addend);
  957.   LONG InterlockedExchange(LONG volatile *Target,LONG Value);
  958.   LONG InterlockedExchangeAdd(LONG volatile *Addend,LONG Value);
  959.   LONG InterlockedCompareExchange(LONG volatile *Destination,LONG ExChange,LONG Comperand);
  960.   PVOID InterlockedCompareExchangePointer(PVOID volatile *Destination,PVOID Exchange,PVOID Comperand);
  961.   PVOID InterlockedExchangePointer(PVOID volatile *Target,PVOID Value);
  962.   LONG64 InterlockedAnd64(LONG64 volatile *Destination,LONG64 Value);
  963.   LONG64 InterlockedOr64(LONG64 volatile *Destination,LONG64 Value);
  964.   LONG64 InterlockedXor64(LONG64 volatile *Destination,LONG64 Value);
  965.   LONG64 InterlockedIncrement64(LONG64 volatile *Addend);
  966.   LONG64 InterlockedDecrement64(LONG64 volatile *Addend);
  967.   LONG64 InterlockedExchange64(LONG64 volatile *Target,LONG64 Value);
  968.   LONG64 InterlockedExchangeAdd64(LONG64 volatile *Addend,LONG64 Value);
  969.   LONG64 InterlockedCompareExchange64(LONG64 volatile *Destination,LONG64 ExChange,LONG64 Comperand);
  970. #else
  971.   LONG WINAPI InterlockedIncrement(LONG volatile *lpAddend);
  972.   LONG WINAPI InterlockedDecrement(LONG volatile *lpAddend);
  973.   LONG WINAPI InterlockedExchange(LONG volatile *Target,LONG Value);
  974.  
  975. #define InterlockedExchangePointer(Target,Value) (PVOID)InterlockedExchange((PLONG)(Target),(LONG)(Value))
  976.  
  977.   LONG WINAPI InterlockedExchangeAdd(LONG volatile *Addend,LONG Value);
  978.   LONG WINAPI InterlockedCompareExchange(LONG volatile *Destination,LONG Exchange,LONG Comperand);
  979.   LONGLONG WINAPI InterlockedCompareExchange64(LONGLONG volatile *Destination,LONGLONG Exchange,LONGLONG Comperand);
  980.  
  981.   __CRT_INLINE LONGLONG InterlockedAnd64 (LONGLONG volatile *Destination,LONGLONG Value) {
  982.     LONGLONG Old;
  983.     do {
  984.       Old = *Destination;
  985.     } while(InterlockedCompareExchange64(Destination,Old & Value,Old)!=Old);
  986.     return Old;
  987.   }
  988.  
  989.   __CRT_INLINE LONGLONG InterlockedOr64 (LONGLONG volatile *Destination,LONGLONG Value) {
  990.     LONGLONG Old;
  991.     do {
  992.       Old = *Destination;
  993.     } while(InterlockedCompareExchange64(Destination,Old | Value,Old)!=Old);
  994.     return Old;
  995.   }
  996.  
  997.   __CRT_INLINE LONGLONG InterlockedXor64 (LONGLONG volatile *Destination,LONGLONG Value) {
  998.     LONGLONG Old;
  999.     do {
  1000.       Old = *Destination;
  1001.     } while(InterlockedCompareExchange64(Destination,Old ^ Value,Old)!=Old);
  1002.  
  1003.     return Old;
  1004.   }
  1005.  
  1006.   __CRT_INLINE LONGLONG InterlockedIncrement64(LONGLONG volatile *Addend) {
  1007.     LONGLONG Old;
  1008.     do {
  1009.       Old = *Addend;
  1010.     } while(InterlockedCompareExchange64(Addend,Old + 1,Old)!=Old);
  1011.     return Old + 1;
  1012.   }
  1013.  
  1014.   __CRT_INLINE LONGLONG InterlockedDecrement64(LONGLONG volatile *Addend) {
  1015.     LONGLONG Old;
  1016.     do {
  1017.       Old = *Addend;
  1018.     } while(InterlockedCompareExchange64(Addend,Old - 1,Old)!=Old);
  1019.     return Old - 1;
  1020.   }
  1021.  
  1022.   __CRT_INLINE LONGLONG InterlockedExchange64(LONGLONG volatile *Target,LONGLONG Value) {
  1023.     LONGLONG Old;
  1024.     do {
  1025.       Old = *Target;
  1026.     } while(InterlockedCompareExchange64(Target,Value,Old)!=Old);
  1027.     return Old;
  1028.   }
  1029.  
  1030.   __CRT_INLINE LONGLONG InterlockedExchangeAdd64(LONGLONG volatile *Addend,LONGLONG Value) {
  1031.     LONGLONG Old;
  1032.     do {
  1033.       Old = *Addend;
  1034.     } while(InterlockedCompareExchange64(Addend,Old + Value,Old)!=Old);
  1035.     return Old;
  1036.   }
  1037.  
  1038. #ifdef __cplusplus
  1039.   __CRT_INLINE PVOID __cdecl __InlineInterlockedCompareExchangePointer(PVOID volatile *Destination,PVOID ExChange,PVOID Comperand) {
  1040.     return((PVOID)(LONG_PTR)InterlockedCompareExchange((LONG volatile *)Destination,(LONG)(LONG_PTR)ExChange,(LONG)(LONG_PTR)Comperand));
  1041.   }
  1042. #define InterlockedCompareExchangePointer __InlineInterlockedCompareExchangePointer
  1043. #else
  1044. #define InterlockedCompareExchangePointer(Destination,ExChange,Comperand)(PVOID)(LONG_PTR)InterlockedCompareExchange((LONG volatile *)(Destination),(LONG)(LONG_PTR)(ExChange),(LONG)(LONG_PTR)(Comperand))
  1045. #endif
  1046.  
  1047. #define InterlockedIncrementAcquire InterlockedIncrement
  1048. #define InterlockedIncrementRelease InterlockedIncrement
  1049. #define InterlockedDecrementAcquire InterlockedDecrement
  1050. #define InterlockedDecrementRelease InterlockedDecrement
  1051. #define InterlockedIncrementAcquire InterlockedIncrement
  1052. #define InterlockedIncrementRelease InterlockedIncrement
  1053. #define InterlockedCompareExchangeAcquire InterlockedCompareExchange
  1054. #define InterlockedCompareExchangeRelease InterlockedCompareExchange
  1055. #define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64
  1056. #define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64
  1057. #define InterlockedCompareExchangePointerAcquire InterlockedCompareExchangePointer
  1058. #define InterlockedCompareExchangePointerRelease InterlockedCompareExchangePointer
  1059. #endif
  1060.  
  1061. #if defined(_SLIST_HEADER_) && !defined(_NTOSP_)
  1062.   WINBASEAPI VOID WINAPI InitializeSListHead(PSLIST_HEADER ListHead);
  1063.   WINBASEAPI PSLIST_ENTRY WINAPI InterlockedPopEntrySList(PSLIST_HEADER ListHead);
  1064.   WINBASEAPI PSLIST_ENTRY WINAPI InterlockedPushEntrySList(PSLIST_HEADER ListHead,PSLIST_ENTRY ListEntry);
  1065.   WINBASEAPI PSLIST_ENTRY WINAPI InterlockedFlushSList(PSLIST_HEADER ListHead);
  1066.   WINBASEAPI USHORT WINAPI QueryDepthSList(PSLIST_HEADER ListHead);
  1067. #endif
  1068. #endif
  1069. #endif
  1070.  
  1071.   WINBASEAPI WINBOOL WINAPI FreeResource(HGLOBAL hResData);
  1072.   WINBASEAPI LPVOID WINAPI LockResource(HGLOBAL hResData);
  1073.  
  1074. #define UnlockResource(hResData) ((hResData),0)
  1075. #define MAXINTATOM 0xC000
  1076. #define MAKEINTATOM(i) (LPTSTR)((ULONG_PTR)((WORD)(i)))
  1077. #define INVALID_ATOM ((ATOM)0)
  1078.  
  1079.   int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nShowCmd);
  1080.   WINBASEAPI WINBOOL WINAPI FreeLibrary(HMODULE hLibModule);
  1081.   WINBASEAPI DECLSPEC_NORETURN VOID WINAPI FreeLibraryAndExitThread(HMODULE hLibModule,DWORD dwExitCode);
  1082.   WINBASEAPI WINBOOL WINAPI DisableThreadLibraryCalls(HMODULE hLibModule);
  1083.   WINBASEAPI FARPROC WINAPI GetProcAddress(HMODULE hModule,LPCSTR lpProcName);
  1084.   WINBASEAPI DWORD WINAPI GetVersion(VOID);
  1085.   WINBASEAPI HGLOBAL WINAPI GlobalAlloc(UINT uFlags,SIZE_T dwBytes);
  1086.   WINBASEAPI HGLOBAL WINAPI GlobalReAlloc(HGLOBAL hMem,SIZE_T dwBytes,UINT uFlags);
  1087.   WINBASEAPI SIZE_T WINAPI GlobalSize(HGLOBAL hMem);
  1088.   WINBASEAPI UINT WINAPI GlobalFlags(HGLOBAL hMem);
  1089.   WINBASEAPI LPVOID WINAPI GlobalLock(HGLOBAL hMem);
  1090.   WINBASEAPI HGLOBAL WINAPI GlobalHandle(LPCVOID pMem);
  1091.   WINBASEAPI WINBOOL WINAPI GlobalUnlock(HGLOBAL hMem);
  1092.   WINBASEAPI HGLOBAL WINAPI GlobalFree(HGLOBAL hMem);
  1093.   WINBASEAPI SIZE_T WINAPI GlobalCompact(DWORD dwMinFree);
  1094.   WINBASEAPI VOID WINAPI GlobalFix(HGLOBAL hMem);
  1095.   WINBASEAPI VOID WINAPI GlobalUnfix(HGLOBAL hMem);
  1096.   WINBASEAPI LPVOID WINAPI GlobalWire(HGLOBAL hMem);
  1097.   WINBASEAPI WINBOOL WINAPI GlobalUnWire(HGLOBAL hMem);
  1098.   WINBASEAPI VOID WINAPI GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer);
  1099.  
  1100.   typedef struct _MEMORYSTATUSEX {
  1101.     DWORD dwLength;
  1102.     DWORD dwMemoryLoad;
  1103.     DWORDLONG ullTotalPhys;
  1104.     DWORDLONG ullAvailPhys;
  1105.     DWORDLONG ullTotalPageFile;
  1106.     DWORDLONG ullAvailPageFile;
  1107.     DWORDLONG ullTotalVirtual;
  1108.     DWORDLONG ullAvailVirtual;
  1109.     DWORDLONG ullAvailExtendedVirtual;
  1110.   } MEMORYSTATUSEX,*LPMEMORYSTATUSEX;
  1111.  
  1112.   WINBASEAPI WINBOOL WINAPI GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer);
  1113.   WINBASEAPI HLOCAL WINAPI LocalAlloc(UINT uFlags,SIZE_T uBytes);
  1114.   WINBASEAPI HLOCAL WINAPI LocalReAlloc(HLOCAL hMem,SIZE_T uBytes,UINT uFlags);
  1115.   WINBASEAPI LPVOID WINAPI LocalLock(HLOCAL hMem);
  1116.   WINBASEAPI HLOCAL WINAPI LocalHandle(LPCVOID pMem);
  1117.   WINBASEAPI WINBOOL WINAPI LocalUnlock(HLOCAL hMem);
  1118.   WINBASEAPI SIZE_T WINAPI LocalSize(HLOCAL hMem);
  1119.   WINBASEAPI UINT WINAPI LocalFlags(HLOCAL hMem);
  1120.   WINBASEAPI HLOCAL WINAPI LocalFree(HLOCAL hMem);
  1121.   WINBASEAPI SIZE_T WINAPI LocalShrink(HLOCAL hMem,UINT cbNewSize);
  1122.   WINBASEAPI SIZE_T WINAPI LocalCompact(UINT uMinFree);
  1123.   WINBASEAPI WINBOOL WINAPI FlushInstructionCache(HANDLE hProcess,LPCVOID lpBaseAddress,SIZE_T dwSize);
  1124.   WINBASEAPI LPVOID WINAPI VirtualAlloc(LPVOID lpAddress,SIZE_T dwSize,DWORD flAllocationType,DWORD flProtect);
  1125.   WINBASEAPI WINBOOL WINAPI VirtualFree(LPVOID lpAddress,SIZE_T dwSize,DWORD dwFreeType);
  1126.   WINBASEAPI WINBOOL WINAPI VirtualProtect(LPVOID lpAddress,SIZE_T dwSize,DWORD flNewProtect,PDWORD lpflOldProtect);
  1127.   WINBASEAPI SIZE_T WINAPI VirtualQuery(LPCVOID lpAddress,PMEMORY_BASIC_INFORMATION lpBuffer,SIZE_T dwLength);
  1128.   WINBASEAPI LPVOID WINAPI VirtualAllocEx(HANDLE hProcess,LPVOID lpAddress,SIZE_T dwSize,DWORD flAllocationType,DWORD flProtect);
  1129.   WINBASEAPI UINT WINAPI GetWriteWatch(DWORD dwFlags,PVOID lpBaseAddress,SIZE_T dwRegionSize,PVOID *lpAddresses,ULONG_PTR *lpdwCount,PULONG lpdwGranularity);
  1130.   WINBASEAPI UINT WINAPI ResetWriteWatch(LPVOID lpBaseAddress,SIZE_T dwRegionSize);
  1131.   WINBASEAPI SIZE_T WINAPI GetLargePageMinimum(VOID);
  1132.   WINBASEAPI UINT WINAPI EnumSystemFirmwareTables(DWORD FirmwareTableProviderSignature,PVOID pFirmwareTableEnumBuffer,DWORD BufferSize);
  1133.   WINBASEAPI UINT WINAPI GetSystemFirmwareTable(DWORD FirmwareTableProviderSignature,DWORD FirmwareTableID,PVOID pFirmwareTableBuffer,DWORD BufferSize);
  1134.   WINBASEAPI WINBOOL WINAPI VirtualFreeEx(HANDLE hProcess,LPVOID lpAddress,SIZE_T dwSize,DWORD dwFreeType);
  1135.   WINBASEAPI WINBOOL WINAPI VirtualProtectEx(HANDLE hProcess,LPVOID lpAddress,SIZE_T dwSize,DWORD flNewProtect,PDWORD lpflOldProtect);
  1136.   WINBASEAPI SIZE_T WINAPI VirtualQueryEx(HANDLE hProcess,LPCVOID lpAddress,PMEMORY_BASIC_INFORMATION lpBuffer,SIZE_T dwLength);
  1137.   WINBASEAPI HANDLE WINAPI HeapCreate(DWORD flOptions,SIZE_T dwInitialSize,SIZE_T dwMaximumSize);
  1138.   WINBASEAPI WINBOOL WINAPI HeapDestroy(HANDLE hHeap);
  1139.   WINBASEAPI LPVOID WINAPI HeapAlloc(HANDLE hHeap,DWORD dwFlags,SIZE_T dwBytes);
  1140.   WINBASEAPI LPVOID WINAPI HeapReAlloc(HANDLE hHeap,DWORD dwFlags,LPVOID lpMem,SIZE_T dwBytes);
  1141.   WINBASEAPI WINBOOL WINAPI HeapFree(HANDLE hHeap,DWORD dwFlags,LPVOID lpMem);
  1142.   WINBASEAPI SIZE_T WINAPI HeapSize(HANDLE hHeap,DWORD dwFlags,LPCVOID lpMem);
  1143.   WINBASEAPI WINBOOL WINAPI HeapValidate(HANDLE hHeap,DWORD dwFlags,LPCVOID lpMem);
  1144.   WINBASEAPI SIZE_T WINAPI HeapCompact(HANDLE hHeap,DWORD dwFlags);
  1145.   WINBASEAPI HANDLE WINAPI GetProcessHeap(VOID);
  1146.   WINBASEAPI DWORD WINAPI GetProcessHeaps(DWORD NumberOfHeaps,PHANDLE ProcessHeaps);
  1147.  
  1148.   typedef struct _PROCESS_HEAP_ENTRY {
  1149.     PVOID lpData;
  1150.     DWORD cbData;
  1151.     BYTE cbOverhead;
  1152.     BYTE iRegionIndex;
  1153.     WORD wFlags;
  1154.     union {
  1155.       struct {
  1156.         HANDLE hMem;
  1157.         DWORD dwReserved[3];
  1158.       } Block;
  1159.       struct {
  1160.         DWORD dwCommittedSize;
  1161.         DWORD dwUnCommittedSize;
  1162.         LPVOID lpFirstBlock;
  1163.         LPVOID lpLastBlock;
  1164.       } Region;
  1165.     };
  1166.   } PROCESS_HEAP_ENTRY,*LPPROCESS_HEAP_ENTRY,*PPROCESS_HEAP_ENTRY;
  1167.  
  1168. #define PROCESS_HEAP_REGION 0x1
  1169. #define PROCESS_HEAP_UNCOMMITTED_RANGE 0x2
  1170. #define PROCESS_HEAP_ENTRY_BUSY 0x4
  1171. #define PROCESS_HEAP_ENTRY_MOVEABLE 0x10
  1172. #define PROCESS_HEAP_ENTRY_DDESHARE 0x20
  1173.  
  1174.   WINBASEAPI WINBOOL WINAPI HeapLock(HANDLE hHeap);
  1175.   WINBASEAPI WINBOOL WINAPI HeapUnlock(HANDLE hHeap);
  1176.   WINBASEAPI WINBOOL WINAPI HeapWalk(HANDLE hHeap,LPPROCESS_HEAP_ENTRY lpEntry);
  1177.   WINBASEAPI WINBOOL WINAPI HeapSetInformation(HANDLE HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength);
  1178.   WINBASEAPI WINBOOL WINAPI HeapQueryInformation(HANDLE HeapHandle,HEAP_INFORMATION_CLASS HeapInformationClass,PVOID HeapInformation,SIZE_T HeapInformationLength,PSIZE_T ReturnLength);
  1179.  
  1180. #define SCS_32BIT_BINARY 0
  1181. #define SCS_DOS_BINARY 1
  1182. #define SCS_WOW_BINARY 2
  1183. #define SCS_PIF_BINARY 3
  1184. #define SCS_POSIX_BINARY 4
  1185. #define SCS_OS216_BINARY 5
  1186. #define SCS_64BIT_BINARY 6
  1187.  
  1188. #ifdef UNICODE
  1189. #define GetBinaryType GetBinaryTypeW
  1190. #define GetShortPathName GetShortPathNameW
  1191. #define GetLongPathName GetLongPathNameW
  1192. #define GetEnvironmentStrings GetEnvironmentStringsW
  1193. #define SetEnvironmentStrings SetEnvironmentStringsW
  1194. #define FreeEnvironmentStrings FreeEnvironmentStringsW
  1195. #else
  1196. #define GetBinaryType GetBinaryTypeA
  1197. #define GetShortPathName GetShortPathNameA
  1198. #define GetLongPathName GetLongPathNameA
  1199. #define GetEnvironmentStringsA GetEnvironmentStrings
  1200. #define SetEnvironmentStrings SetEnvironmentStringsA
  1201. #define FreeEnvironmentStrings FreeEnvironmentStringsA
  1202. #endif
  1203.  
  1204. #ifdef _WIN64
  1205. #define SCS_THIS_PLATFORM_BINARY SCS_64BIT_BINARY
  1206. #else
  1207. #define SCS_THIS_PLATFORM_BINARY SCS_32BIT_BINARY
  1208. #endif
  1209.  
  1210.   WINBASEAPI WINBOOL WINAPI GetBinaryTypeA(LPCSTR lpApplicationName,LPDWORD lpBinaryType);
  1211.   WINBASEAPI WINBOOL WINAPI GetBinaryTypeW(LPCWSTR lpApplicationName,LPDWORD lpBinaryType);
  1212.   WINBASEAPI DWORD WINAPI GetShortPathNameA(LPCSTR lpszLongPath,LPSTR lpszShortPath,DWORD cchBuffer);
  1213.   WINBASEAPI DWORD WINAPI GetShortPathNameW(LPCWSTR lpszLongPath,LPWSTR lpszShortPath,DWORD cchBuffer);
  1214.   WINBASEAPI DWORD WINAPI GetLongPathNameA(LPCSTR lpszShortPath,LPSTR lpszLongPath,DWORD cchBuffer);
  1215.   WINBASEAPI DWORD WINAPI GetLongPathNameW(LPCWSTR lpszShortPath,LPWSTR lpszLongPath,DWORD cchBuffer);
  1216.   WINBASEAPI WINBOOL WINAPI GetProcessAffinityMask(HANDLE hProcess,PDWORD_PTR lpProcessAffinityMask,PDWORD_PTR lpSystemAffinityMask);
  1217.   WINBASEAPI WINBOOL WINAPI SetProcessAffinityMask(HANDLE hProcess,DWORD_PTR dwProcessAffinityMask);
  1218.   WINBASEAPI WINBOOL WINAPI GetProcessHandleCount(HANDLE hProcess,PDWORD pdwHandleCount);
  1219.   WINBASEAPI WINBOOL WINAPI GetProcessTimes(HANDLE hProcess,LPFILETIME lpCreationTime,LPFILETIME lpExitTime,LPFILETIME lpKernelTime,LPFILETIME lpUserTime);
  1220.   WINBASEAPI WINBOOL WINAPI GetProcessIoCounters(HANDLE hProcess,PIO_COUNTERS lpIoCounters);
  1221.   WINBASEAPI WINBOOL WINAPI GetProcessWorkingSetSize(HANDLE hProcess,PSIZE_T lpMinimumWorkingSetSize,PSIZE_T lpMaximumWorkingSetSize);
  1222.   WINBASEAPI WINBOOL WINAPI GetProcessWorkingSetSizeEx(HANDLE hProcess,PSIZE_T lpMinimumWorkingSetSize,PSIZE_T lpMaximumWorkingSetSize,PDWORD Flags);
  1223.   WINBASEAPI WINBOOL WINAPI SetProcessWorkingSetSize(HANDLE hProcess,SIZE_T dwMinimumWorkingSetSize,SIZE_T dwMaximumWorkingSetSize);
  1224.   WINBASEAPI WINBOOL WINAPI SetProcessWorkingSetSizeEx(HANDLE hProcess,SIZE_T dwMinimumWorkingSetSize,SIZE_T dwMaximumWorkingSetSize,DWORD Flags);
  1225.   WINBASEAPI HANDLE WINAPI OpenProcess(DWORD dwDesiredAccess,WINBOOL bInheritHandle,DWORD dwProcessId);
  1226.   WINBASEAPI HANDLE WINAPI GetCurrentProcess(VOID);
  1227.   WINBASEAPI DWORD WINAPI GetCurrentProcessId(VOID);
  1228.   WINBASEAPI DECLSPEC_NORETURN VOID WINAPI ExitProcess(UINT uExitCode);
  1229.   WINBASEAPI WINBOOL WINAPI TerminateProcess(HANDLE hProcess,UINT uExitCode);
  1230.   WINBASEAPI WINBOOL WINAPI GetExitCodeProcess(HANDLE hProcess,LPDWORD lpExitCode);
  1231.   WINBASEAPI VOID WINAPI FatalExit(int ExitCode);
  1232.   /*    WINBASEAPI LPCH WINAPI GetEnvironmentStrings(VOID); */
  1233.   WINBASEAPI LPWCH WINAPI GetEnvironmentStringsW(VOID);
  1234.   WINBASEAPI WINBOOL WINAPI SetEnvironmentStringsA(LPCH NewEnvironment);
  1235.   WINBASEAPI WINBOOL WINAPI SetEnvironmentStringsW(LPWCH NewEnvironment);
  1236.   WINBASEAPI WINBOOL WINAPI FreeEnvironmentStringsA(LPCH);
  1237.   WINBASEAPI WINBOOL WINAPI FreeEnvironmentStringsW(LPWCH);
  1238.   WINBASEAPI VOID WINAPI RaiseException(DWORD dwExceptionCode,DWORD dwExceptionFlags,DWORD nNumberOfArguments,CONST ULONG_PTR *lpArguments);
  1239.   WINBASEAPI LONG WINAPI UnhandledExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo);
  1240.  
  1241.   typedef LONG (WINAPI *PTOP_LEVEL_EXCEPTION_FILTER)(struct _EXCEPTION_POINTERS *ExceptionInfo);
  1242.   typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER;
  1243.  
  1244.   WINBASEAPI LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER lpTopLevelExceptionFilter);
  1245.  
  1246. #define FIBER_FLAG_FLOAT_SWITCH 0x1
  1247.  
  1248.   WINBASEAPI LPVOID WINAPI CreateFiber(SIZE_T dwStackSize,LPFIBER_START_ROUTINE lpStartAddress,LPVOID lpParameter);
  1249.   WINBASEAPI LPVOID WINAPI CreateFiberEx(SIZE_T dwStackCommitSize,SIZE_T dwStackReserveSize,DWORD dwFlags,LPFIBER_START_ROUTINE lpStartAddress,LPVOID lpParameter);
  1250.   WINBASEAPI VOID WINAPI DeleteFiber(LPVOID lpFiber);
  1251.   WINBASEAPI LPVOID WINAPI ConvertThreadToFiber(LPVOID lpParameter);
  1252.   WINBASEAPI LPVOID WINAPI ConvertThreadToFiberEx(LPVOID lpParameter,DWORD dwFlags);
  1253.   WINBASEAPI WINBOOL WINAPI ConvertFiberToThread(VOID);
  1254.   WINBASEAPI VOID WINAPI SwitchToFiber(LPVOID lpFiber);
  1255.   WINBASEAPI WINBOOL WINAPI SwitchToThread(VOID);
  1256.   WINBASEAPI HANDLE WINAPI CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,SIZE_T dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId);
  1257.   WINBASEAPI HANDLE WINAPI CreateRemoteThread(HANDLE hProcess,LPSECURITY_ATTRIBUTES lpThreadAttributes,SIZE_T dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId);
  1258.   WINBASEAPI HANDLE WINAPI GetCurrentThread(VOID);
  1259.   WINBASEAPI DWORD WINAPI GetCurrentThreadId(VOID);
  1260.   WINBASEAPI WINBOOL WINAPI SetThreadStackGuarantee (PULONG StackSizeInBytes);
  1261.   WINBASEAPI DWORD WINAPI GetProcessIdOfThread(HANDLE Thread);
  1262.   WINBASEAPI DWORD WINAPI GetThreadId(HANDLE Thread);
  1263.   WINBASEAPI DWORD WINAPI GetProcessId(HANDLE Process);
  1264.   WINBASEAPI DWORD WINAPI GetCurrentProcessorNumber(VOID);
  1265.   WINBASEAPI DWORD_PTR WINAPI SetThreadAffinityMask(HANDLE hThread,DWORD_PTR dwThreadAffinityMask);
  1266.   WINBASEAPI DWORD WINAPI SetThreadIdealProcessor(HANDLE hThread,DWORD dwIdealProcessor);
  1267.   WINBASEAPI WINBOOL WINAPI SetProcessPriorityBoost(HANDLE hProcess,WINBOOL bDisablePriorityBoost);
  1268.   WINBASEAPI WINBOOL WINAPI GetProcessPriorityBoost(HANDLE hProcess,PBOOL pDisablePriorityBoost);
  1269.   WINBASEAPI WINBOOL WINAPI RequestWakeupLatency(LATENCY_TIME latency);
  1270.   WINBASEAPI WINBOOL WINAPI IsSystemResumeAutomatic(VOID);
  1271.   WINBASEAPI HANDLE WINAPI OpenThread(DWORD dwDesiredAccess,WINBOOL bInheritHandle,DWORD dwThreadId);
  1272.   WINBASEAPI WINBOOL WINAPI SetThreadPriority(HANDLE hThread,int nPriority);
  1273.   WINBASEAPI WINBOOL WINAPI SetThreadPriorityBoost(HANDLE hThread,WINBOOL bDisablePriorityBoost);
  1274.   WINBASEAPI WINBOOL WINAPI GetThreadPriorityBoost(HANDLE hThread,PBOOL pDisablePriorityBoost);
  1275.   WINBASEAPI int WINAPI GetThreadPriority(HANDLE hThread);
  1276.   WINBASEAPI WINBOOL WINAPI GetThreadTimes(HANDLE hThread,LPFILETIME lpCreationTime,LPFILETIME lpExitTime,LPFILETIME lpKernelTime,LPFILETIME lpUserTime);
  1277.   WINBASEAPI WINBOOL WINAPI GetThreadIOPendingFlag(HANDLE hThread,PBOOL lpIOIsPending);
  1278.   WINBASEAPI DECLSPEC_NORETURN VOID WINAPI ExitThread(DWORD dwExitCode);
  1279.   WINBASEAPI WINBOOL WINAPI TerminateThread(HANDLE hThread,DWORD dwExitCode);
  1280.   WINBASEAPI WINBOOL WINAPI GetExitCodeThread(HANDLE hThread,LPDWORD lpExitCode);
  1281.   WINBASEAPI WINBOOL WINAPI GetThreadSelectorEntry(HANDLE hThread,DWORD dwSelector,LPLDT_ENTRY lpSelectorEntry);
  1282.   WINBASEAPI EXECUTION_STATE WINAPI SetThreadExecutionState(EXECUTION_STATE esFlags);
  1283.   WINBASEAPI DWORD WINAPI GetLastError(VOID);
  1284.   WINBASEAPI VOID WINAPI SetLastError(DWORD dwErrCode);
  1285.  
  1286. #ifndef RC_INVOKED
  1287. #ifdef WINBASE_DECLARE_RESTORE_LAST_ERROR
  1288.   WINBASEAPI VOID WINAPI RestoreLastError(DWORD dwErrCode);
  1289.  
  1290.   typedef VOID (WINAPI *PRESTORE_LAST_ERROR)(DWORD);
  1291.  
  1292. #define RESTORE_LAST_ERROR_NAME_A "RestoreLastError"
  1293. #define RESTORE_LAST_ERROR_NAME_W L"RestoreLastError"
  1294. #define RESTORE_LAST_ERROR_NAME TEXT("RestoreLastError")
  1295. #endif
  1296. #endif
  1297.  
  1298. #define HasOverlappedIoCompleted(lpOverlapped) (((DWORD)(lpOverlapped)->Internal)!=STATUS_PENDING)
  1299.  
  1300.   WINBASEAPI WINBOOL WINAPI GetOverlappedResult(HANDLE hFile,LPOVERLAPPED lpOverlapped,LPDWORD lpNumberOfBytesTransferred,WINBOOL bWait);
  1301.   WINBASEAPI HANDLE WINAPI CreateIoCompletionPort(HANDLE FileHandle,HANDLE ExistingCompletionPort,ULONG_PTR CompletionKey,DWORD NumberOfConcurrentThreads);
  1302.   WINBASEAPI WINBOOL WINAPI GetQueuedCompletionStatus(HANDLE CompletionPort,LPDWORD lpNumberOfBytesTransferred,PULONG_PTR lpCompletionKey,LPOVERLAPPED *lpOverlapped,DWORD dwMilliseconds);
  1303.   WINBASEAPI WINBOOL WINAPI PostQueuedCompletionStatus(HANDLE CompletionPort,DWORD dwNumberOfBytesTransferred,ULONG_PTR dwCompletionKey,LPOVERLAPPED lpOverlapped);
  1304.  
  1305. #define SEM_FAILCRITICALERRORS 0x1
  1306. #define SEM_NOGPFAULTERRORBOX 0x2
  1307. #define SEM_NOALIGNMENTFAULTEXCEPT 0x4
  1308. #define SEM_NOOPENFILEERRORBOX 0x8000
  1309.  
  1310.   WINBASEAPI UINT WINAPI SetErrorMode(UINT uMode);
  1311.   WINBASEAPI WINBOOL WINAPI ReadProcessMemory(HANDLE hProcess,LPCVOID lpBaseAddress,LPVOID lpBuffer,SIZE_T nSize,SIZE_T *lpNumberOfBytesRead);
  1312.   WINBASEAPI WINBOOL WINAPI WriteProcessMemory(HANDLE hProcess,LPVOID lpBaseAddress,LPCVOID lpBuffer,SIZE_T nSize,SIZE_T *lpNumberOfBytesWritten);
  1313.   WINBASEAPI WINBOOL WINAPI GetThreadContext(HANDLE hThread,LPCONTEXT lpContext);
  1314.   WINBASEAPI WINBOOL WINAPI SetThreadContext(HANDLE hThread,CONST CONTEXT *lpContext);
  1315.   WINBASEAPI DWORD WINAPI SuspendThread(HANDLE hThread);
  1316.   WINBASEAPI DWORD WINAPI ResumeThread(HANDLE hThread);
  1317.  
  1318.   typedef VOID (WINAPI *PAPCFUNC)(ULONG_PTR dwParam);
  1319.  
  1320.   WINBASEAPI DWORD WINAPI QueueUserAPC(PAPCFUNC pfnAPC,HANDLE hThread,ULONG_PTR dwData);
  1321.   WINBASEAPI WINBOOL WINAPI IsDebuggerPresent(VOID);
  1322.   WINBASEAPI WINBOOL WINAPI CheckRemoteDebuggerPresent(HANDLE hProcess,PBOOL pbDebuggerPresent);
  1323.   WINBASEAPI VOID WINAPI DebugBreak(VOID);
  1324.   WINBASEAPI WINBOOL WINAPI WaitForDebugEvent(LPDEBUG_EVENT lpDebugEvent,DWORD dwMilliseconds);
  1325.   WINBASEAPI WINBOOL WINAPI ContinueDebugEvent(DWORD dwProcessId,DWORD dwThreadId,DWORD dwContinueStatus);
  1326.   WINBASEAPI WINBOOL WINAPI DebugActiveProcess(DWORD dwProcessId);
  1327.   WINBASEAPI WINBOOL WINAPI DebugActiveProcessStop(DWORD dwProcessId);
  1328.   WINBASEAPI WINBOOL WINAPI DebugSetProcessKillOnExit(WINBOOL KillOnExit);
  1329.   WINBASEAPI WINBOOL WINAPI DebugBreakProcess(HANDLE Process);
  1330.   WINBASEAPI VOID WINAPI InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
  1331.   WINBASEAPI VOID WINAPI EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
  1332.   WINBASEAPI VOID WINAPI LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
  1333.   WINBASEAPI WINBOOL WINAPI InitializeCriticalSectionAndSpinCount(LPCRITICAL_SECTION lpCriticalSection,DWORD dwSpinCount);
  1334.   WINBASEAPI DWORD WINAPI SetCriticalSectionSpinCount(LPCRITICAL_SECTION lpCriticalSection,DWORD dwSpinCount);
  1335.   WINBASEAPI WINBOOL WINAPI TryEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
  1336.   WINBASEAPI VOID WINAPI DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection);
  1337.   WINBASEAPI WINBOOL WINAPI SetEvent(HANDLE hEvent);
  1338.   WINBASEAPI WINBOOL WINAPI ResetEvent(HANDLE hEvent);
  1339.   WINBASEAPI WINBOOL WINAPI PulseEvent(HANDLE hEvent);
  1340.   WINBASEAPI WINBOOL WINAPI ReleaseSemaphore(HANDLE hSemaphore,LONG lReleaseCount,LPLONG lpPreviousCount);
  1341.   WINBASEAPI WINBOOL WINAPI ReleaseMutex(HANDLE hMutex);
  1342.   WINBASEAPI DWORD WINAPI WaitForSingleObject(HANDLE hHandle,DWORD dwMilliseconds);
  1343.   WINBASEAPI DWORD WINAPI WaitForMultipleObjects(DWORD nCount,CONST HANDLE *lpHandles,WINBOOL bWaitAll,DWORD dwMilliseconds);
  1344.   WINBASEAPI VOID WINAPI Sleep(DWORD dwMilliseconds);
  1345.   WINBASEAPI HGLOBAL WINAPI LoadResource(HMODULE hModule,HRSRC hResInfo);
  1346.   WINBASEAPI DWORD WINAPI SizeofResource(HMODULE hModule,HRSRC hResInfo);
  1347.   WINBASEAPI ATOM WINAPI GlobalDeleteAtom(ATOM nAtom);
  1348.   WINBASEAPI WINBOOL WINAPI InitAtomTable(DWORD nSize);
  1349.   WINBASEAPI ATOM WINAPI DeleteAtom(ATOM nAtom);
  1350.   WINBASEAPI UINT WINAPI SetHandleCount(UINT uNumber);
  1351.   WINBASEAPI DWORD WINAPI GetLogicalDrives(VOID);
  1352.   WINBASEAPI WINBOOL WINAPI LockFile(HANDLE hFile,DWORD dwFileOffsetLow,DWORD dwFileOffsetHigh,DWORD nNumberOfBytesToLockLow,DWORD nNumberOfBytesToLockHigh);
  1353.   WINBASEAPI WINBOOL WINAPI UnlockFile(HANDLE hFile,DWORD dwFileOffsetLow,DWORD dwFileOffsetHigh,DWORD nNumberOfBytesToUnlockLow,DWORD nNumberOfBytesToUnlockHigh);
  1354.   WINBASEAPI WINBOOL WINAPI LockFileEx(HANDLE hFile,DWORD dwFlags,DWORD dwReserved,DWORD nNumberOfBytesToLockLow,DWORD nNumberOfBytesToLockHigh,LPOVERLAPPED lpOverlapped);
  1355.  
  1356. #define LOCKFILE_FAIL_IMMEDIATELY 0x1
  1357. #define LOCKFILE_EXCLUSIVE_LOCK 0x2
  1358.  
  1359.   WINBASEAPI WINBOOL WINAPI UnlockFileEx(HANDLE hFile,DWORD dwReserved,DWORD nNumberOfBytesToUnlockLow,DWORD nNumberOfBytesToUnlockHigh,LPOVERLAPPED lpOverlapped);
  1360.  
  1361.   typedef struct _BY_HANDLE_FILE_INFORMATION {
  1362.     DWORD dwFileAttributes;
  1363.     FILETIME ftCreationTime;
  1364.     FILETIME ftLastAccessTime;
  1365.     FILETIME ftLastWriteTime;
  1366.     DWORD dwVolumeSerialNumber;
  1367.     DWORD nFileSizeHigh;
  1368.     DWORD nFileSizeLow;
  1369.     DWORD nNumberOfLinks;
  1370.     DWORD nFileIndexHigh;
  1371.     DWORD nFileIndexLow;
  1372.   } BY_HANDLE_FILE_INFORMATION,*PBY_HANDLE_FILE_INFORMATION,*LPBY_HANDLE_FILE_INFORMATION;
  1373.  
  1374. #ifdef UNICODE
  1375. #define SetFileShortName SetFileShortNameW
  1376. #else
  1377. #define SetFileShortName SetFileShortNameA
  1378. #endif
  1379.  
  1380.   WINBASEAPI WINBOOL WINAPI GetFileInformationByHandle(HANDLE hFile,LPBY_HANDLE_FILE_INFORMATION lpFileInformation);
  1381.   WINBASEAPI DWORD WINAPI GetFileType(HANDLE hFile);
  1382.   WINBASEAPI DWORD WINAPI GetFileSize(HANDLE hFile,LPDWORD lpFileSizeHigh);
  1383.   WINBASEAPI WINBOOL WINAPI GetFileSizeEx(HANDLE hFile,PLARGE_INTEGER lpFileSize);
  1384.   WINBASEAPI HANDLE WINAPI GetStdHandle(DWORD nStdHandle);
  1385.   WINBASEAPI WINBOOL WINAPI SetStdHandle(DWORD nStdHandle,HANDLE hHandle);
  1386.   WINBASEAPI WINBOOL WINAPI WriteFile(HANDLE hFile,LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite,LPDWORD lpNumberOfBytesWritten,LPOVERLAPPED lpOverlapped);
  1387.   WINBASEAPI WINBOOL WINAPI ReadFile(HANDLE hFile,LPVOID lpBuffer,DWORD nNumberOfBytesToRead,LPDWORD lpNumberOfBytesRead,LPOVERLAPPED lpOverlapped);
  1388.   WINBASEAPI WINBOOL WINAPI FlushFileBuffers(HANDLE hFile);
  1389.   WINBASEAPI WINBOOL WINAPI DeviceIoControl(HANDLE hDevice,DWORD dwIoControlCode,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned,LPOVERLAPPED lpOverlapped);
  1390.   WINBASEAPI WINBOOL WINAPI RequestDeviceWakeup(HANDLE hDevice);
  1391.   WINBASEAPI WINBOOL WINAPI CancelDeviceWakeupRequest(HANDLE hDevice);
  1392.   WINBASEAPI WINBOOL WINAPI GetDevicePowerState(HANDLE hDevice,WINBOOL *pfOn);
  1393.   WINBASEAPI WINBOOL WINAPI SetMessageWaitingIndicator(HANDLE hMsgIndicator,ULONG ulMsgCount);
  1394.   WINBASEAPI WINBOOL WINAPI SetEndOfFile(HANDLE hFile);
  1395.   WINBASEAPI DWORD WINAPI SetFilePointer(HANDLE hFile,LONG lDistanceToMove,PLONG lpDistanceToMoveHigh,DWORD dwMoveMethod);
  1396.   WINBASEAPI WINBOOL WINAPI SetFilePointerEx(HANDLE hFile,LARGE_INTEGER liDistanceToMove,PLARGE_INTEGER lpNewFilePointer,DWORD dwMoveMethod);
  1397.   WINBASEAPI WINBOOL WINAPI FindClose(HANDLE hFindFile);
  1398.   WINBASEAPI WINBOOL WINAPI GetFileTime(HANDLE hFile,LPFILETIME lpCreationTime,LPFILETIME lpLastAccessTime,LPFILETIME lpLastWriteTime);
  1399.   WINBASEAPI WINBOOL WINAPI SetFileTime(HANDLE hFile,CONST FILETIME *lpCreationTime,CONST FILETIME *lpLastAccessTime,CONST FILETIME *lpLastWriteTime);
  1400.   WINBASEAPI WINBOOL WINAPI SetFileValidData(HANDLE hFile,LONGLONG ValidDataLength);
  1401.   WINBASEAPI WINBOOL WINAPI SetFileShortNameA(HANDLE hFile,LPCSTR lpShortName);
  1402.   WINBASEAPI WINBOOL WINAPI SetFileShortNameW(HANDLE hFile,LPCWSTR lpShortName);
  1403.   WINBASEAPI WINBOOL WINAPI CloseHandle(HANDLE hObject);
  1404.   WINBASEAPI WINBOOL WINAPI DuplicateHandle(HANDLE hSourceProcessHandle,HANDLE hSourceHandle,HANDLE hTargetProcessHandle,LPHANDLE lpTargetHandle,DWORD dwDesiredAccess,WINBOOL bInheritHandle,DWORD dwOptions);
  1405.   WINBASEAPI WINBOOL WINAPI GetHandleInformation(HANDLE hObject,LPDWORD lpdwFlags);
  1406.   WINBASEAPI WINBOOL WINAPI SetHandleInformation(HANDLE hObject,DWORD dwMask,DWORD dwFlags);
  1407.  
  1408. #define HANDLE_FLAG_INHERIT 0x1
  1409. #define HANDLE_FLAG_PROTECT_FROM_CLOSE 0x2
  1410.  
  1411. #define HINSTANCE_ERROR 32
  1412.  
  1413.   WINBASEAPI DWORD WINAPI LoadModule(LPCSTR lpModuleName,LPVOID lpParameterBlock);
  1414.   WINBASEAPI UINT WINAPI WinExec(LPCSTR lpCmdLine,UINT uCmdShow);
  1415.   WINBASEAPI WINBOOL WINAPI ClearCommBreak(HANDLE hFile);
  1416.   WINBASEAPI WINBOOL WINAPI ClearCommError(HANDLE hFile,LPDWORD lpErrors,LPCOMSTAT lpStat);
  1417.   WINBASEAPI WINBOOL WINAPI SetupComm(HANDLE hFile,DWORD dwInQueue,DWORD dwOutQueue);
  1418.   WINBASEAPI WINBOOL WINAPI EscapeCommFunction(HANDLE hFile,DWORD dwFunc);
  1419.   WINBASEAPI WINBOOL WINAPI GetCommConfig(HANDLE hCommDev,LPCOMMCONFIG lpCC,LPDWORD lpdwSize);
  1420.   WINBASEAPI WINBOOL WINAPI GetCommMask(HANDLE hFile,LPDWORD lpEvtMask);
  1421.   WINBASEAPI WINBOOL WINAPI GetCommProperties(HANDLE hFile,LPCOMMPROP lpCommProp);
  1422.   WINBASEAPI WINBOOL WINAPI GetCommModemStatus(HANDLE hFile,LPDWORD lpModemStat);
  1423.   WINBASEAPI WINBOOL WINAPI GetCommState(HANDLE hFile,LPDCB lpDCB);
  1424.   WINBASEAPI WINBOOL WINAPI GetCommTimeouts(HANDLE hFile,LPCOMMTIMEOUTS lpCommTimeouts);
  1425.   WINBASEAPI WINBOOL WINAPI PurgeComm(HANDLE hFile,DWORD dwFlags);
  1426.   WINBASEAPI WINBOOL WINAPI SetCommBreak(HANDLE hFile);
  1427.   WINBASEAPI WINBOOL WINAPI SetCommConfig(HANDLE hCommDev,LPCOMMCONFIG lpCC,DWORD dwSize);
  1428.   WINBASEAPI WINBOOL WINAPI SetCommMask(HANDLE hFile,DWORD dwEvtMask);
  1429.   WINBASEAPI WINBOOL WINAPI SetCommState(HANDLE hFile,LPDCB lpDCB);
  1430.   WINBASEAPI WINBOOL WINAPI SetCommTimeouts(HANDLE hFile,LPCOMMTIMEOUTS lpCommTimeouts);
  1431.   WINBASEAPI WINBOOL WINAPI TransmitCommChar(HANDLE hFile,char cChar);
  1432.   WINBASEAPI WINBOOL WINAPI WaitCommEvent(HANDLE hFile,LPDWORD lpEvtMask,LPOVERLAPPED lpOverlapped);
  1433.   WINBASEAPI DWORD WINAPI SetTapePosition(HANDLE hDevice,DWORD dwPositionMethod,DWORD dwPartition,DWORD dwOffsetLow,DWORD dwOffsetHigh,WINBOOL bImmediate);
  1434.   WINBASEAPI DWORD WINAPI GetTapePosition(HANDLE hDevice,DWORD dwPositionType,LPDWORD lpdwPartition,LPDWORD lpdwOffsetLow,LPDWORD lpdwOffsetHigh);
  1435.   WINBASEAPI DWORD WINAPI PrepareTape(HANDLE hDevice,DWORD dwOperation,WINBOOL bImmediate);
  1436.   WINBASEAPI DWORD WINAPI EraseTape(HANDLE hDevice,DWORD dwEraseType,WINBOOL bImmediate);
  1437.   WINBASEAPI DWORD WINAPI CreateTapePartition(HANDLE hDevice,DWORD dwPartitionMethod,DWORD dwCount,DWORD dwSize);
  1438.   WINBASEAPI DWORD WINAPI WriteTapemark(HANDLE hDevice,DWORD dwTapemarkType,DWORD dwTapemarkCount,WINBOOL bImmediate);
  1439.   WINBASEAPI DWORD WINAPI GetTapeStatus(HANDLE hDevice);
  1440.   WINBASEAPI DWORD WINAPI GetTapeParameters(HANDLE hDevice,DWORD dwOperation,LPDWORD lpdwSize,LPVOID lpTapeInformation);
  1441.  
  1442. #define GET_TAPE_MEDIA_INFORMATION 0
  1443. #define GET_TAPE_DRIVE_INFORMATION 1
  1444.  
  1445.   WINBASEAPI DWORD WINAPI SetTapeParameters(HANDLE hDevice,DWORD dwOperation,LPVOID lpTapeInformation);
  1446.  
  1447. #define SET_TAPE_MEDIA_INFORMATION 0
  1448. #define SET_TAPE_DRIVE_INFORMATION 1
  1449.  
  1450.   WINBASEAPI WINBOOL WINAPI Beep(DWORD dwFreq,DWORD dwDuration);
  1451.   WINBASEAPI int WINAPI MulDiv(int nNumber,int nNumerator,int nDenominator);
  1452.   WINBASEAPI VOID WINAPI GetSystemTime(LPSYSTEMTIME lpSystemTime);
  1453.   WINBASEAPI VOID WINAPI GetSystemTimeAsFileTime(LPFILETIME lpSystemTimeAsFileTime);
  1454.   WINBASEAPI WINBOOL WINAPI SetSystemTime(CONST SYSTEMTIME *lpSystemTime);
  1455.   WINBASEAPI VOID WINAPI GetLocalTime(LPSYSTEMTIME lpSystemTime);
  1456.   WINBASEAPI WINBOOL WINAPI SetLocalTime(CONST SYSTEMTIME *lpSystemTime);
  1457.   WINBASEAPI VOID WINAPI GetSystemInfo(LPSYSTEM_INFO lpSystemInfo);
  1458.   WINBASEAPI WINBOOL WINAPI SetSystemFileCacheSize(SIZE_T MinimumFileCacheSize,SIZE_T MaximumFileCacheSize,DWORD Flags);
  1459.   WINBASEAPI WINBOOL WINAPI GetSystemFileCacheSize(PSIZE_T lpMinimumFileCacheSize,PSIZE_T lpMaximumFileCacheSize,PDWORD lpFlags);
  1460.   WINBASEAPI WINBOOL WINAPI GetSystemRegistryQuota(PDWORD pdwQuotaAllowed,PDWORD pdwQuotaUsed);
  1461.   WINBOOL WINAPI GetSystemTimes(LPFILETIME lpIdleTime,LPFILETIME lpKernelTime,LPFILETIME lpUserTime);
  1462.   WINBASEAPI VOID WINAPI GetNativeSystemInfo(LPSYSTEM_INFO lpSystemInfo);
  1463.   WINBASEAPI WINBOOL WINAPI IsProcessorFeaturePresent(DWORD ProcessorFeature);
  1464.  
  1465.   typedef struct _TIME_ZONE_INFORMATION {
  1466.     LONG Bias;
  1467.     WCHAR StandardName[32];
  1468.     SYSTEMTIME StandardDate;
  1469.     LONG StandardBias;
  1470.     WCHAR DaylightName[32];
  1471.     SYSTEMTIME DaylightDate;
  1472.     LONG DaylightBias;
  1473.   } TIME_ZONE_INFORMATION,*PTIME_ZONE_INFORMATION,*LPTIME_ZONE_INFORMATION;
  1474.  
  1475. #ifdef UNICODE
  1476. #define FormatMessage FormatMessageW
  1477. #else
  1478. #define FormatMessage FormatMessageA
  1479. #endif
  1480.  
  1481.   WINBASEAPI WINBOOL WINAPI SystemTimeToTzSpecificLocalTime(LPTIME_ZONE_INFORMATION lpTimeZoneInformation,LPSYSTEMTIME lpUniversalTime,LPSYSTEMTIME lpLocalTime);
  1482.   WINBASEAPI WINBOOL WINAPI TzSpecificLocalTimeToSystemTime(LPTIME_ZONE_INFORMATION lpTimeZoneInformation,LPSYSTEMTIME lpLocalTime,LPSYSTEMTIME lpUniversalTime);
  1483.   WINBASEAPI DWORD WINAPI GetTimeZoneInformation(LPTIME_ZONE_INFORMATION lpTimeZoneInformation);
  1484.   WINBASEAPI WINBOOL WINAPI SetTimeZoneInformation(CONST TIME_ZONE_INFORMATION *lpTimeZoneInformation);
  1485.   WINBASEAPI WINBOOL WINAPI SystemTimeToFileTime(CONST SYSTEMTIME *lpSystemTime,LPFILETIME lpFileTime);
  1486.   WINBASEAPI WINBOOL WINAPI FileTimeToLocalFileTime(CONST FILETIME *lpFileTime,LPFILETIME lpLocalFileTime);
  1487.   WINBASEAPI WINBOOL WINAPI LocalFileTimeToFileTime(CONST FILETIME *lpLocalFileTime,LPFILETIME lpFileTime);
  1488.   WINBASEAPI WINBOOL WINAPI FileTimeToSystemTime(CONST FILETIME *lpFileTime,LPSYSTEMTIME lpSystemTime);
  1489.   WINBASEAPI LONG WINAPI CompareFileTime(CONST FILETIME *lpFileTime1,CONST FILETIME *lpFileTime2);
  1490.   WINBASEAPI WINBOOL WINAPI FileTimeToDosDateTime(CONST FILETIME *lpFileTime,LPWORD lpFatDate,LPWORD lpFatTime);
  1491.   WINBASEAPI WINBOOL WINAPI DosDateTimeToFileTime(WORD wFatDate,WORD wFatTime,LPFILETIME lpFileTime);
  1492.   WINBASEAPI DWORD WINAPI GetTickCount(VOID);
  1493.   WINBASEAPI WINBOOL WINAPI SetSystemTimeAdjustment(DWORD dwTimeAdjustment,WINBOOL bTimeAdjustmentDisabled);
  1494.   WINBASEAPI WINBOOL WINAPI GetSystemTimeAdjustment(PDWORD lpTimeAdjustment,PDWORD lpTimeIncrement,PBOOL lpTimeAdjustmentDisabled);
  1495.   WINBASEAPI DWORD WINAPI FormatMessageA(DWORD dwFlags,LPCVOID lpSource,DWORD dwMessageId,DWORD dwLanguageId,LPSTR lpBuffer,DWORD nSize,va_list *Arguments);
  1496.   WINBASEAPI DWORD WINAPI FormatMessageW(DWORD dwFlags,LPCVOID lpSource,DWORD dwMessageId,DWORD dwLanguageId,LPWSTR lpBuffer,DWORD nSize,va_list *Arguments);
  1497.  
  1498. #define FORMAT_MESSAGE_ALLOCATE_BUFFER 0x100
  1499. #define FORMAT_MESSAGE_IGNORE_INSERTS 0x200
  1500. #define FORMAT_MESSAGE_FROM_STRING 0x400
  1501. #define FORMAT_MESSAGE_FROM_HMODULE 0x800
  1502. #define FORMAT_MESSAGE_FROM_SYSTEM 0x1000
  1503. #define FORMAT_MESSAGE_ARGUMENT_ARRAY 0x2000
  1504. #define FORMAT_MESSAGE_MAX_WIDTH_MASK 0xff
  1505.  
  1506. #ifdef UNICODE
  1507. #define CreateMailslot CreateMailslotW
  1508. #define EncryptFile EncryptFileW
  1509. #define DecryptFile DecryptFileW
  1510. #define FileEncryptionStatus FileEncryptionStatusW
  1511. #else
  1512. #define CreateMailslot CreateMailslotA
  1513. #define EncryptFile EncryptFileA
  1514. #define DecryptFile DecryptFileA
  1515. #define FileEncryptionStatus FileEncryptionStatusA
  1516. #endif
  1517.  
  1518.   WINBASEAPI WINBOOL WINAPI CreatePipe(PHANDLE hReadPipe,PHANDLE hWritePipe,LPSECURITY_ATTRIBUTES lpPipeAttributes,DWORD nSize);
  1519.   WINBASEAPI WINBOOL WINAPI ConnectNamedPipe(HANDLE hNamedPipe,LPOVERLAPPED lpOverlapped);
  1520.   WINBASEAPI WINBOOL WINAPI DisconnectNamedPipe(HANDLE hNamedPipe);
  1521.   WINBASEAPI WINBOOL WINAPI SetNamedPipeHandleState(HANDLE hNamedPipe,LPDWORD lpMode,LPDWORD lpMaxCollectionCount,LPDWORD lpCollectDataTimeout);
  1522.   WINBASEAPI WINBOOL WINAPI GetNamedPipeInfo(HANDLE hNamedPipe,LPDWORD lpFlags,LPDWORD lpOutBufferSize,LPDWORD lpInBufferSize,LPDWORD lpMaxInstances);
  1523.   WINBASEAPI WINBOOL WINAPI PeekNamedPipe(HANDLE hNamedPipe,LPVOID lpBuffer,DWORD nBufferSize,LPDWORD lpBytesRead,LPDWORD lpTotalBytesAvail,LPDWORD lpBytesLeftThisMessage);
  1524.   WINBASEAPI WINBOOL WINAPI TransactNamedPipe(HANDLE hNamedPipe,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesRead,LPOVERLAPPED lpOverlapped);
  1525.   WINBASEAPI HANDLE WINAPI CreateMailslotA(LPCSTR lpName,DWORD nMaxMessageSize,DWORD lReadTimeout,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  1526.   WINBASEAPI HANDLE WINAPI CreateMailslotW(LPCWSTR lpName,DWORD nMaxMessageSize,DWORD lReadTimeout,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  1527.   WINBASEAPI WINBOOL WINAPI GetMailslotInfo(HANDLE hMailslot,LPDWORD lpMaxMessageSize,LPDWORD lpNextSize,LPDWORD lpMessageCount,LPDWORD lpReadTimeout);
  1528.   WINBASEAPI WINBOOL WINAPI SetMailslotInfo(HANDLE hMailslot,DWORD lReadTimeout);
  1529.   WINBASEAPI LPVOID WINAPI MapViewOfFile(HANDLE hFileMappingObject,DWORD dwDesiredAccess,DWORD dwFileOffsetHigh,DWORD dwFileOffsetLow,SIZE_T dwNumberOfBytesToMap);
  1530.   WINBASEAPI WINBOOL WINAPI FlushViewOfFile(LPCVOID lpBaseAddress,SIZE_T dwNumberOfBytesToFlush);
  1531.   WINBASEAPI WINBOOL WINAPI UnmapViewOfFile(LPCVOID lpBaseAddress);
  1532.   WINADVAPI WINBOOL WINAPI EncryptFileA(LPCSTR lpFileName);
  1533.   WINADVAPI WINBOOL WINAPI EncryptFileW(LPCWSTR lpFileName);
  1534.   WINADVAPI WINBOOL WINAPI DecryptFileA(LPCSTR lpFileName,DWORD dwReserved);
  1535.   WINADVAPI WINBOOL WINAPI DecryptFileW(LPCWSTR lpFileName,DWORD dwReserved);
  1536.  
  1537. #define FILE_ENCRYPTABLE 0
  1538. #define FILE_IS_ENCRYPTED 1
  1539. #define FILE_SYSTEM_ATTR 2
  1540. #define FILE_ROOT_DIR 3
  1541. #define FILE_SYSTEM_DIR 4
  1542. #define FILE_UNKNOWN 5
  1543. #define FILE_SYSTEM_NOT_SUPPORT 6
  1544. #define FILE_USER_DISALLOWED 7
  1545. #define FILE_READ_ONLY 8
  1546. #define FILE_DIR_DISALLOWED 9
  1547.  
  1548.   WINADVAPI WINBOOL WINAPI FileEncryptionStatusA(LPCSTR lpFileName,LPDWORD lpStatus);
  1549.   WINADVAPI WINBOOL WINAPI FileEncryptionStatusW(LPCWSTR lpFileName,LPDWORD lpStatus);
  1550.  
  1551. #define EFS_USE_RECOVERY_KEYS (0x1)
  1552.  
  1553.   typedef DWORD (WINAPI *PFE_EXPORT_FUNC)(PBYTE pbData,PVOID pvCallbackContext,ULONG ulLength);
  1554.   typedef DWORD (WINAPI *PFE_IMPORT_FUNC)(PBYTE pbData,PVOID pvCallbackContext,PULONG ulLength);
  1555.  
  1556. #define CREATE_FOR_IMPORT (1)
  1557. #define CREATE_FOR_DIR (2)
  1558. #define OVERWRITE_HIDDEN (4)
  1559.  
  1560. #ifdef UNICODE
  1561. #define OpenEncryptedFileRaw OpenEncryptedFileRawW
  1562. #define lstrcmp lstrcmpW
  1563. #define lstrcmpi lstrcmpiW
  1564. #define lstrcpyn lstrcpynW
  1565. #define lstrcpy lstrcpyW
  1566. #define lstrcat lstrcatW
  1567. #define lstrlen lstrlenW
  1568. #else
  1569. #define OpenEncryptedFileRaw OpenEncryptedFileRawA
  1570. #define lstrcmp lstrcmpA
  1571. #define lstrcmpi lstrcmpiA
  1572. #define lstrcpyn lstrcpynA
  1573. #define lstrcpy lstrcpyA
  1574. #define lstrcat lstrcatA
  1575. #define lstrlen lstrlenA
  1576. #endif
  1577.  
  1578.   WINADVAPI DWORD WINAPI OpenEncryptedFileRawA(LPCSTR lpFileName,ULONG ulFlags,PVOID *pvContext);
  1579.   WINADVAPI DWORD WINAPI OpenEncryptedFileRawW(LPCWSTR lpFileName,ULONG ulFlags,PVOID *pvContext);
  1580.   WINADVAPI DWORD WINAPI ReadEncryptedFileRaw(PFE_EXPORT_FUNC pfExportCallback,PVOID pvCallbackContext,PVOID pvContext);
  1581.   WINADVAPI DWORD WINAPI WriteEncryptedFileRaw(PFE_IMPORT_FUNC pfImportCallback,PVOID pvCallbackContext,PVOID pvContext);
  1582.   WINADVAPI VOID WINAPI CloseEncryptedFileRaw(PVOID pvContext);
  1583.   WINBASEAPI int WINAPI lstrcmpA(LPCSTR lpString1,LPCSTR lpString2);
  1584.   WINBASEAPI int WINAPI lstrcmpW(LPCWSTR lpString1,LPCWSTR lpString2);
  1585.   WINBASEAPI int WINAPI lstrcmpiA(LPCSTR lpString1,LPCSTR lpString2);
  1586.   WINBASEAPI int WINAPI lstrcmpiW(LPCWSTR lpString1,LPCWSTR lpString2);
  1587.   WINBASEAPI LPSTR WINAPI lstrcpynA(LPSTR lpString1,LPCSTR lpString2,int iMaxLength);
  1588.   WINBASEAPI LPWSTR WINAPI lstrcpynW(LPWSTR lpString1,LPCWSTR lpString2,int iMaxLength);
  1589.   WINBASEAPI LPSTR WINAPI lstrcpyA(LPSTR lpString1,LPCSTR lpString2);
  1590.   WINBASEAPI LPWSTR WINAPI lstrcpyW(LPWSTR lpString1,LPCWSTR lpString2);
  1591.   WINBASEAPI LPSTR WINAPI lstrcatA(LPSTR lpString1,LPCSTR lpString2);
  1592.   WINBASEAPI LPWSTR WINAPI lstrcatW(LPWSTR lpString1,LPCWSTR lpString2);
  1593.   WINBASEAPI int WINAPI lstrlenA(LPCSTR lpString);
  1594.   WINBASEAPI int WINAPI lstrlenW(LPCWSTR lpString);
  1595.   WINBASEAPI HFILE WINAPI OpenFile(LPCSTR lpFileName,LPOFSTRUCT lpReOpenBuff,UINT uStyle);
  1596.   WINBASEAPI HFILE WINAPI _lopen(LPCSTR lpPathName,int iReadWrite);
  1597.   WINBASEAPI HFILE WINAPI _lcreat(LPCSTR lpPathName,int iAttribute);
  1598.   WINBASEAPI UINT WINAPI _lread(HFILE hFile,LPVOID lpBuffer,UINT uBytes);
  1599.   WINBASEAPI UINT WINAPI _lwrite(HFILE hFile,LPCCH lpBuffer,UINT uBytes);
  1600.   WINBASEAPI long WINAPI _hread(HFILE hFile,LPVOID lpBuffer,long lBytes);
  1601.   WINBASEAPI long WINAPI _hwrite(HFILE hFile,LPCCH lpBuffer,long lBytes);
  1602.   WINBASEAPI HFILE WINAPI _lclose(HFILE hFile);
  1603.   WINBASEAPI LONG WINAPI _llseek(HFILE hFile,LONG lOffset,int iOrigin);
  1604.   WINADVAPI WINBOOL WINAPI IsTextUnicode(CONST VOID *lpv,int iSize,LPINT lpiResult);
  1605.  
  1606. #define FLS_OUT_OF_INDEXES ((DWORD)0xffffffff)
  1607.  
  1608.   WINBASEAPI DWORD WINAPI FlsAlloc(PFLS_CALLBACK_FUNCTION lpCallback);
  1609.   WINBASEAPI PVOID WINAPI FlsGetValue(DWORD dwFlsIndex);
  1610.   WINBASEAPI WINBOOL WINAPI FlsSetValue(DWORD dwFlsIndex,PVOID lpFlsData);
  1611.   WINBASEAPI WINBOOL WINAPI FlsFree(DWORD dwFlsIndex);
  1612.  
  1613. #define TLS_OUT_OF_INDEXES ((DWORD)0xffffffff)
  1614.  
  1615.   WINBASEAPI DWORD WINAPI TlsAlloc(VOID);
  1616.   WINBASEAPI LPVOID WINAPI TlsGetValue(DWORD dwTlsIndex);
  1617.   WINBASEAPI WINBOOL WINAPI TlsSetValue(DWORD dwTlsIndex,LPVOID lpTlsValue);
  1618.   WINBASEAPI WINBOOL WINAPI TlsFree(DWORD dwTlsIndex);
  1619.  
  1620.   typedef VOID (WINAPI *LPOVERLAPPED_COMPLETION_ROUTINE)(DWORD dwErrorCode,DWORD dwNumberOfBytesTransfered,LPOVERLAPPED lpOverlapped);
  1621.  
  1622.   WINBASEAPI DWORD WINAPI SleepEx(DWORD dwMilliseconds,WINBOOL bAlertable);
  1623.   WINBASEAPI DWORD WINAPI WaitForSingleObjectEx(HANDLE hHandle,DWORD dwMilliseconds,WINBOOL bAlertable);
  1624.   WINBASEAPI DWORD WINAPI WaitForMultipleObjectsEx(DWORD nCount,CONST HANDLE *lpHandles,WINBOOL bWaitAll,DWORD dwMilliseconds,WINBOOL bAlertable);
  1625.   WINBASEAPI DWORD WINAPI SignalObjectAndWait(HANDLE hObjectToSignal,HANDLE hObjectToWaitOn,DWORD dwMilliseconds,WINBOOL bAlertable);
  1626.   WINBASEAPI WINBOOL WINAPI ReadFileEx(HANDLE hFile,LPVOID lpBuffer,DWORD nNumberOfBytesToRead,LPOVERLAPPED lpOverlapped,LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
  1627.   WINBASEAPI WINBOOL WINAPI WriteFileEx(HANDLE hFile,LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite,LPOVERLAPPED lpOverlapped,LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
  1628.   WINBASEAPI WINBOOL WINAPI BackupRead(HANDLE hFile,LPBYTE lpBuffer,DWORD nNumberOfBytesToRead,LPDWORD lpNumberOfBytesRead,WINBOOL bAbort,WINBOOL bProcessSecurity,LPVOID *lpContext);
  1629.   WINBASEAPI WINBOOL WINAPI BackupSeek(HANDLE hFile,DWORD dwLowBytesToSeek,DWORD dwHighBytesToSeek,LPDWORD lpdwLowByteSeeked,LPDWORD lpdwHighByteSeeked,LPVOID *lpContext);
  1630.   WINBASEAPI WINBOOL WINAPI BackupWrite(HANDLE hFile,LPBYTE lpBuffer,DWORD nNumberOfBytesToWrite,LPDWORD lpNumberOfBytesWritten,WINBOOL bAbort,WINBOOL bProcessSecurity,LPVOID *lpContext);
  1631.  
  1632.   typedef struct _WIN32_STREAM_ID {
  1633.     DWORD dwStreamId;
  1634.     DWORD dwStreamAttributes;
  1635.     LARGE_INTEGER Size;
  1636.     DWORD dwStreamNameSize;
  1637.     WCHAR cStreamName[ANYSIZE_ARRAY];
  1638.   } WIN32_STREAM_ID,*LPWIN32_STREAM_ID;
  1639.  
  1640. #define BACKUP_INVALID 0x0
  1641. #define BACKUP_DATA 0x1
  1642. #define BACKUP_EA_DATA 0x2
  1643. #define BACKUP_SECURITY_DATA 0x3
  1644. #define BACKUP_ALTERNATE_DATA 0x4
  1645. #define BACKUP_LINK 0x5
  1646. #define BACKUP_PROPERTY_DATA 0x6
  1647. #define BACKUP_OBJECT_ID 0x7
  1648. #define BACKUP_REPARSE_DATA 0x8
  1649. #define BACKUP_SPARSE_BLOCK 0x9
  1650.  
  1651. #define STREAM_NORMAL_ATTRIBUTE 0x0
  1652. #define STREAM_MODIFIED_WHEN_READ 0x1
  1653. #define STREAM_CONTAINS_SECURITY 0x2
  1654. #define STREAM_CONTAINS_PROPERTIES 0x4
  1655. #define STREAM_SPARSE_ATTRIBUTE 0x8
  1656.  
  1657.   WINBASEAPI WINBOOL WINAPI ReadFileScatter(HANDLE hFile,FILE_SEGMENT_ELEMENT aSegmentArray[],DWORD nNumberOfBytesToRead,LPDWORD lpReserved,LPOVERLAPPED lpOverlapped);
  1658.   WINBASEAPI WINBOOL WINAPI WriteFileGather(HANDLE hFile,FILE_SEGMENT_ELEMENT aSegmentArray[],DWORD nNumberOfBytesToWrite,LPDWORD lpReserved,LPOVERLAPPED lpOverlapped);
  1659.  
  1660. #define STARTF_USESHOWWINDOW 0x1
  1661. #define STARTF_USESIZE 0x2
  1662. #define STARTF_USEPOSITION 0x4
  1663. #define STARTF_USECOUNTCHARS 0x8
  1664. #define STARTF_USEFILLATTRIBUTE 0x10
  1665. #define STARTF_RUNFULLSCREEN 0x20
  1666. #define STARTF_FORCEONFEEDBACK 0x40
  1667. #define STARTF_FORCEOFFFEEDBACK 0x80
  1668. #define STARTF_USESTDHANDLES 0x100
  1669.  
  1670. #define STARTF_USEHOTKEY 0x200
  1671.  
  1672.   typedef struct _STARTUPINFOA {
  1673.     DWORD cb;
  1674.     LPSTR lpReserved;
  1675.     LPSTR lpDesktop;
  1676.     LPSTR lpTitle;
  1677.     DWORD dwX;
  1678.     DWORD dwY;
  1679.     DWORD dwXSize;
  1680.     DWORD dwYSize;
  1681.     DWORD dwXCountChars;
  1682.     DWORD dwYCountChars;
  1683.     DWORD dwFillAttribute;
  1684.     DWORD dwFlags;
  1685.     WORD wShowWindow;
  1686.     WORD cbReserved2;
  1687.     LPBYTE lpReserved2;
  1688.     HANDLE hStdInput;
  1689.     HANDLE hStdOutput;
  1690.     HANDLE hStdError;
  1691.   } STARTUPINFOA,*LPSTARTUPINFOA;
  1692.  
  1693.   typedef struct _STARTUPINFOW {
  1694.     DWORD cb;
  1695.     LPWSTR lpReserved;
  1696.     LPWSTR lpDesktop;
  1697.     LPWSTR lpTitle;
  1698.     DWORD dwX;
  1699.     DWORD dwY;
  1700.     DWORD dwXSize;
  1701.     DWORD dwYSize;
  1702.     DWORD dwXCountChars;
  1703.     DWORD dwYCountChars;
  1704.     DWORD dwFillAttribute;
  1705.     DWORD dwFlags;
  1706.     WORD wShowWindow;
  1707.     WORD cbReserved2;
  1708.     LPBYTE lpReserved2;
  1709.     HANDLE hStdInput;
  1710.     HANDLE hStdOutput;
  1711.     HANDLE hStdError;
  1712.   } STARTUPINFOW,*LPSTARTUPINFOW;
  1713.  
  1714. #ifdef UNICODE
  1715.   typedef STARTUPINFOW STARTUPINFO;
  1716.   typedef LPSTARTUPINFOW LPSTARTUPINFO;
  1717. #else
  1718.   typedef STARTUPINFOA STARTUPINFO;
  1719.   typedef LPSTARTUPINFOA LPSTARTUPINFO;
  1720. #endif
  1721.  
  1722. #define SHUTDOWN_NORETRY 0x1
  1723.  
  1724.   typedef struct _WIN32_FIND_DATAA {
  1725.     DWORD dwFileAttributes;
  1726.     FILETIME ftCreationTime;
  1727.     FILETIME ftLastAccessTime;
  1728.     FILETIME ftLastWriteTime;
  1729.     DWORD nFileSizeHigh;
  1730.     DWORD nFileSizeLow;
  1731.     DWORD dwReserved0;
  1732.     DWORD dwReserved1;
  1733.     CHAR cFileName[MAX_PATH];
  1734.     CHAR cAlternateFileName[14];
  1735.   } WIN32_FIND_DATAA,*PWIN32_FIND_DATAA,*LPWIN32_FIND_DATAA;
  1736.  
  1737.   typedef struct _WIN32_FIND_DATAW {
  1738.     DWORD dwFileAttributes;
  1739.     FILETIME ftCreationTime;
  1740.     FILETIME ftLastAccessTime;
  1741.     FILETIME ftLastWriteTime;
  1742.     DWORD nFileSizeHigh;
  1743.     DWORD nFileSizeLow;
  1744.     DWORD dwReserved0;
  1745.     DWORD dwReserved1;
  1746.     WCHAR cFileName[MAX_PATH];
  1747.     WCHAR cAlternateFileName[14];
  1748.   } WIN32_FIND_DATAW,*PWIN32_FIND_DATAW,*LPWIN32_FIND_DATAW;
  1749.  
  1750. #ifdef UNICODE
  1751.   typedef WIN32_FIND_DATAW WIN32_FIND_DATA;
  1752.   typedef PWIN32_FIND_DATAW PWIN32_FIND_DATA;
  1753.   typedef LPWIN32_FIND_DATAW LPWIN32_FIND_DATA;
  1754. #else
  1755.   typedef WIN32_FIND_DATAA WIN32_FIND_DATA;
  1756.   typedef PWIN32_FIND_DATAA PWIN32_FIND_DATA;
  1757.   typedef LPWIN32_FIND_DATAA LPWIN32_FIND_DATA;
  1758. #endif
  1759.  
  1760.   typedef struct _WIN32_FILE_ATTRIBUTE_DATA {
  1761.     DWORD dwFileAttributes;
  1762.     FILETIME ftCreationTime;
  1763.     FILETIME ftLastAccessTime;
  1764.     FILETIME ftLastWriteTime;
  1765.     DWORD nFileSizeHigh;
  1766.     DWORD nFileSizeLow;
  1767.   } WIN32_FILE_ATTRIBUTE_DATA,*LPWIN32_FILE_ATTRIBUTE_DATA;
  1768.  
  1769. #ifdef UNICODE
  1770. #define CreateMutex CreateMutexW
  1771. #define OpenMutex OpenMutexW
  1772. #define CreateEvent CreateEventW
  1773. #define OpenEvent OpenEventW
  1774. #define CreateSemaphore CreateSemaphoreW
  1775. #define OpenSemaphore OpenSemaphoreW
  1776. #else
  1777. #define CreateMutex CreateMutexA
  1778. #define OpenMutex OpenMutexA
  1779. #define CreateEvent CreateEventA
  1780. #define OpenEvent OpenEventA
  1781. #define CreateSemaphore CreateSemaphoreA
  1782. #define OpenSemaphore OpenSemaphoreA
  1783. #endif
  1784.  
  1785.   WINBASEAPI HANDLE WINAPI CreateMutexA(LPSECURITY_ATTRIBUTES lpMutexAttributes,WINBOOL bInitialOwner,LPCSTR lpName);
  1786.   WINBASEAPI HANDLE WINAPI CreateMutexW(LPSECURITY_ATTRIBUTES lpMutexAttributes,WINBOOL bInitialOwner,LPCWSTR lpName);
  1787.   WINBASEAPI HANDLE WINAPI OpenMutexA(DWORD dwDesiredAccess,WINBOOL bInheritHandle,LPCSTR lpName);
  1788.   WINBASEAPI HANDLE WINAPI OpenMutexW(DWORD dwDesiredAccess,WINBOOL bInheritHandle,LPCWSTR lpName);
  1789.   WINBASEAPI HANDLE WINAPI CreateEventA(LPSECURITY_ATTRIBUTES lpEventAttributes,WINBOOL bManualReset,WINBOOL bInitialState,LPCSTR lpName);
  1790.   WINBASEAPI HANDLE WINAPI CreateEventW(LPSECURITY_ATTRIBUTES lpEventAttributes,WINBOOL bManualReset,WINBOOL bInitialState,LPCWSTR lpName);
  1791.   WINBASEAPI HANDLE WINAPI OpenEventA(DWORD dwDesiredAccess,WINBOOL bInheritHandle,LPCSTR lpName);
  1792.   WINBASEAPI HANDLE WINAPI OpenEventW(DWORD dwDesiredAccess,WINBOOL bInheritHandle,LPCWSTR lpName);
  1793.   WINBASEAPI HANDLE WINAPI CreateSemaphoreA(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,LONG lInitialCount,LONG lMaximumCount,LPCSTR lpName);
  1794.   WINBASEAPI HANDLE WINAPI CreateSemaphoreW(LPSECURITY_ATTRIBUTES lpSemaphoreAttributes,LONG lInitialCount,LONG lMaximumCount,LPCWSTR lpName);
  1795.   WINBASEAPI HANDLE WINAPI OpenSemaphoreA(DWORD dwDesiredAccess,WINBOOL bInheritHandle,LPCSTR lpName);
  1796.   WINBASEAPI HANDLE WINAPI OpenSemaphoreW(DWORD dwDesiredAccess,WINBOOL bInheritHandle,LPCWSTR lpName);
  1797.  
  1798.   typedef VOID (WINAPI *PTIMERAPCROUTINE)(LPVOID lpArgToCompletionRoutine,DWORD dwTimerLowValue,DWORD dwTimerHighValue);
  1799.  
  1800. #ifdef UNICODE
  1801. #define CreateWaitableTimer CreateWaitableTimerW
  1802. #define OpenWaitableTimer OpenWaitableTimerW
  1803. #define CreateFileMapping CreateFileMappingW
  1804. #define OpenFileMapping OpenFileMappingW
  1805. #define GetLogicalDriveStrings GetLogicalDriveStringsW
  1806. #define LoadLibrary LoadLibraryW
  1807. #define LoadLibraryEx LoadLibraryExW
  1808. #define GetModuleFileName GetModuleFileNameW
  1809. #define GetModuleHandle GetModuleHandleW
  1810. #else
  1811. #define CreateWaitableTimer CreateWaitableTimerA
  1812. #define OpenWaitableTimer OpenWaitableTimerA
  1813. #define CreateFileMapping CreateFileMappingA
  1814. #define OpenFileMapping OpenFileMappingA
  1815. #define GetLogicalDriveStrings GetLogicalDriveStringsA
  1816. #define LoadLibrary LoadLibraryA
  1817. #define LoadLibraryEx LoadLibraryExA
  1818. #define GetModuleFileName GetModuleFileNameA
  1819. #define GetModuleHandle GetModuleHandleA
  1820. #endif
  1821.  
  1822.   WINBASEAPI HANDLE WINAPI CreateWaitableTimerA(LPSECURITY_ATTRIBUTES lpTimerAttributes,WINBOOL bManualReset,LPCSTR lpTimerName);
  1823.   WINBASEAPI HANDLE WINAPI CreateWaitableTimerW(LPSECURITY_ATTRIBUTES lpTimerAttributes,WINBOOL bManualReset,LPCWSTR lpTimerName);
  1824.   WINBASEAPI HANDLE WINAPI OpenWaitableTimerA(DWORD dwDesiredAccess,WINBOOL bInheritHandle,LPCSTR lpTimerName);
  1825.   WINBASEAPI HANDLE WINAPI OpenWaitableTimerW(DWORD dwDesiredAccess,WINBOOL bInheritHandle,LPCWSTR lpTimerName);
  1826.   WINBASEAPI WINBOOL WINAPI SetWaitableTimer(HANDLE hTimer,const LARGE_INTEGER *lpDueTime,LONG lPeriod,PTIMERAPCROUTINE pfnCompletionRoutine,LPVOID lpArgToCompletionRoutine,WINBOOL fResume);
  1827.   WINBASEAPI WINBOOL WINAPI CancelWaitableTimer(HANDLE hTimer);
  1828.   WINBASEAPI HANDLE WINAPI CreateFileMappingA(HANDLE hFile,LPSECURITY_ATTRIBUTES lpFileMappingAttributes,DWORD flProtect,DWORD dwMaximumSizeHigh,DWORD dwMaximumSizeLow,LPCSTR lpName);
  1829.   WINBASEAPI HANDLE WINAPI CreateFileMappingW(HANDLE hFile,LPSECURITY_ATTRIBUTES lpFileMappingAttributes,DWORD flProtect,DWORD dwMaximumSizeHigh,DWORD dwMaximumSizeLow,LPCWSTR lpName);
  1830.   WINBASEAPI HANDLE WINAPI OpenFileMappingA(DWORD dwDesiredAccess,WINBOOL bInheritHandle,LPCSTR lpName);
  1831.   WINBASEAPI HANDLE WINAPI OpenFileMappingW(DWORD dwDesiredAccess,WINBOOL bInheritHandle,LPCWSTR lpName);
  1832.   WINBASEAPI DWORD WINAPI GetLogicalDriveStringsA(DWORD nBufferLength,LPSTR lpBuffer);
  1833.   WINBASEAPI DWORD WINAPI GetLogicalDriveStringsW(DWORD nBufferLength,LPWSTR lpBuffer);
  1834.  
  1835.   typedef enum _MEMORY_RESOURCE_NOTIFICATION_TYPE {
  1836.     LowMemoryResourceNotification,HighMemoryResourceNotification
  1837.   } MEMORY_RESOURCE_NOTIFICATION_TYPE;
  1838.  
  1839.   WINBASEAPI HANDLE WINAPI CreateMemoryResourceNotification(MEMORY_RESOURCE_NOTIFICATION_TYPE NotificationType);
  1840.   WINBASEAPI WINBOOL WINAPI QueryMemoryResourceNotification(HANDLE ResourceNotificationHandle,PBOOL ResourceState);
  1841.   WINBASEAPI HMODULE WINAPI LoadLibraryA(LPCSTR lpLibFileName);
  1842.   WINBASEAPI HMODULE WINAPI LoadLibraryW(LPCWSTR lpLibFileName);
  1843.   WINBASEAPI HMODULE WINAPI LoadLibraryExA(LPCSTR lpLibFileName,HANDLE hFile,DWORD dwFlags);
  1844.   WINBASEAPI HMODULE WINAPI LoadLibraryExW(LPCWSTR lpLibFileName,HANDLE hFile,DWORD dwFlags);
  1845.  
  1846. #define DONT_RESOLVE_DLL_REFERENCES 0x1
  1847. #define LOAD_LIBRARY_AS_DATAFILE 0x2
  1848. #define LOAD_WITH_ALTERED_SEARCH_PATH 0x8
  1849. #define LOAD_IGNORE_CODE_AUTHZ_LEVEL 0x10
  1850. #define LOAD_LINRARY_AS_IMAGE_RESOURCE 0x20
  1851. #define LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE 0x40
  1852.  
  1853.   WINBASEAPI DWORD WINAPI GetModuleFileNameA(HMODULE hModule,LPCH lpFilename,DWORD nSize);
  1854.   WINBASEAPI DWORD WINAPI GetModuleFileNameW(HMODULE hModule,LPWCH lpFilename,DWORD nSize);
  1855.   WINBASEAPI HMODULE WINAPI GetModuleHandleA(LPCSTR lpModuleName);
  1856.   WINBASEAPI HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName);
  1857.  
  1858. #ifndef RC_INVOKED
  1859. #define GET_MODULE_HANDLE_EX_FLAG_PIN (0x1)
  1860. #define GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT (0x2)
  1861. #define GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS (0x4)
  1862.  
  1863.   typedef WINBOOL (WINAPI *PGET_MODULE_HANDLE_EXA)(DWORD dwFlags,LPCSTR lpModuleName,HMODULE *phModule);
  1864.   typedef WINBOOL (WINAPI *PGET_MODULE_HANDLE_EXW)(DWORD dwFlags,LPCWSTR lpModuleName,HMODULE *phModule);
  1865.  
  1866. #ifdef UNICODE
  1867. #define PGET_MODULE_HANDLE_EX PGET_MODULE_HANDLE_EXW
  1868. #define GetModuleHandleEx GetModuleHandleExW
  1869. #else
  1870. #define PGET_MODULE_HANDLE_EX PGET_MODULE_HANDLE_EXA
  1871. #define GetModuleHandleEx GetModuleHandleExA
  1872. #endif
  1873.  
  1874.   WINBASEAPI WINBOOL WINAPI GetModuleHandleExA(DWORD dwFlags,LPCSTR lpModuleName,HMODULE *phModule);
  1875.   WINBASEAPI WINBOOL WINAPI GetModuleHandleExW(DWORD dwFlags,LPCWSTR lpModuleName,HMODULE *phModule);
  1876. #endif
  1877.  
  1878. #ifdef UNICODE
  1879. #define NeedCurrentDirectoryForExePath NeedCurrentDirectoryForExePathW
  1880. #define CreateProcess CreateProcessW
  1881. #define FatalAppExit FatalAppExitW
  1882. #define GetStartupInfo GetStartupInfoW
  1883. #define GetCommandLine GetCommandLineW
  1884. #define GetEnvironmentVariable GetEnvironmentVariableW
  1885. #define SetEnvironmentVariable SetEnvironmentVariableW
  1886. #define ExpandEnvironmentStrings ExpandEnvironmentStringsW
  1887. #define GetFirmwareEnvironmentVariable GetFirmwareEnvironmentVariableW
  1888. #define SetFirmwareEnvironmentVariable SetFirmwareEnvironmentVariableW
  1889. #define OutputDebugString OutputDebugStringW
  1890. #define FindResource FindResourceW
  1891. #define FindResourceEx FindResourceExW
  1892. #else
  1893. #define NeedCurrentDirectoryForExePath NeedCurrentDirectoryForExePathA
  1894. #define CreateProcess CreateProcessA
  1895. #define FatalAppExit FatalAppExitA
  1896. #define GetStartupInfo GetStartupInfoA
  1897. #define GetCommandLine GetCommandLineA
  1898. #define GetEnvironmentVariable GetEnvironmentVariableA
  1899. #define SetEnvironmentVariable SetEnvironmentVariableA
  1900. #define ExpandEnvironmentStrings ExpandEnvironmentStringsA
  1901. #define GetFirmwareEnvironmentVariable GetFirmwareEnvironmentVariableA
  1902. #define SetFirmwareEnvironmentVariable SetFirmwareEnvironmentVariableA
  1903. #define OutputDebugString OutputDebugStringA
  1904. #define FindResource FindResourceA
  1905. #define FindResourceEx FindResourceExA
  1906. #endif
  1907.  
  1908.   WINBASEAPI WINBOOL WINAPI NeedCurrentDirectoryForExePathA(LPCSTR ExeName);
  1909.   WINBASEAPI WINBOOL WINAPI NeedCurrentDirectoryForExePathW(LPCWSTR ExeName);
  1910.   WINBASEAPI WINBOOL WINAPI CreateProcessA(LPCSTR lpApplicationName,LPSTR lpCommandLine,LPSECURITY_ATTRIBUTES lpProcessAttributes,LPSECURITY_ATTRIBUTES lpThreadAttributes,WINBOOL bInheritHandles,DWORD dwCreationFlags,LPVOID lpEnvironment,LPCSTR lpCurrentDirectory,LPSTARTUPINFOA lpStartupInfo,LPPROCESS_INFORMATION lpProcessInformation);
  1911.   WINBASEAPI WINBOOL WINAPI CreateProcessW(LPCWSTR lpApplicationName,LPWSTR lpCommandLine,LPSECURITY_ATTRIBUTES lpProcessAttributes,LPSECURITY_ATTRIBUTES lpThreadAttributes,WINBOOL bInheritHandles,DWORD dwCreationFlags,LPVOID lpEnvironment,LPCWSTR lpCurrentDirectory,LPSTARTUPINFOW lpStartupInfo,LPPROCESS_INFORMATION lpProcessInformation);
  1912.   WINBASEAPI DWORD WINAPI AddLocalAlternateComputerNameA(LPCSTR lpDnsFQHostname,ULONG ulFlags);
  1913.   WINBASEAPI DWORD WINAPI AddLocalAlternateComputerNameW(LPCWSTR lpDnsFQHostname,ULONG ulFlags);
  1914.   WINBASEAPI WINBOOL WINAPI SetProcessShutdownParameters(DWORD dwLevel,DWORD dwFlags);
  1915.   WINBASEAPI WINBOOL WINAPI GetProcessShutdownParameters(LPDWORD lpdwLevel,LPDWORD lpdwFlags);
  1916.   WINBASEAPI DWORD WINAPI GetProcessVersion(DWORD ProcessId);
  1917.   WINBASEAPI VOID WINAPI FatalAppExitA(UINT uAction,LPCSTR lpMessageText);
  1918.   WINBASEAPI VOID WINAPI FatalAppExitW(UINT uAction,LPCWSTR lpMessageText);
  1919.   WINBASEAPI VOID WINAPI GetStartupInfoA(LPSTARTUPINFOA lpStartupInfo);
  1920.   WINBASEAPI VOID WINAPI GetStartupInfoW(LPSTARTUPINFOW lpStartupInfo);
  1921.   WINBASEAPI LPSTR WINAPI GetCommandLineA(VOID);
  1922.   WINBASEAPI LPWSTR WINAPI GetCommandLineW(VOID);
  1923.   WINBASEAPI DWORD WINAPI GetEnvironmentVariableA(LPCSTR lpName,LPSTR lpBuffer,DWORD nSize);
  1924.   WINBASEAPI DWORD WINAPI GetEnvironmentVariableW(LPCWSTR lpName,LPWSTR lpBuffer,DWORD nSize);
  1925.   WINBASEAPI WINBOOL WINAPI SetEnvironmentVariableA(LPCSTR lpName,LPCSTR lpValue);
  1926.   WINBASEAPI WINBOOL WINAPI SetEnvironmentVariableW(LPCWSTR lpName,LPCWSTR lpValue);
  1927.   WINBASEAPI DWORD WINAPI ExpandEnvironmentStringsA(LPCSTR lpSrc,LPSTR lpDst,DWORD nSize);
  1928.   WINBASEAPI DWORD WINAPI ExpandEnvironmentStringsW(LPCWSTR lpSrc,LPWSTR lpDst,DWORD nSize);
  1929.   WINBASEAPI DWORD WINAPI GetFirmwareEnvironmentVariableA(LPCSTR lpName,LPCSTR lpGuid,PVOID pBuffer,DWORD nSize);
  1930.   WINBASEAPI DWORD WINAPI GetFirmwareEnvironmentVariableW(LPCWSTR lpName,LPCWSTR lpGuid,PVOID pBuffer,DWORD nSize);
  1931.   WINBASEAPI WINBOOL WINAPI SetFirmwareEnvironmentVariableA(LPCSTR lpName,LPCSTR lpGuid,PVOID pValue,DWORD nSize);
  1932.   WINBASEAPI WINBOOL WINAPI SetFirmwareEnvironmentVariableW(LPCWSTR lpName,LPCWSTR lpGuid,PVOID pValue,DWORD nSize);
  1933.   WINBASEAPI VOID WINAPI OutputDebugStringA(LPCSTR lpOutputString);
  1934.   WINBASEAPI VOID WINAPI OutputDebugStringW(LPCWSTR lpOutputString);
  1935.   WINBASEAPI HRSRC WINAPI FindResourceA(HMODULE hModule,LPCSTR lpName,LPCSTR lpType);
  1936.   WINBASEAPI HRSRC WINAPI FindResourceW(HMODULE hModule,LPCWSTR lpName,LPCWSTR lpType);
  1937.   WINBASEAPI HRSRC WINAPI FindResourceExA(HMODULE hModule,LPCSTR lpType,LPCSTR lpName,WORD wLanguage);
  1938.   WINBASEAPI HRSRC WINAPI FindResourceExW(HMODULE hModule,LPCWSTR lpType,LPCWSTR lpName,WORD wLanguage);
  1939.  
  1940. #ifdef UNICODE
  1941. #define ENUMRESTYPEPROC ENUMRESTYPEPROCW
  1942. #define ENUMRESNAMEPROC ENUMRESNAMEPROCW
  1943. #define ENUMRESLANGPROC ENUMRESLANGPROCW
  1944. #define EnumResourceTypes EnumResourceTypesW
  1945. #define EnumResourceNames EnumResourceNamesW
  1946. #define EnumResourceLanguages EnumResourceLanguagesW
  1947. #define BeginUpdateResource BeginUpdateResourceW
  1948. #define UpdateResource UpdateResourceW
  1949. #define EndUpdateResource EndUpdateResourceW
  1950. #define GlobalAddAtom GlobalAddAtomW
  1951. #define GlobalFindAtom GlobalFindAtomW
  1952. #define GlobalGetAtomName GlobalGetAtomNameW
  1953. #define AddAtom AddAtomW
  1954. #define FindAtom FindAtomW
  1955. #define GetAtomName GetAtomNameW
  1956. #define GetProfileInt GetProfileIntW
  1957. #define GetProfileString GetProfileStringW
  1958. #define WriteProfileString WriteProfileStringW
  1959. #define GetProfileSection GetProfileSectionW
  1960. #define WriteProfileSection WriteProfileSectionW
  1961. #define GetPrivateProfileInt GetPrivateProfileIntW
  1962. #define GetPrivateProfileString GetPrivateProfileStringW
  1963. #define WritePrivateProfileString WritePrivateProfileStringW
  1964. #define GetPrivateProfileSection GetPrivateProfileSectionW
  1965. #define WritePrivateProfileSection WritePrivateProfileSectionW
  1966. #define GetPrivateProfileSectionNames GetPrivateProfileSectionNamesW
  1967. #define GetPrivateProfileStruct GetPrivateProfileStructW
  1968. #define WritePrivateProfileStruct WritePrivateProfileStructW
  1969. #define GetDriveType GetDriveTypeW
  1970. #define GetSystemDirectory GetSystemDirectoryW
  1971. #define GetTempPath GetTempPathW
  1972. #define GetTempFileName GetTempFileNameW
  1973. #define GetWindowsDirectory GetWindowsDirectoryW
  1974. #define GetSystemWindowsDirectory GetSystemWindowsDirectoryW
  1975. #define AddLocalAlternateComputerName AddLocalAlternateComputerNameW
  1976. #else
  1977. #define ENUMRESTYPEPROC ENUMRESTYPEPROCA
  1978. #define ENUMRESNAMEPROC ENUMRESNAMEPROCA
  1979. #define ENUMRESLANGPROC ENUMRESLANGPROCA
  1980. #define EnumResourceTypes EnumResourceTypesA
  1981. #define EnumResourceNames EnumResourceNamesA
  1982. #define EnumResourceLanguages EnumResourceLanguagesA
  1983. #define BeginUpdateResource BeginUpdateResourceA
  1984. #define UpdateResource UpdateResourceA
  1985. #define EndUpdateResource EndUpdateResourceA
  1986. #define GlobalAddAtom GlobalAddAtomA
  1987. #define GlobalFindAtom GlobalFindAtomA
  1988. #define GlobalGetAtomName GlobalGetAtomNameA
  1989. #define AddAtom AddAtomA
  1990. #define FindAtom FindAtomA
  1991. #define GetAtomName GetAtomNameA
  1992. #define GetProfileInt GetProfileIntA
  1993. #define GetProfileString GetProfileStringA
  1994. #define WriteProfileString WriteProfileStringA
  1995. #define GetProfileSection GetProfileSectionA
  1996. #define WriteProfileSection WriteProfileSectionA
  1997. #define GetPrivateProfileInt GetPrivateProfileIntA
  1998. #define GetPrivateProfileString GetPrivateProfileStringA
  1999. #define WritePrivateProfileString WritePrivateProfileStringA
  2000. #define GetPrivateProfileSection GetPrivateProfileSectionA
  2001. #define WritePrivateProfileSection WritePrivateProfileSectionA
  2002. #define GetPrivateProfileSectionNames GetPrivateProfileSectionNamesA
  2003. #define GetPrivateProfileStruct GetPrivateProfileStructA
  2004. #define WritePrivateProfileStruct WritePrivateProfileStructA
  2005. #define GetDriveType GetDriveTypeA
  2006. #define GetSystemDirectory GetSystemDirectoryA
  2007. #define GetTempPath GetTempPathA
  2008. #define GetTempFileName GetTempFileNameA
  2009. #define GetWindowsDirectory GetWindowsDirectoryA
  2010. #define GetSystemWindowsDirectory GetSystemWindowsDirectoryA
  2011. #define AddLocalAlternateComputerName AddLocalAlternateComputerNameA
  2012. #endif
  2013.  
  2014.   typedef WINBOOL (CALLBACK *ENUMRESTYPEPROCA)(HMODULE hModule,LPSTR lpType,LONG_PTR lParam);
  2015.   typedef WINBOOL (CALLBACK *ENUMRESTYPEPROCW)(HMODULE hModule,LPWSTR lpType,LONG_PTR lParam);
  2016.   typedef WINBOOL (CALLBACK *ENUMRESNAMEPROCA)(HMODULE hModule,LPCSTR lpType,LPSTR lpName,LONG_PTR lParam);
  2017.   typedef WINBOOL (CALLBACK *ENUMRESNAMEPROCW)(HMODULE hModule,LPCWSTR lpType,LPWSTR lpName,LONG_PTR lParam);
  2018.   typedef WINBOOL (CALLBACK *ENUMRESLANGPROCA)(HMODULE hModule,LPCSTR lpType,LPCSTR lpName,WORD wLanguage,LONG_PTR lParam);
  2019.   typedef WINBOOL (CALLBACK *ENUMRESLANGPROCW)(HMODULE hModule,LPCWSTR lpType,LPCWSTR lpName,WORD wLanguage,LONG_PTR lParam);
  2020.  
  2021.   WINBASEAPI WINBOOL WINAPI EnumResourceTypesA(HMODULE hModule,ENUMRESTYPEPROCA lpEnumFunc,LONG_PTR lParam);
  2022.   WINBASEAPI WINBOOL WINAPI EnumResourceTypesW(HMODULE hModule,ENUMRESTYPEPROCW lpEnumFunc,LONG_PTR lParam);
  2023.   WINBASEAPI WINBOOL WINAPI EnumResourceNamesA(HMODULE hModule,LPCSTR lpType,ENUMRESNAMEPROCA lpEnumFunc,LONG_PTR lParam);
  2024.   WINBASEAPI WINBOOL WINAPI EnumResourceNamesW(HMODULE hModule,LPCWSTR lpType,ENUMRESNAMEPROCW lpEnumFunc,LONG_PTR lParam);
  2025.   WINBASEAPI WINBOOL WINAPI EnumResourceLanguagesA(HMODULE hModule,LPCSTR lpType,LPCSTR lpName,ENUMRESLANGPROCA lpEnumFunc,LONG_PTR lParam);
  2026.   WINBASEAPI WINBOOL WINAPI EnumResourceLanguagesW(HMODULE hModule,LPCWSTR lpType,LPCWSTR lpName,ENUMRESLANGPROCW lpEnumFunc,LONG_PTR lParam);
  2027.   WINBASEAPI HANDLE WINAPI BeginUpdateResourceA(LPCSTR pFileName,WINBOOL bDeleteExistingResources);
  2028.   WINBASEAPI HANDLE WINAPI BeginUpdateResourceW(LPCWSTR pFileName,WINBOOL bDeleteExistingResources);
  2029.   WINBASEAPI WINBOOL WINAPI UpdateResourceA(HANDLE hUpdate,LPCSTR lpType,LPCSTR lpName,WORD wLanguage,LPVOID lpData,DWORD cb);
  2030.   WINBASEAPI WINBOOL WINAPI UpdateResourceW(HANDLE hUpdate,LPCWSTR lpType,LPCWSTR lpName,WORD wLanguage,LPVOID lpData,DWORD cb);
  2031.   WINBASEAPI WINBOOL WINAPI EndUpdateResourceA(HANDLE hUpdate,WINBOOL fDiscard);
  2032.   WINBASEAPI WINBOOL WINAPI EndUpdateResourceW(HANDLE hUpdate,WINBOOL fDiscard);
  2033.   WINBASEAPI ATOM WINAPI GlobalAddAtomA(LPCSTR lpString);
  2034.   WINBASEAPI ATOM WINAPI GlobalAddAtomW(LPCWSTR lpString);
  2035.   WINBASEAPI ATOM WINAPI GlobalFindAtomA(LPCSTR lpString);
  2036.   WINBASEAPI ATOM WINAPI GlobalFindAtomW(LPCWSTR lpString);
  2037.   WINBASEAPI UINT WINAPI GlobalGetAtomNameA(ATOM nAtom,LPSTR lpBuffer,int nSize);
  2038.   WINBASEAPI UINT WINAPI GlobalGetAtomNameW(ATOM nAtom,LPWSTR lpBuffer,int nSize);
  2039.   WINBASEAPI ATOM WINAPI AddAtomA(LPCSTR lpString);
  2040.   WINBASEAPI ATOM WINAPI AddAtomW(LPCWSTR lpString);
  2041.   WINBASEAPI ATOM WINAPI FindAtomA(LPCSTR lpString);
  2042.   WINBASEAPI ATOM WINAPI FindAtomW(LPCWSTR lpString);
  2043.   WINBASEAPI UINT WINAPI GetAtomNameA(ATOM nAtom,LPSTR lpBuffer,int nSize);
  2044.   WINBASEAPI UINT WINAPI GetAtomNameW(ATOM nAtom,LPWSTR lpBuffer,int nSize);
  2045.   WINBASEAPI UINT WINAPI GetProfileIntA(LPCSTR lpAppName,LPCSTR lpKeyName,INT nDefault);
  2046.   WINBASEAPI UINT WINAPI GetProfileIntW(LPCWSTR lpAppName,LPCWSTR lpKeyName,INT nDefault);
  2047.   WINBASEAPI DWORD WINAPI GetProfileStringA(LPCSTR lpAppName,LPCSTR lpKeyName,LPCSTR lpDefault,LPSTR lpReturnedString,DWORD nSize);
  2048.   WINBASEAPI DWORD WINAPI GetProfileStringW(LPCWSTR lpAppName,LPCWSTR lpKeyName,LPCWSTR lpDefault,LPWSTR lpReturnedString,DWORD nSize);
  2049.   WINBASEAPI WINBOOL WINAPI WriteProfileStringA(LPCSTR lpAppName,LPCSTR lpKeyName,LPCSTR lpString);
  2050.   WINBASEAPI WINBOOL WINAPI WriteProfileStringW(LPCWSTR lpAppName,LPCWSTR lpKeyName,LPCWSTR lpString);
  2051.   WINBASEAPI DWORD WINAPI GetProfileSectionA(LPCSTR lpAppName,LPSTR lpReturnedString,DWORD nSize);
  2052.   WINBASEAPI DWORD WINAPI GetProfileSectionW(LPCWSTR lpAppName,LPWSTR lpReturnedString,DWORD nSize);
  2053.   WINBASEAPI WINBOOL WINAPI WriteProfileSectionA(LPCSTR lpAppName,LPCSTR lpString);
  2054.   WINBASEAPI WINBOOL WINAPI WriteProfileSectionW(LPCWSTR lpAppName,LPCWSTR lpString);
  2055.   WINBASEAPI UINT WINAPI GetPrivateProfileIntA(LPCSTR lpAppName,LPCSTR lpKeyName,INT nDefault,LPCSTR lpFileName);
  2056.   WINBASEAPI UINT WINAPI GetPrivateProfileIntW(LPCWSTR lpAppName,LPCWSTR lpKeyName,INT nDefault,LPCWSTR lpFileName);
  2057.   WINBASEAPI DWORD WINAPI GetPrivateProfileStringA(LPCSTR lpAppName,LPCSTR lpKeyName,LPCSTR lpDefault,LPSTR lpReturnedString,DWORD nSize,LPCSTR lpFileName);
  2058.   WINBASEAPI DWORD WINAPI GetPrivateProfileStringW(LPCWSTR lpAppName,LPCWSTR lpKeyName,LPCWSTR lpDefault,LPWSTR lpReturnedString,DWORD nSize,LPCWSTR lpFileName);
  2059.   WINBASEAPI WINBOOL WINAPI WritePrivateProfileStringA(LPCSTR lpAppName,LPCSTR lpKeyName,LPCSTR lpString,LPCSTR lpFileName);
  2060.   WINBASEAPI WINBOOL WINAPI WritePrivateProfileStringW(LPCWSTR lpAppName,LPCWSTR lpKeyName,LPCWSTR lpString,LPCWSTR lpFileName);
  2061.   WINBASEAPI DWORD WINAPI GetPrivateProfileSectionA(LPCSTR lpAppName,LPSTR lpReturnedString,DWORD nSize,LPCSTR lpFileName);
  2062.   WINBASEAPI DWORD WINAPI GetPrivateProfileSectionW(LPCWSTR lpAppName,LPWSTR lpReturnedString,DWORD nSize,LPCWSTR lpFileName);
  2063.   WINBASEAPI WINBOOL WINAPI WritePrivateProfileSectionA(LPCSTR lpAppName,LPCSTR lpString,LPCSTR lpFileName);
  2064.   WINBASEAPI WINBOOL WINAPI WritePrivateProfileSectionW(LPCWSTR lpAppName,LPCWSTR lpString,LPCWSTR lpFileName);
  2065.   WINBASEAPI DWORD WINAPI GetPrivateProfileSectionNamesA(LPSTR lpszReturnBuffer,DWORD nSize,LPCSTR lpFileName);
  2066.   WINBASEAPI DWORD WINAPI GetPrivateProfileSectionNamesW(LPWSTR lpszReturnBuffer,DWORD nSize,LPCWSTR lpFileName);
  2067.   WINBASEAPI WINBOOL WINAPI GetPrivateProfileStructA(LPCSTR lpszSection,LPCSTR lpszKey,LPVOID lpStruct,UINT uSizeStruct,LPCSTR szFile);
  2068.   WINBASEAPI WINBOOL WINAPI GetPrivateProfileStructW(LPCWSTR lpszSection,LPCWSTR lpszKey,LPVOID lpStruct,UINT uSizeStruct,LPCWSTR szFile);
  2069.   WINBASEAPI WINBOOL WINAPI WritePrivateProfileStructA(LPCSTR lpszSection,LPCSTR lpszKey,LPVOID lpStruct,UINT uSizeStruct,LPCSTR szFile);
  2070.   WINBASEAPI WINBOOL WINAPI WritePrivateProfileStructW(LPCWSTR lpszSection,LPCWSTR lpszKey,LPVOID lpStruct,UINT uSizeStruct,LPCWSTR szFile);
  2071.   WINBASEAPI UINT WINAPI GetDriveTypeA(LPCSTR lpRootPathName);
  2072.   WINBASEAPI UINT WINAPI GetDriveTypeW(LPCWSTR lpRootPathName);
  2073.   WINBASEAPI UINT WINAPI GetSystemDirectoryA(LPSTR lpBuffer,UINT uSize);
  2074.   WINBASEAPI UINT WINAPI GetSystemDirectoryW(LPWSTR lpBuffer,UINT uSize);
  2075.   WINBASEAPI DWORD WINAPI GetTempPathA(DWORD nBufferLength,LPSTR lpBuffer);
  2076.   WINBASEAPI DWORD WINAPI GetTempPathW(DWORD nBufferLength,LPWSTR lpBuffer);
  2077.   WINBASEAPI UINT WINAPI GetTempFileNameA(LPCSTR lpPathName,LPCSTR lpPrefixString,UINT uUnique,LPSTR lpTempFileName);
  2078.   WINBASEAPI UINT WINAPI GetTempFileNameW(LPCWSTR lpPathName,LPCWSTR lpPrefixString,UINT uUnique,LPWSTR lpTempFileName);
  2079.   WINBASEAPI UINT WINAPI GetWindowsDirectoryA(LPSTR lpBuffer,UINT uSize);
  2080.   WINBASEAPI UINT WINAPI GetWindowsDirectoryW(LPWSTR lpBuffer,UINT uSize);
  2081.   WINBASEAPI UINT WINAPI GetSystemWindowsDirectoryA(LPSTR lpBuffer,UINT uSize);
  2082.   WINBASEAPI UINT WINAPI GetSystemWindowsDirectoryW(LPWSTR lpBuffer,UINT uSize);
  2083.  
  2084. #ifndef RC_INVOKED
  2085. #ifdef UNICODE
  2086. #define GetSystemWow64Directory GetSystemWow64DirectoryW
  2087. #else
  2088. #define GetSystemWow64Directory GetSystemWow64DirectoryA
  2089. #endif
  2090.  
  2091.   WINBASEAPI UINT WINAPI GetSystemWow64DirectoryA(LPSTR lpBuffer,UINT uSize);
  2092.   WINBASEAPI UINT WINAPI GetSystemWow64DirectoryW(LPWSTR lpBuffer,UINT uSize);
  2093.   WINBASEAPI BOOLEAN WINAPI Wow64EnableWow64FsRedirection(BOOLEAN Wow64FsEnableRedirection);
  2094.   WINBASEAPI WINBOOL WINAPI Wow64DisableWow64FsRedirection(PVOID *OldValue);
  2095.   WINBASEAPI WINBOOL WINAPI Wow64RevertWow64FsRedirection(PVOID OlValue);
  2096.  
  2097.   typedef UINT (WINAPI *PGET_SYSTEM_WOW64_DIRECTORY_A)(LPSTR lpBuffer,UINT uSize);
  2098.   typedef UINT (WINAPI *PGET_SYSTEM_WOW64_DIRECTORY_W)(LPWSTR lpBuffer,UINT uSize);
  2099.  
  2100. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A "GetSystemWow64DirectoryA"
  2101. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W L"GetSystemWow64DirectoryA"
  2102. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T TEXT("GetSystemWow64DirectoryA")
  2103. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A "GetSystemWow64DirectoryW"
  2104. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W L"GetSystemWow64DirectoryW"
  2105. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T TEXT("GetSystemWow64DirectoryW")
  2106.  
  2107. #ifdef UNICODE
  2108. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A GET_SYSTEM_WOW64_DIRECTORY_NAME_W_A
  2109. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W GET_SYSTEM_WOW64_DIRECTORY_NAME_W_W
  2110. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T GET_SYSTEM_WOW64_DIRECTORY_NAME_W_T
  2111. #else
  2112. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_A GET_SYSTEM_WOW64_DIRECTORY_NAME_A_A
  2113. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_W GET_SYSTEM_WOW64_DIRECTORY_NAME_A_W
  2114. #define GET_SYSTEM_WOW64_DIRECTORY_NAME_T_T GET_SYSTEM_WOW64_DIRECTORY_NAME_A_T
  2115. #endif
  2116. #endif
  2117.  
  2118. #ifdef UNICODE
  2119. #define SetCurrentDirectory SetCurrentDirectoryW
  2120. #define GetCurrentDirectory GetCurrentDirectoryW
  2121. #define SetDllDirectory SetDllDirectoryW
  2122. #define GetDllDirectory GetDllDirectoryW
  2123. #define GetDiskFreeSpace GetDiskFreeSpaceW
  2124. #define GetDiskFreeSpaceEx GetDiskFreeSpaceExW
  2125. #define CreateDirectory CreateDirectoryW
  2126. #define CreateDirectoryEx CreateDirectoryExW
  2127. #define RemoveDirectory RemoveDirectoryW
  2128. #define GetFullPathName GetFullPathNameW
  2129. #define DefineDosDevice DefineDosDeviceW
  2130. #define QueryDosDevice QueryDosDeviceW
  2131. #define CreateFile CreateFileW
  2132. #define SetFileAttributes SetFileAttributesW
  2133. #define GetFileAttributes GetFileAttributesW
  2134. #else
  2135. #define SetCurrentDirectory SetCurrentDirectoryA
  2136. #define GetCurrentDirectory GetCurrentDirectoryA
  2137. #define SetDllDirectory SetDllDirectoryA
  2138. #define GetDllDirectory GetDllDirectoryA
  2139. #define GetDiskFreeSpace GetDiskFreeSpaceA
  2140. #define GetDiskFreeSpaceEx GetDiskFreeSpaceExA
  2141. #define CreateDirectory CreateDirectoryA
  2142. #define CreateDirectoryEx CreateDirectoryExA
  2143. #define RemoveDirectory RemoveDirectoryA
  2144. #define GetFullPathName GetFullPathNameA
  2145. #define DefineDosDevice DefineDosDeviceA
  2146. #define QueryDosDevice QueryDosDeviceA
  2147. #define CreateFile CreateFileA
  2148. #define SetFileAttributes SetFileAttributesA
  2149. #define GetFileAttributes GetFileAttributesA
  2150. #endif
  2151.  
  2152.   WINBASEAPI WINBOOL WINAPI SetCurrentDirectoryA(LPCSTR lpPathName);
  2153.   WINBASEAPI WINBOOL WINAPI SetCurrentDirectoryW(LPCWSTR lpPathName);
  2154.   WINBASEAPI DWORD WINAPI GetCurrentDirectoryA(DWORD nBufferLength,LPSTR lpBuffer);
  2155.   WINBASEAPI DWORD WINAPI GetCurrentDirectoryW(DWORD nBufferLength,LPWSTR lpBuffer);
  2156.   WINBASEAPI WINBOOL WINAPI SetDllDirectoryA(LPCSTR lpPathName);
  2157.   WINBASEAPI WINBOOL WINAPI SetDllDirectoryW(LPCWSTR lpPathName);
  2158.   WINBASEAPI DWORD WINAPI GetDllDirectoryA(DWORD nBufferLength,LPSTR lpBuffer);
  2159.   WINBASEAPI DWORD WINAPI GetDllDirectoryW(DWORD nBufferLength,LPWSTR lpBuffer);
  2160.   WINBASEAPI WINBOOL WINAPI GetDiskFreeSpaceA(LPCSTR lpRootPathName,LPDWORD lpSectorsPerCluster,LPDWORD lpBytesPerSector,LPDWORD lpNumberOfFreeClusters,LPDWORD lpTotalNumberOfClusters);
  2161.   WINBASEAPI WINBOOL WINAPI GetDiskFreeSpaceW(LPCWSTR lpRootPathName,LPDWORD lpSectorsPerCluster,LPDWORD lpBytesPerSector,LPDWORD lpNumberOfFreeClusters,LPDWORD lpTotalNumberOfClusters);
  2162.   WINBASEAPI WINBOOL WINAPI GetDiskFreeSpaceExA(LPCSTR lpDirectoryName,PULARGE_INTEGER lpFreeBytesAvailableToCaller,PULARGE_INTEGER lpTotalNumberOfBytes,PULARGE_INTEGER lpTotalNumberOfFreeBytes);
  2163.   WINBASEAPI WINBOOL WINAPI GetDiskFreeSpaceExW(LPCWSTR lpDirectoryName,PULARGE_INTEGER lpFreeBytesAvailableToCaller,PULARGE_INTEGER lpTotalNumberOfBytes,PULARGE_INTEGER lpTotalNumberOfFreeBytes);
  2164.   WINBASEAPI WINBOOL WINAPI CreateDirectoryA(LPCSTR lpPathName,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  2165.   WINBASEAPI WINBOOL WINAPI CreateDirectoryW(LPCWSTR lpPathName,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  2166.   WINBASEAPI WINBOOL WINAPI CreateDirectoryExA(LPCSTR lpTemplateDirectory,LPCSTR lpNewDirectory,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  2167.   WINBASEAPI WINBOOL WINAPI CreateDirectoryExW(LPCWSTR lpTemplateDirectory,LPCWSTR lpNewDirectory,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  2168.   WINBASEAPI WINBOOL WINAPI RemoveDirectoryA(LPCSTR lpPathName);
  2169.   WINBASEAPI WINBOOL WINAPI RemoveDirectoryW(LPCWSTR lpPathName);
  2170.   WINBASEAPI DWORD WINAPI GetFullPathNameA(LPCSTR lpFileName,DWORD nBufferLength,LPSTR lpBuffer,LPSTR *lpFilePart);
  2171.   WINBASEAPI DWORD WINAPI GetFullPathNameW(LPCWSTR lpFileName,DWORD nBufferLength,LPWSTR lpBuffer,LPWSTR *lpFilePart);
  2172.  
  2173. #define DDD_RAW_TARGET_PATH 0x1
  2174. #define DDD_REMOVE_DEFINITION 0x2
  2175. #define DDD_EXACT_MATCH_ON_REMOVE 0x4
  2176. #define DDD_NO_BROADCAST_SYSTEM 0x8
  2177. #define DDD_LUID_BROADCAST_DRIVE 0x10
  2178.  
  2179.   WINBASEAPI WINBOOL WINAPI DefineDosDeviceA(DWORD dwFlags,LPCSTR lpDeviceName,LPCSTR lpTargetPath);
  2180.   WINBASEAPI WINBOOL WINAPI DefineDosDeviceW(DWORD dwFlags,LPCWSTR lpDeviceName,LPCWSTR lpTargetPath);
  2181.   WINBASEAPI DWORD WINAPI QueryDosDeviceA(LPCSTR lpDeviceName,LPSTR lpTargetPath,DWORD ucchMax);
  2182.   WINBASEAPI DWORD WINAPI QueryDosDeviceW(LPCWSTR lpDeviceName,LPWSTR lpTargetPath,DWORD ucchMax);
  2183.  
  2184. #define EXPAND_LOCAL_DRIVES
  2185.  
  2186.   WINBASEAPI HANDLE WINAPI CreateFileA(LPCSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition,DWORD dwFlagsAndAttributes,HANDLE hTemplateFile);
  2187.   WINBASEAPI HANDLE WINAPI CreateFileW(LPCWSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition,DWORD dwFlagsAndAttributes,HANDLE hTemplateFile);
  2188.   WINBASEAPI HANDLE WINAPI ReOpenFile(HANDLE hOriginalFile,DWORD dwDesiredAccess,DWORD dwShareMode,DWORD dwFlagsAndAttributes);
  2189.   WINBASEAPI WINBOOL WINAPI SetFileAttributesA(LPCSTR lpFileName,DWORD dwFileAttributes);
  2190.   WINBASEAPI WINBOOL WINAPI SetFileAttributesW(LPCWSTR lpFileName,DWORD dwFileAttributes);
  2191.   WINBASEAPI DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName);
  2192.   WINBASEAPI DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName);
  2193.  
  2194.   typedef enum _GET_FILEEX_INFO_LEVELS {
  2195.     GetFileExInfoStandard,GetFileExMaxInfoLevel
  2196.   } GET_FILEEX_INFO_LEVELS;
  2197.  
  2198. #ifdef UNICODE
  2199. #define GetFileAttributesEx GetFileAttributesExW
  2200. #define GetCompressedFileSize GetCompressedFileSizeW
  2201. #define DeleteFile DeleteFileW
  2202. #define CheckNameLegalDOS8Dot3 CheckNameLegalDOS8Dot3W
  2203. #else
  2204. #define GetFileAttributesEx GetFileAttributesExA
  2205. #define GetCompressedFileSize GetCompressedFileSizeA
  2206. #define DeleteFile DeleteFileA
  2207. #define CheckNameLegalDOS8Dot3 CheckNameLegalDOS8Dot3A
  2208. #endif
  2209.  
  2210.   WINBASEAPI WINBOOL WINAPI GetFileAttributesExA(LPCSTR lpFileName,GET_FILEEX_INFO_LEVELS fInfoLevelId,LPVOID lpFileInformation);
  2211.   WINBASEAPI WINBOOL WINAPI GetFileAttributesExW(LPCWSTR lpFileName,GET_FILEEX_INFO_LEVELS fInfoLevelId,LPVOID lpFileInformation);
  2212.   WINBASEAPI DWORD WINAPI GetCompressedFileSizeA(LPCSTR lpFileName,LPDWORD lpFileSizeHigh);
  2213.   WINBASEAPI DWORD WINAPI GetCompressedFileSizeW(LPCWSTR lpFileName,LPDWORD lpFileSizeHigh);
  2214.   WINBASEAPI WINBOOL WINAPI DeleteFileA(LPCSTR lpFileName);
  2215.   WINBASEAPI WINBOOL WINAPI DeleteFileW(LPCWSTR lpFileName);
  2216.   WINBASEAPI WINBOOL WINAPI CheckNameLegalDOS8Dot3A(LPCSTR lpName,LPSTR lpOemName,DWORD OemNameSize,PBOOL pbNameContainsSpaces,PBOOL pbNameLegal);
  2217.   WINBASEAPI WINBOOL WINAPI CheckNameLegalDOS8Dot3W(LPCWSTR lpName,LPSTR lpOemName,DWORD OemNameSize,PBOOL pbNameContainsSpaces,PBOOL pbNameLegal);
  2218.  
  2219.   typedef enum _FINDEX_INFO_LEVELS {
  2220.     FindExInfoStandard,FindExInfoMaxInfoLevel
  2221.   } FINDEX_INFO_LEVELS;
  2222.  
  2223.   typedef enum _FINDEX_SEARCH_OPS {
  2224.     FindExSearchNameMatch,FindExSearchLimitToDirectories,FindExSearchLimitToDevices,FindExSearchMaxSearchOp
  2225.   } FINDEX_SEARCH_OPS;
  2226.  
  2227. #define FIND_FIRST_EX_CASE_SENSITIVE 0x1
  2228.  
  2229. #ifdef UNICODE
  2230. #define FindFirstFileEx FindFirstFileExW
  2231. #define FindFirstFile FindFirstFileW
  2232. #define FindNextFile FindNextFileW
  2233. #define SearchPath SearchPathW
  2234. #define CopyFile CopyFileW
  2235. #define CopyFileEx CopyFileExW
  2236. #define MoveFile MoveFileW
  2237. #define MoveFileEx MoveFileExW
  2238. #define MoveFileWithProgress MoveFileWithProgressW
  2239. #define ReplaceFile ReplaceFileW
  2240. #define CreateHardLink CreateHardLinkW
  2241. #define CreateNamedPipe CreateNamedPipeW
  2242. #define GetNamedPipeHandleState GetNamedPipeHandleStateW
  2243. #define CallNamedPipe CallNamedPipeW
  2244. #define WaitNamedPipe WaitNamedPipeW
  2245. #define SetVolumeLabel SetVolumeLabelW
  2246. #define GetVolumeInformation GetVolumeInformationW
  2247. #define ClearEventLog ClearEventLogW
  2248. #define BackupEventLog BackupEventLogW
  2249. #define OpenEventLog OpenEventLogW
  2250. #define RegisterEventSource RegisterEventSourceW
  2251. #define OpenBackupEventLog OpenBackupEventLogW
  2252. #define ReadEventLog ReadEventLogW
  2253. #define ReportEvent ReportEventW
  2254. #define AccessCheckAndAuditAlarm AccessCheckAndAuditAlarmW
  2255. #define AccessCheckByTypeAndAuditAlarm AccessCheckByTypeAndAuditAlarmW
  2256. #define AccessCheckByTypeResultListAndAuditAlarm AccessCheckByTypeResultListAndAuditAlarmW
  2257. #define AccessCheckByTypeResultListAndAuditAlarmByHandle AccessCheckByTypeResultListAndAuditAlarmByHandleW
  2258. #define ObjectOpenAuditAlarm ObjectOpenAuditAlarmW
  2259. #define ObjectPrivilegeAuditAlarm ObjectPrivilegeAuditAlarmW
  2260. #define ObjectCloseAuditAlarm ObjectCloseAuditAlarmW
  2261. #define ObjectDeleteAuditAlarm ObjectDeleteAuditAlarmW
  2262. #define PrivilegedServiceAuditAlarm PrivilegedServiceAuditAlarmW
  2263. #define SetFileSecurity SetFileSecurityW
  2264. #define GetFileSecurity GetFileSecurityW
  2265. #define FindFirstChangeNotification FindFirstChangeNotificationW
  2266. #define IsBadStringPtr IsBadStringPtrW
  2267. #define LookupAccountSid LookupAccountSidW
  2268. #define LookupAccountName LookupAccountNameW
  2269. #define LookupPrivilegeValue LookupPrivilegeValueW
  2270. #define LookupPrivilegeName LookupPrivilegeNameW
  2271. #define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameW
  2272. #define BuildCommDCB BuildCommDCBW
  2273. #define BuildCommDCBAndTimeouts BuildCommDCBAndTimeoutsW
  2274. #define CommConfigDialog CommConfigDialogW
  2275. #define GetDefaultCommConfig GetDefaultCommConfigW
  2276. #define SetDefaultCommConfig SetDefaultCommConfigW
  2277. #define GetComputerName GetComputerNameW
  2278. #define SetComputerName SetComputerNameW
  2279. #define GetComputerNameEx GetComputerNameExW
  2280. #define SetComputerNameEx SetComputerNameExW
  2281. #define DnsHostnameToComputerName DnsHostnameToComputerNameW
  2282. #define GetUserName GetUserNameW
  2283. #else
  2284. #define FindFirstFileEx FindFirstFileExA
  2285. #define FindFirstFile FindFirstFileA
  2286. #define FindNextFile FindNextFileA
  2287. #define SearchPath SearchPathA
  2288. #define CopyFile CopyFileA
  2289. #define CopyFileEx CopyFileExA
  2290. #define MoveFile MoveFileA
  2291. #define MoveFileEx MoveFileExA
  2292. #define MoveFileWithProgress MoveFileWithProgressA
  2293. #define ReplaceFile ReplaceFileA
  2294. #define CreateHardLink CreateHardLinkA
  2295. #define CreateNamedPipe CreateNamedPipeA
  2296. #define GetNamedPipeHandleState GetNamedPipeHandleStateA
  2297. #define CallNamedPipe CallNamedPipeA
  2298. #define WaitNamedPipe WaitNamedPipeA
  2299. #define SetVolumeLabel SetVolumeLabelA
  2300. #define GetVolumeInformation GetVolumeInformationA
  2301. #define ClearEventLog ClearEventLogA
  2302. #define BackupEventLog BackupEventLogA
  2303. #define OpenEventLog OpenEventLogA
  2304. #define RegisterEventSource RegisterEventSourceA
  2305. #define OpenBackupEventLog OpenBackupEventLogA
  2306. #define ReadEventLog ReadEventLogA
  2307. #define ReportEvent ReportEventA
  2308. #define AccessCheckAndAuditAlarm AccessCheckAndAuditAlarmA
  2309. #define AccessCheckByTypeAndAuditAlarm AccessCheckByTypeAndAuditAlarmA
  2310. #define AccessCheckByTypeResultListAndAuditAlarm AccessCheckByTypeResultListAndAuditAlarmA
  2311. #define AccessCheckByTypeResultListAndAuditAlarmByHandle AccessCheckByTypeResultListAndAuditAlarmByHandleA
  2312. #define ObjectOpenAuditAlarm ObjectOpenAuditAlarmA
  2313. #define ObjectPrivilegeAuditAlarm ObjectPrivilegeAuditAlarmA
  2314. #define ObjectCloseAuditAlarm ObjectCloseAuditAlarmA
  2315. #define ObjectDeleteAuditAlarm ObjectDeleteAuditAlarmA
  2316. #define PrivilegedServiceAuditAlarm PrivilegedServiceAuditAlarmA
  2317. #define SetFileSecurity SetFileSecurityA
  2318. #define GetFileSecurity GetFileSecurityA
  2319. #define FindFirstChangeNotification FindFirstChangeNotificationA
  2320. #define IsBadStringPtr IsBadStringPtrA
  2321. #define LookupAccountSid LookupAccountSidA
  2322. #define LookupAccountName LookupAccountNameA
  2323. #define LookupPrivilegeValue LookupPrivilegeValueA
  2324. #define LookupPrivilegeName LookupPrivilegeNameA
  2325. #define LookupPrivilegeDisplayName LookupPrivilegeDisplayNameA
  2326. #define BuildCommDCB BuildCommDCBA
  2327. #define BuildCommDCBAndTimeouts BuildCommDCBAndTimeoutsA
  2328. #define CommConfigDialog CommConfigDialogA
  2329. #define GetDefaultCommConfig GetDefaultCommConfigA
  2330. #define SetDefaultCommConfig SetDefaultCommConfigA
  2331. #define GetComputerName GetComputerNameA
  2332. #define SetComputerName SetComputerNameA
  2333. #define GetComputerNameEx GetComputerNameExA
  2334. #define SetComputerNameEx SetComputerNameExA
  2335. #define DnsHostnameToComputerName DnsHostnameToComputerNameA
  2336. #define GetUserName GetUserNameA
  2337. #endif
  2338.  
  2339.   WINBASEAPI HANDLE WINAPI FindFirstFileExA(LPCSTR lpFileName,FINDEX_INFO_LEVELS fInfoLevelId,LPVOID lpFindFileData,FINDEX_SEARCH_OPS fSearchOp,LPVOID lpSearchFilter,DWORD dwAdditionalFlags);
  2340.   WINBASEAPI HANDLE WINAPI FindFirstFileExW(LPCWSTR lpFileName,FINDEX_INFO_LEVELS fInfoLevelId,LPVOID lpFindFileData,FINDEX_SEARCH_OPS fSearchOp,LPVOID lpSearchFilter,DWORD dwAdditionalFlags);
  2341.   WINBASEAPI HANDLE WINAPI FindFirstFileA(LPCSTR lpFileName,LPWIN32_FIND_DATAA lpFindFileData);
  2342.   WINBASEAPI HANDLE WINAPI FindFirstFileW(LPCWSTR lpFileName,LPWIN32_FIND_DATAW lpFindFileData);
  2343.   WINBASEAPI WINBOOL WINAPI FindNextFileA(HANDLE hFindFile,LPWIN32_FIND_DATAA lpFindFileData);
  2344.   WINBASEAPI WINBOOL WINAPI FindNextFileW(HANDLE hFindFile,LPWIN32_FIND_DATAW lpFindFileData);
  2345.   WINBASEAPI DWORD WINAPI SearchPathA(LPCSTR lpPath,LPCSTR lpFileName,LPCSTR lpExtension,DWORD nBufferLength,LPSTR lpBuffer,LPSTR *lpFilePart);
  2346.   WINBASEAPI DWORD WINAPI SearchPathW(LPCWSTR lpPath,LPCWSTR lpFileName,LPCWSTR lpExtension,DWORD nBufferLength,LPWSTR lpBuffer,LPWSTR *lpFilePart);
  2347.   WINBASEAPI WINBOOL WINAPI CopyFileA(LPCSTR lpExistingFileName,LPCSTR lpNewFileName,WINBOOL bFailIfExists);
  2348.   WINBASEAPI WINBOOL WINAPI CopyFileW(LPCWSTR lpExistingFileName,LPCWSTR lpNewFileName,WINBOOL bFailIfExists);
  2349.  
  2350.   typedef DWORD (WINAPI *LPPROGRESS_ROUTINE)(LARGE_INTEGER TotalFileSize,LARGE_INTEGER TotalBytesTransferred,LARGE_INTEGER StreamSize,LARGE_INTEGER StreamBytesTransferred,DWORD dwStreamNumber,DWORD dwCallbackReason,HANDLE hSourceFile,HANDLE hDestinationFile,LPVOID lpData);
  2351.  
  2352.   WINBASEAPI WINBOOL WINAPI CopyFileExA(LPCSTR lpExistingFileName,LPCSTR lpNewFileName,LPPROGRESS_ROUTINE lpProgressRoutine,LPVOID lpData,LPBOOL pbCancel,DWORD dwCopyFlags);
  2353.   WINBASEAPI WINBOOL WINAPI CopyFileExW(LPCWSTR lpExistingFileName,LPCWSTR lpNewFileName,LPPROGRESS_ROUTINE lpProgressRoutine,LPVOID lpData,LPBOOL pbCancel,DWORD dwCopyFlags);
  2354.   WINBASEAPI WINBOOL WINAPI MoveFileA(LPCSTR lpExistingFileName,LPCSTR lpNewFileName);
  2355.   WINBASEAPI WINBOOL WINAPI MoveFileW(LPCWSTR lpExistingFileName,LPCWSTR lpNewFileName);
  2356.   WINBASEAPI WINBOOL WINAPI MoveFileExA(LPCSTR lpExistingFileName,LPCSTR lpNewFileName,DWORD dwFlags);
  2357.   WINBASEAPI WINBOOL WINAPI MoveFileExW(LPCWSTR lpExistingFileName,LPCWSTR lpNewFileName,DWORD dwFlags);
  2358.   WINBASEAPI WINBOOL WINAPI MoveFileWithProgressA(LPCSTR lpExistingFileName,LPCSTR lpNewFileName,LPPROGRESS_ROUTINE lpProgressRoutine,LPVOID lpData,DWORD dwFlags);
  2359.   WINBASEAPI WINBOOL WINAPI MoveFileWithProgressW(LPCWSTR lpExistingFileName,LPCWSTR lpNewFileName,LPPROGRESS_ROUTINE lpProgressRoutine,LPVOID lpData,DWORD dwFlags);
  2360.  
  2361. #define MOVEFILE_REPLACE_EXISTING 0x1
  2362. #define MOVEFILE_COPY_ALLOWED 0x2
  2363. #define MOVEFILE_DELAY_UNTIL_REBOOT 0x4
  2364. #define MOVEFILE_WRITE_THROUGH 0x8
  2365. #define MOVEFILE_CREATE_HARDLINK 0x10
  2366. #define MOVEFILE_FAIL_IF_NOT_TRACKABLE 0x20
  2367.  
  2368.   WINBASEAPI WINBOOL WINAPI ReplaceFileA(LPCSTR lpReplacedFileName,LPCSTR lpReplacementFileName,LPCSTR lpBackupFileName,DWORD dwReplaceFlags,LPVOID lpExclude,LPVOID lpReserved);
  2369.   WINBASEAPI WINBOOL WINAPI ReplaceFileW(LPCWSTR lpReplacedFileName,LPCWSTR lpReplacementFileName,LPCWSTR lpBackupFileName,DWORD dwReplaceFlags,LPVOID lpExclude,LPVOID lpReserved);
  2370.   WINBASEAPI WINBOOL WINAPI CreateHardLinkA(LPCSTR lpFileName,LPCSTR lpExistingFileName,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  2371.   WINBASEAPI WINBOOL WINAPI CreateHardLinkW(LPCWSTR lpFileName,LPCWSTR lpExistingFileName,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  2372.  
  2373.   typedef enum _STREAM_INFO_LEVELS {
  2374.     FindStreamInfoStandard,FindStreamInfoMaxInfoLevel
  2375.   } STREAM_INFO_LEVELS;
  2376.  
  2377.   typedef struct _WIN32_FIND_STREAM_DATA {
  2378.     LARGE_INTEGER StreamSize;
  2379.     WCHAR cStreamName[MAX_PATH + 36];
  2380.   } WIN32_FIND_STREAM_DATA,*PWIN32_FIND_STREAM_DATA;
  2381.  
  2382.   HANDLE WINAPI FindFirstStreamW(LPCWSTR lpFileName,STREAM_INFO_LEVELS InfoLevel,LPVOID lpFindStreamData,DWORD dwFlags);
  2383.   WINBOOL WINAPI FindNextStreamW(HANDLE hFindStream,LPVOID lpFindStreamData);
  2384.   WINBASEAPI HANDLE WINAPI CreateNamedPipeA(LPCSTR lpName,DWORD dwOpenMode,DWORD dwPipeMode,DWORD nMaxInstances,DWORD nOutBufferSize,DWORD nInBufferSize,DWORD nDefaultTimeOut,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  2385.   WINBASEAPI HANDLE WINAPI CreateNamedPipeW(LPCWSTR lpName,DWORD dwOpenMode,DWORD dwPipeMode,DWORD nMaxInstances,DWORD nOutBufferSize,DWORD nInBufferSize,DWORD nDefaultTimeOut,LPSECURITY_ATTRIBUTES lpSecurityAttributes);
  2386.   WINBASEAPI WINBOOL WINAPI GetNamedPipeHandleStateA(HANDLE hNamedPipe,LPDWORD lpState,LPDWORD lpCurInstances,LPDWORD lpMaxCollectionCount,LPDWORD lpCollectDataTimeout,LPSTR lpUserName,DWORD nMaxUserNameSize);
  2387.   WINBASEAPI WINBOOL WINAPI GetNamedPipeHandleStateW(HANDLE hNamedPipe,LPDWORD lpState,LPDWORD lpCurInstances,LPDWORD lpMaxCollectionCount,LPDWORD lpCollectDataTimeout,LPWSTR lpUserName,DWORD nMaxUserNameSize);
  2388.   WINBASEAPI WINBOOL WINAPI CallNamedPipeA(LPCSTR lpNamedPipeName,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesRead,DWORD nTimeOut);
  2389.   WINBASEAPI WINBOOL WINAPI CallNamedPipeW(LPCWSTR lpNamedPipeName,LPVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesRead,DWORD nTimeOut);
  2390.   WINBASEAPI WINBOOL WINAPI WaitNamedPipeA(LPCSTR lpNamedPipeName,DWORD nTimeOut);
  2391.   WINBASEAPI WINBOOL WINAPI WaitNamedPipeW(LPCWSTR lpNamedPipeName,DWORD nTimeOut);
  2392.   WINBASEAPI WINBOOL WINAPI SetVolumeLabelA(LPCSTR lpRootPathName,LPCSTR lpVolumeName);
  2393.   WINBASEAPI WINBOOL WINAPI SetVolumeLabelW(LPCWSTR lpRootPathName,LPCWSTR lpVolumeName);
  2394.   WINBASEAPI VOID WINAPI SetFileApisToOEM(VOID);
  2395.   WINBASEAPI VOID WINAPI SetFileApisToANSI(VOID);
  2396.   WINBASEAPI WINBOOL WINAPI AreFileApisANSI(VOID);
  2397.   WINBASEAPI WINBOOL WINAPI GetVolumeInformationA(LPCSTR lpRootPathName,LPSTR lpVolumeNameBuffer,DWORD nVolumeNameSize,LPDWORD lpVolumeSerialNumber,LPDWORD lpMaximumComponentLength,LPDWORD lpFileSystemFlags,LPSTR lpFileSystemNameBuffer,DWORD nFileSystemNameSize);
  2398.   WINBASEAPI WINBOOL WINAPI GetVolumeInformationW(LPCWSTR lpRootPathName,LPWSTR lpVolumeNameBuffer,DWORD nVolumeNameSize,LPDWORD lpVolumeSerialNumber,LPDWORD lpMaximumComponentLength,LPDWORD lpFileSystemFlags,LPWSTR lpFileSystemNameBuffer,DWORD nFileSystemNameSize);
  2399.   WINBASEAPI WINBOOL WINAPI CancelIo(HANDLE hFile);
  2400.   WINADVAPI WINBOOL WINAPI ClearEventLogA(HANDLE hEventLog,LPCSTR lpBackupFileName);
  2401.   WINADVAPI WINBOOL WINAPI ClearEventLogW(HANDLE hEventLog,LPCWSTR lpBackupFileName);
  2402.   WINADVAPI WINBOOL WINAPI BackupEventLogA(HANDLE hEventLog,LPCSTR lpBackupFileName);
  2403.   WINADVAPI WINBOOL WINAPI BackupEventLogW(HANDLE hEventLog,LPCWSTR lpBackupFileName);
  2404.   WINADVAPI WINBOOL WINAPI CloseEventLog(HANDLE hEventLog);
  2405.   WINADVAPI WINBOOL WINAPI DeregisterEventSource(HANDLE hEventLog);
  2406.   WINADVAPI WINBOOL WINAPI NotifyChangeEventLog(HANDLE hEventLog,HANDLE hEvent);
  2407.   WINADVAPI WINBOOL WINAPI GetNumberOfEventLogRecords(HANDLE hEventLog,PDWORD NumberOfRecords);
  2408.   WINADVAPI WINBOOL WINAPI GetOldestEventLogRecord(HANDLE hEventLog,PDWORD OldestRecord);
  2409.   WINADVAPI HANDLE WINAPI OpenEventLogA(LPCSTR lpUNCServerName,LPCSTR lpSourceName);
  2410.   WINADVAPI HANDLE WINAPI OpenEventLogW(LPCWSTR lpUNCServerName,LPCWSTR lpSourceName);
  2411.   WINADVAPI HANDLE WINAPI RegisterEventSourceA(LPCSTR lpUNCServerName,LPCSTR lpSourceName);
  2412.   WINADVAPI HANDLE WINAPI RegisterEventSourceW(LPCWSTR lpUNCServerName,LPCWSTR lpSourceName);
  2413.   WINADVAPI HANDLE WINAPI OpenBackupEventLogA(LPCSTR lpUNCServerName,LPCSTR lpFileName);
  2414.   WINADVAPI HANDLE WINAPI OpenBackupEventLogW(LPCWSTR lpUNCServerName,LPCWSTR lpFileName);
  2415.   WINADVAPI WINBOOL WINAPI ReadEventLogA(HANDLE hEventLog,DWORD dwReadFlags,DWORD dwRecordOffset,LPVOID lpBuffer,DWORD nNumberOfBytesToRead,DWORD *pnBytesRead,DWORD *pnMinNumberOfBytesNeeded);
  2416.   WINADVAPI WINBOOL WINAPI ReadEventLogW(HANDLE hEventLog,DWORD dwReadFlags,DWORD dwRecordOffset,LPVOID lpBuffer,DWORD nNumberOfBytesToRead,DWORD *pnBytesRead,DWORD *pnMinNumberOfBytesNeeded);
  2417.   WINADVAPI WINBOOL WINAPI ReportEventA(HANDLE hEventLog,WORD wType,WORD wCategory,DWORD dwEventID,PSID lpUserSid,WORD wNumStrings,DWORD dwDataSize,LPCSTR *lpStrings,LPVOID lpRawData);
  2418.   WINADVAPI WINBOOL WINAPI ReportEventW(HANDLE hEventLog,WORD wType,WORD wCategory,DWORD dwEventID,PSID lpUserSid,WORD wNumStrings,DWORD dwDataSize,LPCWSTR *lpStrings,LPVOID lpRawData);
  2419.  
  2420. #define EVENTLOG_FULL_INFO 0
  2421.  
  2422.   typedef struct _EVENTLOG_FULL_INFORMATION {
  2423.     DWORD dwFull;
  2424.   } EVENTLOG_FULL_INFORMATION,*LPEVENTLOG_FULL_INFORMATION;
  2425.  
  2426.   WINADVAPI WINBOOL WINAPI GetEventLogInformation(HANDLE hEventLog,DWORD dwInfoLevel,LPVOID lpBuffer,DWORD cbBufSize,LPDWORD pcbBytesNeeded);
  2427.   WINADVAPI WINBOOL WINAPI DuplicateToken(HANDLE ExistingTokenHandle,SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,PHANDLE DuplicateTokenHandle);
  2428.   WINADVAPI WINBOOL WINAPI GetKernelObjectSecurity(HANDLE Handle,SECURITY_INFORMATION RequestedInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor,DWORD nLength,LPDWORD lpnLengthNeeded);
  2429.   WINADVAPI WINBOOL WINAPI ImpersonateNamedPipeClient(HANDLE hNamedPipe);
  2430.   WINADVAPI WINBOOL WINAPI ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL ImpersonationLevel);
  2431.   WINADVAPI WINBOOL WINAPI RevertToSelf(VOID);
  2432.   WINADVAPI WINBOOL WINAPI SetThreadToken (PHANDLE Thread,HANDLE Token);
  2433.   WINADVAPI WINBOOL WINAPI AccessCheck(PSECURITY_DESCRIPTOR pSecurityDescriptor,HANDLE ClientToken,DWORD DesiredAccess,PGENERIC_MAPPING GenericMapping,PPRIVILEGE_SET PrivilegeSet,LPDWORD PrivilegeSetLength,LPDWORD GrantedAccess,LPBOOL AccessStatus);
  2434.   WINADVAPI WINBOOL WINAPI AccessCheckByType(PSECURITY_DESCRIPTOR pSecurityDescriptor,PSID PrincipalSelfSid,HANDLE ClientToken,DWORD DesiredAccess,POBJECT_TYPE_LIST ObjectTypeList,DWORD ObjectTypeListLength,PGENERIC_MAPPING GenericMapping,PPRIVILEGE_SET PrivilegeSet,LPDWORD PrivilegeSetLength,LPDWORD GrantedAccess,LPBOOL AccessStatus);
  2435.   WINADVAPI WINBOOL WINAPI AccessCheckByTypeResultList(PSECURITY_DESCRIPTOR pSecurityDescriptor,PSID PrincipalSelfSid,HANDLE ClientToken,DWORD DesiredAccess,POBJECT_TYPE_LIST ObjectTypeList,DWORD ObjectTypeListLength,PGENERIC_MAPPING GenericMapping,PPRIVILEGE_SET PrivilegeSet,LPDWORD PrivilegeSetLength,LPDWORD GrantedAccessList,LPDWORD AccessStatusList);
  2436.   WINADVAPI WINBOOL WINAPI OpenProcessToken(HANDLE ProcessHandle,DWORD DesiredAccess,PHANDLE TokenHandle);
  2437.   WINADVAPI WINBOOL WINAPI OpenThreadToken(HANDLE ThreadHandle,DWORD DesiredAccess,WINBOOL OpenAsSelf,PHANDLE TokenHandle);
  2438.   WINADVAPI WINBOOL WINAPI GetTokenInformation(HANDLE TokenHandle,TOKEN_INFORMATION_CLASS TokenInformationClass,LPVOID TokenInformation,DWORD TokenInformationLength,PDWORD ReturnLength);
  2439.   WINADVAPI WINBOOL WINAPI SetTokenInformation(HANDLE TokenHandle,TOKEN_INFORMATION_CLASS TokenInformationClass,LPVOID TokenInformation,DWORD TokenInformationLength);
  2440.   WINADVAPI WINBOOL WINAPI AdjustTokenPrivileges(HANDLE TokenHandle,WINBOOL DisableAllPrivileges,PTOKEN_PRIVILEGES NewState,DWORD BufferLength,PTOKEN_PRIVILEGES PreviousState,PDWORD ReturnLength);
  2441.   WINADVAPI WINBOOL WINAPI AdjustTokenGroups(HANDLE TokenHandle,WINBOOL ResetToDefault,PTOKEN_GROUPS NewState,DWORD BufferLength,PTOKEN_GROUPS PreviousState,PDWORD ReturnLength);
  2442.   WINADVAPI WINBOOL WINAPI PrivilegeCheck(HANDLE ClientToken,PPRIVILEGE_SET RequiredPrivileges,LPBOOL pfResult);
  2443.   WINADVAPI WINBOOL WINAPI AccessCheckAndAuditAlarmA(LPCSTR SubsystemName,LPVOID HandleId,LPSTR ObjectTypeName,LPSTR ObjectName,PSECURITY_DESCRIPTOR SecurityDescriptor,DWORD DesiredAccess,PGENERIC_MAPPING GenericMapping,WINBOOL ObjectCreation,LPDWORD GrantedAccess,LPBOOL AccessStatus,LPBOOL pfGenerateOnClose);
  2444.   WINADVAPI WINBOOL WINAPI AccessCheckAndAuditAlarmW(LPCWSTR SubsystemName,LPVOID HandleId,LPWSTR ObjectTypeName,LPWSTR ObjectName,PSECURITY_DESCRIPTOR SecurityDescriptor,DWORD DesiredAccess,PGENERIC_MAPPING GenericMapping,WINBOOL ObjectCreation,LPDWORD GrantedAccess,LPBOOL AccessStatus,LPBOOL pfGenerateOnClose);
  2445.   WINADVAPI WINBOOL WINAPI AccessCheckByTypeAndAuditAlarmA(LPCSTR SubsystemName,LPVOID HandleId,LPCSTR ObjectTypeName,LPCSTR ObjectName,PSECURITY_DESCRIPTOR SecurityDescriptor,PSID PrincipalSelfSid,DWORD DesiredAccess,AUDIT_EVENT_TYPE AuditType,DWORD Flags,POBJECT_TYPE_LIST ObjectTypeList,DWORD ObjectTypeListLength,PGENERIC_MAPPING GenericMapping,WINBOOL ObjectCreation,LPDWORD GrantedAccess,LPBOOL AccessStatus,LPBOOL pfGenerateOnClose);
  2446.   WINADVAPI WINBOOL WINAPI AccessCheckByTypeAndAuditAlarmW(LPCWSTR SubsystemName,LPVOID HandleId,LPCWSTR ObjectTypeName,LPCWSTR ObjectName,PSECURITY_DESCRIPTOR SecurityDescriptor,PSID PrincipalSelfSid,DWORD DesiredAccess,AUDIT_EVENT_TYPE AuditType,DWORD Flags,POBJECT_TYPE_LIST ObjectTypeList,DWORD ObjectTypeListLength,PGENERIC_MAPPING GenericMapping,WINBOOL ObjectCreation,LPDWORD GrantedAccess,LPBOOL AccessStatus,LPBOOL pfGenerateOnClose);
  2447.   WINADVAPI WINBOOL WINAPI AccessCheckByTypeResultListAndAuditAlarmA(LPCSTR SubsystemName,LPVOID HandleId,LPCSTR ObjectTypeName,LPCSTR ObjectName,PSECURITY_DESCRIPTOR SecurityDescriptor,PSID PrincipalSelfSid,DWORD DesiredAccess,AUDIT_EVENT_TYPE AuditType,DWORD Flags,POBJECT_TYPE_LIST ObjectTypeList,DWORD ObjectTypeListLength,PGENERIC_MAPPING GenericMapping,WINBOOL ObjectCreation,LPDWORD GrantedAccess,LPDWORD AccessStatusList,LPBOOL pfGenerateOnClose);
  2448.   WINADVAPI WINBOOL WINAPI AccessCheckByTypeResultListAndAuditAlarmW(LPCWSTR SubsystemName,LPVOID HandleId,LPCWSTR ObjectTypeName,LPCWSTR ObjectName,PSECURITY_DESCRIPTOR SecurityDescriptor,PSID PrincipalSelfSid,DWORD DesiredAccess,AUDIT_EVENT_TYPE AuditType,DWORD Flags,POBJECT_TYPE_LIST ObjectTypeList,DWORD ObjectTypeListLength,PGENERIC_MAPPING GenericMapping,WINBOOL ObjectCreation,LPDWORD GrantedAccess,LPDWORD AccessStatusList,LPBOOL pfGenerateOnClose);
  2449.   WINADVAPI WINBOOL WINAPI AccessCheckByTypeResultListAndAuditAlarmByHandleA(LPCSTR SubsystemName,LPVOID HandleId,HANDLE ClientToken,LPCSTR ObjectTypeName,LPCSTR ObjectName,PSECURITY_DESCRIPTOR SecurityDescriptor,PSID PrincipalSelfSid,DWORD DesiredAccess,AUDIT_EVENT_TYPE AuditType,DWORD Flags,POBJECT_TYPE_LIST ObjectTypeList,DWORD ObjectTypeListLength,PGENERIC_MAPPING GenericMapping,WINBOOL ObjectCreation,LPDWORD GrantedAccess,LPDWORD AccessStatusList,LPBOOL pfGenerateOnClose);
  2450.   WINADVAPI WINBOOL WINAPI AccessCheckByTypeResultListAndAuditAlarmByHandleW(LPCWSTR SubsystemName,LPVOID HandleId,HANDLE ClientToken,LPCWSTR ObjectTypeName,LPCWSTR ObjectName,PSECURITY_DESCRIPTOR SecurityDescriptor,PSID PrincipalSelfSid,DWORD DesiredAccess,AUDIT_EVENT_TYPE AuditType,DWORD Flags,POBJECT_TYPE_LIST ObjectTypeList,DWORD ObjectTypeListLength,PGENERIC_MAPPING GenericMapping,WINBOOL ObjectCreation,LPDWORD GrantedAccess,LPDWORD AccessStatusList,LPBOOL pfGenerateOnClose);
  2451.   WINADVAPI WINBOOL WINAPI ObjectOpenAuditAlarmA(LPCSTR SubsystemName,LPVOID HandleId,LPSTR ObjectTypeName,LPSTR ObjectName,PSECURITY_DESCRIPTOR pSecurityDescriptor,HANDLE ClientToken,DWORD DesiredAccess,DWORD GrantedAccess,PPRIVILEGE_SET Privileges,WINBOOL ObjectCreation,WINBOOL AccessGranted,LPBOOL GenerateOnClose);
  2452.   WINADVAPI WINBOOL WINAPI ObjectOpenAuditAlarmW(LPCWSTR SubsystemName,LPVOID HandleId,LPWSTR ObjectTypeName,LPWSTR ObjectName,PSECURITY_DESCRIPTOR pSecurityDescriptor,HANDLE ClientToken,DWORD DesiredAccess,DWORD GrantedAccess,PPRIVILEGE_SET Privileges,WINBOOL ObjectCreation,WINBOOL AccessGranted,LPBOOL GenerateOnClose);
  2453.   WINADVAPI WINBOOL WINAPI ObjectPrivilegeAuditAlarmA(LPCSTR SubsystemName,LPVOID HandleId,HANDLE ClientToken,DWORD DesiredAccess,PPRIVILEGE_SET Privileges,WINBOOL AccessGranted);
  2454.   WINADVAPI WINBOOL WINAPI ObjectPrivilegeAuditAlarmW(LPCWSTR SubsystemName,LPVOID HandleId,HANDLE ClientToken,DWORD DesiredAccess,PPRIVILEGE_SET Privileges,WINBOOL AccessGranted);
  2455.   WINADVAPI WINBOOL WINAPI ObjectCloseAuditAlarmA(LPCSTR SubsystemName,LPVOID HandleId,WINBOOL GenerateOnClose);
  2456.   WINADVAPI WINBOOL WINAPI ObjectCloseAuditAlarmW(LPCWSTR SubsystemName,LPVOID HandleId,WINBOOL GenerateOnClose);
  2457.   WINADVAPI WINBOOL WINAPI ObjectDeleteAuditAlarmA(LPCSTR SubsystemName,LPVOID HandleId,WINBOOL GenerateOnClose);
  2458.   WINADVAPI WINBOOL WINAPI ObjectDeleteAuditAlarmW(LPCWSTR SubsystemName,LPVOID HandleId,WINBOOL GenerateOnClose);
  2459.   WINADVAPI WINBOOL WINAPI PrivilegedServiceAuditAlarmA(LPCSTR SubsystemName,LPCSTR ServiceName,HANDLE ClientToken,PPRIVILEGE_SET Privileges,WINBOOL AccessGranted);
  2460.   WINADVAPI WINBOOL WINAPI PrivilegedServiceAuditAlarmW(LPCWSTR SubsystemName,LPCWSTR ServiceName,HANDLE ClientToken,PPRIVILEGE_SET Privileges,WINBOOL AccessGranted);
  2461.   WINADVAPI WINBOOL WINAPI IsWellKnownSid(PSID pSid,WELL_KNOWN_SID_TYPE WellKnownSidType);
  2462.   WINADVAPI WINBOOL WINAPI CreateWellKnownSid(WELL_KNOWN_SID_TYPE WellKnownSidType,PSID DomainSid,PSID pSid,DWORD *cbSid);
  2463.   WINADVAPI WINBOOL WINAPI EqualDomainSid(PSID pSid1,PSID pSid2,WINBOOL *pfEqual);
  2464.   WINADVAPI WINBOOL WINAPI GetWindowsAccountDomainSid(PSID pSid,PSID pDomainSid,DWORD *cbDomainSid);
  2465.   WINADVAPI WINBOOL WINAPI IsValidSid(PSID pSid);
  2466.   WINADVAPI WINBOOL WINAPI EqualSid(PSID pSid1,PSID pSid2);
  2467.   WINADVAPI WINBOOL WINAPI EqualPrefixSid(PSID pSid1,PSID pSid2);
  2468.   WINADVAPI DWORD WINAPI GetSidLengthRequired (UCHAR nSubAuthorityCount);
  2469.   WINADVAPI WINBOOL WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,BYTE nSubAuthorityCount,DWORD nSubAuthority0,DWORD nSubAuthority1,DWORD nSubAuthority2,DWORD nSubAuthority3,DWORD nSubAuthority4,DWORD nSubAuthority5,DWORD nSubAuthority6,DWORD nSubAuthority7,PSID *pSid);
  2470.   WINADVAPI PVOID WINAPI FreeSid(PSID pSid);
  2471.   WINADVAPI WINBOOL WINAPI InitializeSid(PSID Sid,PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,BYTE nSubAuthorityCount);
  2472.   WINADVAPI PSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority(PSID pSid);
  2473.   WINADVAPI PDWORD WINAPI GetSidSubAuthority(PSID pSid,DWORD nSubAuthority);
  2474.   WINADVAPI PUCHAR WINAPI GetSidSubAuthorityCount(PSID pSid);
  2475.   WINADVAPI DWORD WINAPI GetLengthSid(PSID pSid);
  2476.   WINADVAPI WINBOOL WINAPI CopySid(DWORD nDestinationSidLength,PSID pDestinationSid,PSID pSourceSid);
  2477.   WINADVAPI WINBOOL WINAPI AreAllAccessesGranted(DWORD GrantedAccess,DWORD DesiredAccess);
  2478.   WINADVAPI WINBOOL WINAPI AreAnyAccessesGranted(DWORD GrantedAccess,DWORD DesiredAccess);
  2479.   WINADVAPI VOID WINAPI MapGenericMask(PDWORD AccessMask,PGENERIC_MAPPING GenericMapping);
  2480.   WINADVAPI WINBOOL WINAPI IsValidAcl(PACL pAcl);
  2481.   WINADVAPI WINBOOL WINAPI InitializeAcl(PACL pAcl,DWORD nAclLength,DWORD dwAclRevision);
  2482.   WINADVAPI WINBOOL WINAPI GetAclInformation(PACL pAcl,LPVOID pAclInformation,DWORD nAclInformationLength,ACL_INFORMATION_CLASS dwAclInformationClass);
  2483.   WINADVAPI WINBOOL WINAPI SetAclInformation(PACL pAcl,LPVOID pAclInformation,DWORD nAclInformationLength,ACL_INFORMATION_CLASS dwAclInformationClass);
  2484.   WINADVAPI WINBOOL WINAPI AddAce(PACL pAcl,DWORD dwAceRevision,DWORD dwStartingAceIndex,LPVOID pAceList,DWORD nAceListLength);
  2485.   WINADVAPI WINBOOL WINAPI DeleteAce(PACL pAcl,DWORD dwAceIndex);
  2486.   WINADVAPI WINBOOL WINAPI GetAce(PACL pAcl,DWORD dwAceIndex,LPVOID *pAce);
  2487.   WINADVAPI WINBOOL WINAPI AddAccessAllowedAce(PACL pAcl,DWORD dwAceRevision,DWORD AccessMask,PSID pSid);
  2488.   WINADVAPI WINBOOL WINAPI AddAccessAllowedAceEx(PACL pAcl,DWORD dwAceRevision,DWORD AceFlags,DWORD AccessMask,PSID pSid);
  2489.   WINADVAPI WINBOOL WINAPI AddAccessDeniedAce(PACL pAcl,DWORD dwAceRevision,DWORD AccessMask,PSID pSid);
  2490.   WINADVAPI WINBOOL WINAPI AddAccessDeniedAceEx(PACL pAcl,DWORD dwAceRevision,DWORD AceFlags,DWORD AccessMask,PSID pSid);
  2491.   WINADVAPI WINBOOL WINAPI AddAuditAccessAce(PACL pAcl,DWORD dwAceRevision,DWORD dwAccessMask,PSID pSid,WINBOOL bAuditSuccess,WINBOOL bAuditFailure);
  2492.   WINADVAPI WINBOOL WINAPI AddAuditAccessAceEx(PACL pAcl,DWORD dwAceRevision,DWORD AceFlags,DWORD dwAccessMask,PSID pSid,WINBOOL bAuditSuccess,WINBOOL bAuditFailure);
  2493.   WINADVAPI WINBOOL WINAPI AddAccessAllowedObjectAce(PACL pAcl,DWORD dwAceRevision,DWORD AceFlags,DWORD AccessMask,GUID *ObjectTypeGuid,GUID *InheritedObjectTypeGuid,PSID pSid);
  2494.   WINADVAPI WINBOOL WINAPI AddAccessDeniedObjectAce(PACL pAcl,DWORD dwAceRevision,DWORD AceFlags,DWORD AccessMask,GUID *ObjectTypeGuid,GUID *InheritedObjectTypeGuid,PSID pSid);
  2495.   WINADVAPI WINBOOL WINAPI AddAuditAccessObjectAce(PACL pAcl,DWORD dwAceRevision,DWORD AceFlags,DWORD AccessMask,GUID *ObjectTypeGuid,GUID *InheritedObjectTypeGuid,PSID pSid,WINBOOL bAuditSuccess,WINBOOL bAuditFailure);
  2496.   WINADVAPI WINBOOL WINAPI FindFirstFreeAce(PACL pAcl,LPVOID *pAce);
  2497.   WINADVAPI WINBOOL WINAPI InitializeSecurityDescriptor(PSECURITY_DESCRIPTOR pSecurityDescriptor,DWORD dwRevision);
  2498.   WINADVAPI WINBOOL WINAPI IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR pSecurityDescriptor);
  2499.   WINADVAPI DWORD WINAPI GetSecurityDescriptorLength(PSECURITY_DESCRIPTOR pSecurityDescriptor);
  2500.   WINADVAPI WINBOOL WINAPI GetSecurityDescriptorControl(PSECURITY_DESCRIPTOR pSecurityDescriptor,PSECURITY_DESCRIPTOR_CONTROL pControl,LPDWORD lpdwRevision);
  2501.   WINADVAPI WINBOOL WINAPI SetSecurityDescriptorControl(PSECURITY_DESCRIPTOR pSecurityDescriptor,SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet);
  2502.   WINADVAPI WINBOOL WINAPI SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR pSecurityDescriptor,WINBOOL bDaclPresent,PACL pDacl,WINBOOL bDaclDefaulted);
  2503.   WINADVAPI WINBOOL WINAPI GetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR pSecurityDescriptor,LPBOOL lpbDaclPresent,PACL *pDacl,LPBOOL lpbDaclDefaulted);
  2504.   WINADVAPI WINBOOL WINAPI SetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR pSecurityDescriptor,WINBOOL bSaclPresent,PACL pSacl,WINBOOL bSaclDefaulted);
  2505.   WINADVAPI WINBOOL WINAPI GetSecurityDescriptorSacl(PSECURITY_DESCRIPTOR pSecurityDescriptor,LPBOOL lpbSaclPresent,PACL *pSacl,LPBOOL lpbSaclDefaulted);
  2506.   WINADVAPI WINBOOL WINAPI SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR pSecurityDescriptor,PSID pOwner,WINBOOL bOwnerDefaulted);
  2507.   WINADVAPI WINBOOL WINAPI GetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR pSecurityDescriptor,PSID *pOwner,LPBOOL lpbOwnerDefaulted);
  2508.   WINADVAPI WINBOOL WINAPI SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR pSecurityDescriptor,PSID pGroup,WINBOOL bGroupDefaulted);
  2509.   WINADVAPI WINBOOL WINAPI GetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR pSecurityDescriptor,PSID *pGroup,LPBOOL lpbGroupDefaulted);
  2510.   WINADVAPI DWORD WINAPI SetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor,PUCHAR RMControl);
  2511.   WINADVAPI DWORD WINAPI GetSecurityDescriptorRMControl(PSECURITY_DESCRIPTOR SecurityDescriptor,PUCHAR RMControl);
  2512.   WINADVAPI WINBOOL WINAPI CreatePrivateObjectSecurity(PSECURITY_DESCRIPTOR ParentDescriptor,PSECURITY_DESCRIPTOR CreatorDescriptor,PSECURITY_DESCRIPTOR *NewDescriptor,WINBOOL IsDirectoryObject,HANDLE Token,PGENERIC_MAPPING GenericMapping);
  2513.   WINADVAPI WINBOOL WINAPI ConvertToAutoInheritPrivateObjectSecurity(PSECURITY_DESCRIPTOR ParentDescriptor,PSECURITY_DESCRIPTOR CurrentSecurityDescriptor,PSECURITY_DESCRIPTOR *NewSecurityDescriptor,GUID *ObjectType,BOOLEAN IsDirectoryObject,PGENERIC_MAPPING GenericMapping);
  2514.   WINADVAPI WINBOOL WINAPI CreatePrivateObjectSecurityEx(PSECURITY_DESCRIPTOR ParentDescriptor,PSECURITY_DESCRIPTOR CreatorDescriptor,PSECURITY_DESCRIPTOR *NewDescriptor,GUID *ObjectType,WINBOOL IsContainerObject,ULONG AutoInheritFlags,HANDLE Token,PGENERIC_MAPPING GenericMapping);
  2515.   WINADVAPI WINBOOL WINAPI CreatePrivateObjectSecurityWithMultipleInheritance(PSECURITY_DESCRIPTOR ParentDescriptor,PSECURITY_DESCRIPTOR CreatorDescriptor,PSECURITY_DESCRIPTOR *NewDescriptor,GUID **ObjectTypes,ULONG GuidCount,WINBOOL IsContainerObject,ULONG AutoInheritFlags,HANDLE Token,PGENERIC_MAPPING GenericMapping);
  2516.   WINADVAPI WINBOOL WINAPI SetPrivateObjectSecurity (SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR ModificationDescriptor,PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,PGENERIC_MAPPING GenericMapping,HANDLE Token);
  2517.   WINADVAPI WINBOOL WINAPI SetPrivateObjectSecurityEx (SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR ModificationDescriptor,PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,ULONG AutoInheritFlags,PGENERIC_MAPPING GenericMapping,HANDLE Token);
  2518.   WINADVAPI WINBOOL WINAPI GetPrivateObjectSecurity(PSECURITY_DESCRIPTOR ObjectDescriptor,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR ResultantDescriptor,DWORD DescriptorLength,PDWORD ReturnLength);
  2519.   WINADVAPI WINBOOL WINAPI DestroyPrivateObjectSecurity(PSECURITY_DESCRIPTOR *ObjectDescriptor);
  2520.   WINADVAPI WINBOOL WINAPI MakeSelfRelativeSD(PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,LPDWORD lpdwBufferLength);
  2521.   WINADVAPI WINBOOL WINAPI MakeAbsoluteSD(PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,LPDWORD lpdwAbsoluteSecurityDescriptorSize,PACL pDacl,LPDWORD lpdwDaclSize,PACL pSacl,LPDWORD lpdwSaclSize,PSID pOwner,LPDWORD lpdwOwnerSize,PSID pPrimaryGroup,LPDWORD lpdwPrimaryGroupSize);
  2522.   WINADVAPI WINBOOL WINAPI MakeAbsoluteSD2(PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,LPDWORD lpdwBufferSize);
  2523.   WINADVAPI WINBOOL WINAPI SetFileSecurityA(LPCSTR lpFileName,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor);
  2524.   WINADVAPI WINBOOL WINAPI SetFileSecurityW(LPCWSTR lpFileName,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor);
  2525.   WINADVAPI WINBOOL WINAPI GetFileSecurityA(LPCSTR lpFileName,SECURITY_INFORMATION RequestedInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor,DWORD nLength,LPDWORD lpnLengthNeeded);
  2526.   WINADVAPI WINBOOL WINAPI GetFileSecurityW(LPCWSTR lpFileName,SECURITY_INFORMATION RequestedInformation,PSECURITY_DESCRIPTOR pSecurityDescriptor,DWORD nLength,LPDWORD lpnLengthNeeded);
  2527.   WINADVAPI WINBOOL WINAPI SetKernelObjectSecurity(HANDLE Handle,SECURITY_INFORMATION SecurityInformation,PSECURITY_DESCRIPTOR SecurityDescriptor);
  2528.   WINBASEAPI HANDLE WINAPI FindFirstChangeNotificationA(LPCSTR lpPathName,WINBOOL bWatchSubtree,DWORD dwNotifyFilter);
  2529.   WINBASEAPI HANDLE WINAPI FindFirstChangeNotificationW(LPCWSTR lpPathName,WINBOOL bWatchSubtree,DWORD dwNotifyFilter);
  2530.   WINBASEAPI WINBOOL WINAPI FindNextChangeNotification(HANDLE hChangeHandle);
  2531.   WINBASEAPI WINBOOL WINAPI FindCloseChangeNotification(HANDLE hChangeHandle);
  2532.   WINBASEAPI WINBOOL WINAPI ReadDirectoryChangesW(HANDLE hDirectory,LPVOID lpBuffer,DWORD nBufferLength,WINBOOL bWatchSubtree,DWORD dwNotifyFilter,LPDWORD lpBytesReturned,LPOVERLAPPED lpOverlapped,LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine);
  2533.   WINBASEAPI WINBOOL WINAPI VirtualLock(LPVOID lpAddress,SIZE_T dwSize);
  2534.   WINBASEAPI WINBOOL WINAPI VirtualUnlock(LPVOID lpAddress,SIZE_T dwSize);
  2535.   WINBASEAPI LPVOID WINAPI MapViewOfFileEx(HANDLE hFileMappingObject,DWORD dwDesiredAccess,DWORD dwFileOffsetHigh,DWORD dwFileOffsetLow,SIZE_T dwNumberOfBytesToMap,LPVOID lpBaseAddress);
  2536.   WINBASEAPI WINBOOL WINAPI SetPriorityClass(HANDLE hProcess,DWORD dwPriorityClass);
  2537.   WINBASEAPI DWORD WINAPI GetPriorityClass(HANDLE hProcess);
  2538.   WINBASEAPI WINBOOL WINAPI IsBadReadPtr(CONST VOID *lp,UINT_PTR ucb);
  2539.   WINBASEAPI WINBOOL WINAPI IsBadWritePtr(LPVOID lp,UINT_PTR ucb);
  2540.   WINBASEAPI WINBOOL WINAPI IsBadHugeReadPtr(CONST VOID *lp,UINT_PTR ucb);
  2541.   WINBASEAPI WINBOOL WINAPI IsBadHugeWritePtr(LPVOID lp,UINT_PTR ucb);
  2542.   WINBASEAPI WINBOOL WINAPI IsBadCodePtr(FARPROC lpfn);
  2543.   WINBASEAPI WINBOOL WINAPI IsBadStringPtrA(LPCSTR lpsz,UINT_PTR ucchMax);
  2544.   WINBASEAPI WINBOOL WINAPI IsBadStringPtrW(LPCWSTR lpsz,UINT_PTR ucchMax);
  2545.   WINADVAPI WINBOOL WINAPI LookupAccountSidA(LPCSTR lpSystemName,PSID Sid,LPSTR Name,LPDWORD cchName,LPSTR ReferencedDomainName,LPDWORD cchReferencedDomainName,PSID_NAME_USE peUse);
  2546.   WINADVAPI WINBOOL WINAPI LookupAccountSidW(LPCWSTR lpSystemName,PSID Sid,LPWSTR Name,LPDWORD cchName,LPWSTR ReferencedDomainName,LPDWORD cchReferencedDomainName,PSID_NAME_USE peUse);
  2547.   WINADVAPI WINBOOL WINAPI LookupAccountNameA(LPCSTR lpSystemName,LPCSTR lpAccountName,PSID Sid,LPDWORD cbSid,LPSTR ReferencedDomainName,LPDWORD cchReferencedDomainName,PSID_NAME_USE peUse);
  2548.   WINADVAPI WINBOOL WINAPI LookupAccountNameW(LPCWSTR lpSystemName,LPCWSTR lpAccountName,PSID Sid,LPDWORD cbSid,LPWSTR ReferencedDomainName,LPDWORD cchReferencedDomainName,PSID_NAME_USE peUse);
  2549.   WINADVAPI WINBOOL WINAPI LookupPrivilegeValueA(LPCSTR lpSystemName,LPCSTR lpName,PLUID lpLuid);
  2550.   WINADVAPI WINBOOL WINAPI LookupPrivilegeValueW(LPCWSTR lpSystemName,LPCWSTR lpName,PLUID lpLuid);
  2551.   WINADVAPI WINBOOL WINAPI LookupPrivilegeNameA(LPCSTR lpSystemName,PLUID lpLuid,LPSTR lpName,LPDWORD cchName);
  2552.   WINADVAPI WINBOOL WINAPI LookupPrivilegeNameW(LPCWSTR lpSystemName,PLUID lpLuid,LPWSTR lpName,LPDWORD cchName);
  2553.   WINADVAPI WINBOOL WINAPI LookupPrivilegeDisplayNameA(LPCSTR lpSystemName,LPCSTR lpName,LPSTR lpDisplayName,LPDWORD cchDisplayName,LPDWORD lpLanguageId);
  2554.   WINADVAPI WINBOOL WINAPI LookupPrivilegeDisplayNameW(LPCWSTR lpSystemName,LPCWSTR lpName,LPWSTR lpDisplayName,LPDWORD cchDisplayName,LPDWORD lpLanguageId);
  2555.   WINADVAPI WINBOOL WINAPI AllocateLocallyUniqueId(PLUID Luid);
  2556.   WINBASEAPI WINBOOL WINAPI BuildCommDCBA(LPCSTR lpDef,LPDCB lpDCB);
  2557.   WINBASEAPI WINBOOL WINAPI BuildCommDCBW(LPCWSTR lpDef,LPDCB lpDCB);
  2558.   WINBASEAPI WINBOOL WINAPI BuildCommDCBAndTimeoutsA(LPCSTR lpDef,LPDCB lpDCB,LPCOMMTIMEOUTS lpCommTimeouts);
  2559.   WINBASEAPI WINBOOL WINAPI BuildCommDCBAndTimeoutsW(LPCWSTR lpDef,LPDCB lpDCB,LPCOMMTIMEOUTS lpCommTimeouts);
  2560.   WINBASEAPI WINBOOL WINAPI CommConfigDialogA(LPCSTR lpszName,HWND hWnd,LPCOMMCONFIG lpCC);
  2561.   WINBASEAPI WINBOOL WINAPI CommConfigDialogW(LPCWSTR lpszName,HWND hWnd,LPCOMMCONFIG lpCC);
  2562.   WINBASEAPI WINBOOL WINAPI GetDefaultCommConfigA(LPCSTR lpszName,LPCOMMCONFIG lpCC,LPDWORD lpdwSize);
  2563.   WINBASEAPI WINBOOL WINAPI GetDefaultCommConfigW(LPCWSTR lpszName,LPCOMMCONFIG lpCC,LPDWORD lpdwSize);
  2564.   WINBASEAPI WINBOOL WINAPI SetDefaultCommConfigA(LPCSTR lpszName,LPCOMMCONFIG lpCC,DWORD dwSize);
  2565.   WINBASEAPI WINBOOL WINAPI SetDefaultCommConfigW(LPCWSTR lpszName,LPCOMMCONFIG lpCC,DWORD dwSize);
  2566.  
  2567. #define MAX_COMPUTERNAME_LENGTH 15
  2568.  
  2569.   WINBASEAPI WINBOOL WINAPI GetComputerNameA(LPSTR lpBuffer,LPDWORD nSize);
  2570.   WINBASEAPI WINBOOL WINAPI GetComputerNameW(LPWSTR lpBuffer,LPDWORD nSize);
  2571.   WINBASEAPI WINBOOL WINAPI SetComputerNameA(LPCSTR lpComputerName);
  2572.   WINBASEAPI WINBOOL WINAPI SetComputerNameW(LPCWSTR lpComputerName);
  2573.  
  2574.   typedef enum _COMPUTER_NAME_FORMAT {
  2575.     ComputerNameNetBIOS,ComputerNameDnsHostname,ComputerNameDnsDomain,ComputerNameDnsFullyQualified,ComputerNamePhysicalNetBIOS,ComputerNamePhysicalDnsHostname,ComputerNamePhysicalDnsDomain,ComputerNamePhysicalDnsFullyQualified,ComputerNameMax
  2576.   } COMPUTER_NAME_FORMAT;
  2577.  
  2578.   WINBASEAPI WINBOOL WINAPI GetComputerNameExA(COMPUTER_NAME_FORMAT NameType,LPSTR lpBuffer,LPDWORD nSize);
  2579.   WINBASEAPI WINBOOL WINAPI GetComputerNameExW(COMPUTER_NAME_FORMAT NameType,LPWSTR lpBuffer,LPDWORD nSize);
  2580.   WINBASEAPI WINBOOL WINAPI SetComputerNameExA(COMPUTER_NAME_FORMAT NameType,LPCSTR lpBuffer);
  2581.   WINBASEAPI WINBOOL WINAPI SetComputerNameExW(COMPUTER_NAME_FORMAT NameType,LPCWSTR lpBuffer);
  2582.   WINBASEAPI WINBOOL WINAPI DnsHostnameToComputerNameA(LPCSTR Hostname,LPSTR ComputerName,LPDWORD nSize);
  2583.   WINBASEAPI WINBOOL WINAPI DnsHostnameToComputerNameW(LPCWSTR Hostname,LPWSTR ComputerName,LPDWORD nSize);
  2584.   WINADVAPI WINBOOL WINAPI GetUserNameA(LPSTR lpBuffer,LPDWORD pcbBuffer);
  2585.   WINADVAPI WINBOOL WINAPI GetUserNameW(LPWSTR lpBuffer,LPDWORD pcbBuffer);
  2586.  
  2587. #define LOGON32_LOGON_INTERACTIVE 2
  2588. #define LOGON32_LOGON_NETWORK 3
  2589. #define LOGON32_LOGON_BATCH 4
  2590. #define LOGON32_LOGON_SERVICE 5
  2591. #define LOGON32_LOGON_UNLOCK 7
  2592. #define LOGON32_LOGON_NETWORK_CLEARTEXT 8
  2593. #define LOGON32_LOGON_NEW_CREDENTIALS 9
  2594.  
  2595. #define LOGON32_PROVIDER_DEFAULT 0
  2596. #define LOGON32_PROVIDER_WINNT35 1
  2597. #define LOGON32_PROVIDER_WINNT40 2
  2598. #define LOGON32_PROVIDER_WINNT50 3
  2599.  
  2600. #ifdef UNICODE
  2601. #define LogonUser LogonUserW
  2602. #define LogonUserEx LogonUserExW
  2603. #define CreateProcessAsUser CreateProcessAsUserW
  2604. #else
  2605. #define LogonUser LogonUserA
  2606. #define LogonUserEx LogonUserExA
  2607. #define CreateProcessAsUser CreateProcessAsUserA
  2608. #endif
  2609.  
  2610.   WINADVAPI WINBOOL WINAPI LogonUserA(LPCSTR lpszUsername,LPCSTR lpszDomain,LPCSTR lpszPassword,DWORD dwLogonType,DWORD dwLogonProvider,PHANDLE phToken);
  2611.   WINADVAPI WINBOOL WINAPI LogonUserW(LPCWSTR lpszUsername,LPCWSTR lpszDomain,LPCWSTR lpszPassword,DWORD dwLogonType,DWORD dwLogonProvider,PHANDLE phToken);
  2612.   WINADVAPI WINBOOL WINAPI LogonUserExA(LPCSTR lpszUsername,LPCSTR lpszDomain,LPCSTR lpszPassword,DWORD dwLogonType,DWORD dwLogonProvider,PHANDLE phToken,PSID *ppLogonSid,PVOID *ppProfileBuffer,LPDWORD pdwProfileLength,PQUOTA_LIMITS pQuotaLimits);
  2613.   WINADVAPI WINBOOL WINAPI LogonUserExW(LPCWSTR lpszUsername,LPCWSTR lpszDomain,LPCWSTR lpszPassword,DWORD dwLogonType,DWORD dwLogonProvider,PHANDLE phToken,PSID *ppLogonSid,PVOID *ppProfileBuffer,LPDWORD pdwProfileLength,PQUOTA_LIMITS pQuotaLimits);
  2614.   WINADVAPI WINBOOL WINAPI ImpersonateLoggedOnUser(HANDLE hToken);
  2615.   WINADVAPI WINBOOL WINAPI CreateProcessAsUserA(HANDLE hToken,LPCSTR lpApplicationName,LPSTR lpCommandLine,LPSECURITY_ATTRIBUTES lpProcessAttributes,LPSECURITY_ATTRIBUTES lpThreadAttributes,WINBOOL bInheritHandles,DWORD dwCreationFlags,LPVOID lpEnvironment,LPCSTR lpCurrentDirectory,LPSTARTUPINFOA lpStartupInfo,LPPROCESS_INFORMATION lpProcessInformation);
  2616.   WINADVAPI WINBOOL WINAPI CreateProcessAsUserW(HANDLE hToken,LPCWSTR lpApplicationName,LPWSTR lpCommandLine,LPSECURITY_ATTRIBUTES lpProcessAttributes,LPSECURITY_ATTRIBUTES lpThreadAttributes,WINBOOL bInheritHandles,DWORD dwCreationFlags,LPVOID lpEnvironment,LPCWSTR lpCurrentDirectory,LPSTARTUPINFOW lpStartupInfo,LPPROCESS_INFORMATION lpProcessInformation);
  2617.  
  2618. #define LOGON_WITH_PROFILE 0x1
  2619. #define LOGON_NETCREDENTIALS_ONLY 0x2
  2620. #define LOGON_ZERO_PASSWORD_BUFFER 0x80000000
  2621.  
  2622.   WINADVAPI WINBOOL WINAPI CreateProcessWithLogonW(LPCWSTR lpUsername,LPCWSTR lpDomain,LPCWSTR lpPassword,DWORD dwLogonFlags,LPCWSTR lpApplicationName,LPWSTR lpCommandLine,DWORD dwCreationFlags,LPVOID lpEnvironment,LPCWSTR lpCurrentDirectory,LPSTARTUPINFOW lpStartupInfo,LPPROCESS_INFORMATION lpProcessInformation);
  2623.   WINADVAPI WINBOOL WINAPI CreateProcessWithTokenW(HANDLE hToken,DWORD dwLogonFlags,LPCWSTR lpApplicationName,LPWSTR lpCommandLine,DWORD dwCreationFlags,LPVOID lpEnvironment,LPCWSTR lpCurrentDirectory,LPSTARTUPINFOW lpStartupInfo,LPPROCESS_INFORMATION lpProcessInformation);
  2624.   WINADVAPI WINBOOL WINAPI ImpersonateAnonymousToken(HANDLE ThreadHandle);
  2625.   WINADVAPI WINBOOL WINAPI DuplicateTokenEx(HANDLE hExistingToken,DWORD dwDesiredAccess,LPSECURITY_ATTRIBUTES lpTokenAttributes,SECURITY_IMPERSONATION_LEVEL ImpersonationLevel,TOKEN_TYPE TokenType,PHANDLE phNewToken);
  2626.   WINADVAPI WINBOOL WINAPI CreateRestrictedToken(HANDLE ExistingTokenHandle,DWORD Flags,DWORD DisableSidCount,PSID_AND_ATTRIBUTES SidsToDisable,DWORD DeletePrivilegeCount,PLUID_AND_ATTRIBUTES PrivilegesToDelete,DWORD RestrictedSidCount,PSID_AND_ATTRIBUTES SidsToRestrict,PHANDLE NewTokenHandle);
  2627.   WINADVAPI WINBOOL WINAPI IsTokenRestricted(HANDLE TokenHandle);
  2628.   WINADVAPI WINBOOL WINAPI IsTokenUntrusted(HANDLE TokenHandle);
  2629.   WINADVAPI WINBOOL WINAPI CheckTokenMembership(HANDLE TokenHandle,PSID SidToCheck,PBOOL IsMember);
  2630.  
  2631.   typedef WAITORTIMERCALLBACKFUNC WAITORTIMERCALLBACK;
  2632.  
  2633.   WINBASEAPI WINBOOL WINAPI RegisterWaitForSingleObject(PHANDLE phNewWaitObject,HANDLE hObject,WAITORTIMERCALLBACK Callback,PVOID Context,ULONG dwMilliseconds,ULONG dwFlags);
  2634.   WINBASEAPI HANDLE WINAPI RegisterWaitForSingleObjectEx(HANDLE hObject,WAITORTIMERCALLBACK Callback,PVOID Context,ULONG dwMilliseconds,ULONG dwFlags);
  2635.   WINBASEAPI WINBOOL WINAPI UnregisterWait(HANDLE WaitHandle);
  2636.   WINBASEAPI WINBOOL WINAPI UnregisterWaitEx(HANDLE WaitHandle,HANDLE CompletionEvent);
  2637.   WINBASEAPI WINBOOL WINAPI QueueUserWorkItem(LPTHREAD_START_ROUTINE Function,PVOID Context,ULONG Flags);
  2638.   WINBASEAPI WINBOOL WINAPI BindIoCompletionCallback(HANDLE FileHandle,LPOVERLAPPED_COMPLETION_ROUTINE Function,ULONG Flags);
  2639.   WINBASEAPI HANDLE WINAPI CreateTimerQueue(VOID);
  2640.   WINBASEAPI WINBOOL WINAPI CreateTimerQueueTimer(PHANDLE phNewTimer,HANDLE TimerQueue,WAITORTIMERCALLBACK Callback,PVOID Parameter,DWORD DueTime,DWORD Period,ULONG Flags);
  2641.   WINBASEAPI WINBOOL WINAPI ChangeTimerQueueTimer(HANDLE TimerQueue,HANDLE Timer,ULONG DueTime,ULONG Period);
  2642.   WINBASEAPI WINBOOL WINAPI DeleteTimerQueueTimer(HANDLE TimerQueue,HANDLE Timer,HANDLE CompletionEvent);
  2643.   WINBASEAPI WINBOOL WINAPI DeleteTimerQueueEx(HANDLE TimerQueue,HANDLE CompletionEvent);
  2644.   WINBASEAPI HANDLE WINAPI SetTimerQueueTimer(HANDLE TimerQueue,WAITORTIMERCALLBACK Callback,PVOID Parameter,DWORD DueTime,DWORD Period,WINBOOL PreferIo);
  2645.   WINBASEAPI WINBOOL WINAPI CancelTimerQueueTimer(HANDLE TimerQueue,HANDLE Timer);
  2646.   WINBASEAPI WINBOOL WINAPI DeleteTimerQueue(HANDLE TimerQueue);
  2647.  
  2648. #define HW_PROFILE_GUIDLEN 39
  2649. #define MAX_PROFILE_LEN 80
  2650.  
  2651. #define DOCKINFO_UNDOCKED (0x1)
  2652. #define DOCKINFO_DOCKED (0x2)
  2653. #define DOCKINFO_USER_SUPPLIED (0x4)
  2654. #define DOCKINFO_USER_UNDOCKED (DOCKINFO_USER_SUPPLIED | DOCKINFO_UNDOCKED)
  2655. #define DOCKINFO_USER_DOCKED (DOCKINFO_USER_SUPPLIED | DOCKINFO_DOCKED)
  2656.  
  2657.   typedef struct tagHW_PROFILE_INFOA {
  2658.     DWORD dwDockInfo;
  2659.     CHAR szHwProfileGuid[HW_PROFILE_GUIDLEN];
  2660.     CHAR szHwProfileName[MAX_PROFILE_LEN];
  2661.   } HW_PROFILE_INFOA,*LPHW_PROFILE_INFOA;
  2662.  
  2663.   typedef struct tagHW_PROFILE_INFOW {
  2664.     DWORD dwDockInfo;
  2665.     WCHAR szHwProfileGuid[HW_PROFILE_GUIDLEN];
  2666.     WCHAR szHwProfileName[MAX_PROFILE_LEN];
  2667.   } HW_PROFILE_INFOW,*LPHW_PROFILE_INFOW;
  2668.  
  2669. #ifdef UNICODE
  2670.   typedef HW_PROFILE_INFOW HW_PROFILE_INFO;
  2671.   typedef LPHW_PROFILE_INFOW LPHW_PROFILE_INFO;
  2672. #else
  2673.   typedef HW_PROFILE_INFOA HW_PROFILE_INFO;
  2674.   typedef LPHW_PROFILE_INFOA LPHW_PROFILE_INFO;
  2675. #endif
  2676.  
  2677. #ifdef UNICODE
  2678. #define GetCurrentHwProfile GetCurrentHwProfileW
  2679. #define GetVersionEx GetVersionExW
  2680. #define VerifyVersionInfo VerifyVersionInfoW
  2681. #else
  2682. #define GetCurrentHwProfile GetCurrentHwProfileA
  2683. #define GetVersionEx GetVersionExA
  2684. #define VerifyVersionInfo VerifyVersionInfoA
  2685. #endif
  2686.  
  2687.   WINADVAPI WINBOOL WINAPI GetCurrentHwProfileA (LPHW_PROFILE_INFOA lpHwProfileInfo);
  2688.   WINADVAPI WINBOOL WINAPI GetCurrentHwProfileW (LPHW_PROFILE_INFOW lpHwProfileInfo);
  2689.   WINBASEAPI WINBOOL WINAPI QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);
  2690.   WINBASEAPI WINBOOL WINAPI QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);
  2691.   WINBASEAPI WINBOOL WINAPI GetVersionExA(LPOSVERSIONINFOA lpVersionInformation);
  2692.   WINBASEAPI WINBOOL WINAPI GetVersionExW(LPOSVERSIONINFOW lpVersionInformation);
  2693.   WINBASEAPI WINBOOL WINAPI VerifyVersionInfoA(LPOSVERSIONINFOEXA lpVersionInformation,DWORD dwTypeMask,DWORDLONG dwlConditionMask);
  2694.   WINBASEAPI WINBOOL WINAPI VerifyVersionInfoW(LPOSVERSIONINFOEXW lpVersionInformation,DWORD dwTypeMask,DWORDLONG dwlConditionMask);
  2695.  
  2696. #include <winerror.h>
  2697.  
  2698. #define TC_NORMAL 0
  2699. #define TC_HARDERR 1
  2700. #define TC_GP_TRAP 2
  2701. #define TC_SIGNAL 3
  2702.  
  2703. #define AC_LINE_OFFLINE 0x0
  2704. #define AC_LINE_ONLINE 0x1
  2705. #define AC_LINE_BACKUP_POWER 0x2
  2706. #define AC_LINE_UNKNOWN 0xff
  2707.  
  2708. #define BATTERY_FLAG_HIGH 0x1
  2709. #define BATTERY_FLAG_LOW 0x2
  2710. #define BATTERY_FLAG_CRITICAL 0x4
  2711. #define BATTERY_FLAG_CHARGING 0x8
  2712. #define BATTERY_FLAG_NO_BATTERY 0x80
  2713. #define BATTERY_FLAG_UNKNOWN 0xff
  2714.  
  2715. #define BATTERY_PERCENTAGE_UNKNOWN 0xff
  2716.  
  2717. #define BATTERY_LIFE_UNKNOWN 0xffffffff
  2718.  
  2719.   typedef struct _SYSTEM_POWER_STATUS {
  2720.     BYTE ACLineStatus;
  2721.     BYTE BatteryFlag;
  2722.     BYTE BatteryLifePercent;
  2723.     BYTE Reserved1;
  2724.     DWORD BatteryLifeTime;
  2725.     DWORD BatteryFullLifeTime;
  2726.   } SYSTEM_POWER_STATUS,*LPSYSTEM_POWER_STATUS;
  2727.  
  2728. #ifdef UNICODE
  2729. #define CreateJobObject CreateJobObjectW
  2730. #define OpenJobObject OpenJobObjectW
  2731. #define FindFirstVolume FindFirstVolumeW
  2732. #define FindNextVolume FindNextVolumeW
  2733. #define FindFirstVolumeMountPoint FindFirstVolumeMountPointW
  2734. #define FindNextVolumeMountPoint FindNextVolumeMountPointW
  2735. #define SetVolumeMountPoint SetVolumeMountPointW
  2736. #define DeleteVolumeMountPoint DeleteVolumeMountPointW
  2737. #define GetVolumeNameForVolumeMountPoint GetVolumeNameForVolumeMountPointW
  2738. #define GetVolumePathName GetVolumePathNameW
  2739. #define GetVolumePathNamesForVolumeName GetVolumePathNamesForVolumeNameW
  2740. #else
  2741. #define CreateJobObject CreateJobObjectA
  2742. #define OpenJobObject OpenJobObjectA
  2743. #define FindFirstVolume FindFirstVolumeA
  2744. #define FindNextVolume FindNextVolumeA
  2745. #define FindFirstVolumeMountPoint FindFirstVolumeMountPointA
  2746. #define FindNextVolumeMountPoint FindNextVolumeMountPointA
  2747. #define SetVolumeMountPoint SetVolumeMountPointA
  2748. #define DeleteVolumeMountPoint DeleteVolumeMountPointA
  2749. #define GetVolumeNameForVolumeMountPoint GetVolumeNameForVolumeMountPointA
  2750. #define GetVolumePathName GetVolumePathNameA
  2751. #define GetVolumePathNamesForVolumeName GetVolumePathNamesForVolumeNameA
  2752. #endif
  2753.  
  2754.   WINBOOL WINAPI GetSystemPowerStatus(LPSYSTEM_POWER_STATUS lpSystemPowerStatus);
  2755.   WINBOOL WINAPI SetSystemPowerState(WINBOOL fSuspend,WINBOOL fForce);
  2756.   WINBASEAPI WINBOOL WINAPI AllocateUserPhysicalPages(HANDLE hProcess,PULONG_PTR NumberOfPages,PULONG_PTR PageArray);
  2757.   WINBASEAPI WINBOOL WINAPI FreeUserPhysicalPages(HANDLE hProcess,PULONG_PTR NumberOfPages,PULONG_PTR PageArray);
  2758.   WINBASEAPI WINBOOL WINAPI MapUserPhysicalPages(PVOID VirtualAddress,ULONG_PTR NumberOfPages,PULONG_PTR PageArray);
  2759.   WINBASEAPI WINBOOL WINAPI MapUserPhysicalPagesScatter(PVOID *VirtualAddresses,ULONG_PTR NumberOfPages,PULONG_PTR PageArray);
  2760.   WINBASEAPI HANDLE WINAPI CreateJobObjectA(LPSECURITY_ATTRIBUTES lpJobAttributes,LPCSTR lpName);
  2761.   WINBASEAPI HANDLE WINAPI CreateJobObjectW(LPSECURITY_ATTRIBUTES lpJobAttributes,LPCWSTR lpName);
  2762.   WINBASEAPI HANDLE WINAPI OpenJobObjectA(DWORD dwDesiredAccess,WINBOOL bInheritHandle,LPCSTR lpName);
  2763.   WINBASEAPI HANDLE WINAPI OpenJobObjectW(DWORD dwDesiredAccess,WINBOOL bInheritHandle,LPCWSTR lpName);
  2764.   WINBASEAPI WINBOOL WINAPI AssignProcessToJobObject(HANDLE hJob,HANDLE hProcess);
  2765.   WINBASEAPI WINBOOL WINAPI TerminateJobObject(HANDLE hJob,UINT uExitCode);
  2766.   WINBASEAPI WINBOOL WINAPI QueryInformationJobObject(HANDLE hJob,JOBOBJECTINFOCLASS JobObjectInformationClass,LPVOID lpJobObjectInformation,DWORD cbJobObjectInformationLength,LPDWORD lpReturnLength);
  2767.   WINBASEAPI WINBOOL WINAPI SetInformationJobObject(HANDLE hJob,JOBOBJECTINFOCLASS JobObjectInformationClass,LPVOID lpJobObjectInformation,DWORD cbJobObjectInformationLength);
  2768.   WINBASEAPI WINBOOL WINAPI IsProcessInJob(HANDLE ProcessHandle,HANDLE JobHandle,PBOOL Result);
  2769.   WINBASEAPI WINBOOL WINAPI CreateJobSet(ULONG NumJob,PJOB_SET_ARRAY UserJobSet,ULONG Flags);
  2770.   WINBASEAPI PVOID WINAPI AddVectoredExceptionHandler (ULONG First,PVECTORED_EXCEPTION_HANDLER Handler);
  2771.   WINBASEAPI ULONG WINAPI RemoveVectoredExceptionHandler(PVOID Handle);
  2772.   WINBASEAPI PVOID WINAPI AddVectoredContinueHandler (ULONG First,PVECTORED_EXCEPTION_HANDLER Handler);
  2773.   WINBASEAPI ULONG WINAPI RemoveVectoredContinueHandler(PVOID Handle);
  2774.   WINBASEAPI HANDLE WINAPI FindFirstVolumeA(LPSTR lpszVolumeName,DWORD cchBufferLength);
  2775.   WINBASEAPI HANDLE WINAPI FindFirstVolumeW(LPWSTR lpszVolumeName,DWORD cchBufferLength);
  2776.   WINBASEAPI WINBOOL WINAPI FindNextVolumeA(HANDLE hFindVolume,LPSTR lpszVolumeName,DWORD cchBufferLength);
  2777.   WINBASEAPI WINBOOL WINAPI FindNextVolumeW(HANDLE hFindVolume,LPWSTR lpszVolumeName,DWORD cchBufferLength);
  2778.   WINBASEAPI WINBOOL WINAPI FindVolumeClose(HANDLE hFindVolume);
  2779.   WINBASEAPI HANDLE WINAPI FindFirstVolumeMountPointA(LPCSTR lpszRootPathName,LPSTR lpszVolumeMountPoint,DWORD cchBufferLength);
  2780.   WINBASEAPI HANDLE WINAPI FindFirstVolumeMountPointW(LPCWSTR lpszRootPathName,LPWSTR lpszVolumeMountPoint,DWORD cchBufferLength);
  2781.   WINBASEAPI WINBOOL WINAPI FindNextVolumeMountPointA(HANDLE hFindVolumeMountPoint,LPSTR lpszVolumeMountPoint,DWORD cchBufferLength);
  2782.   WINBASEAPI WINBOOL WINAPI FindNextVolumeMountPointW(HANDLE hFindVolumeMountPoint,LPWSTR lpszVolumeMountPoint,DWORD cchBufferLength);
  2783.   WINBASEAPI WINBOOL WINAPI FindVolumeMountPointClose(HANDLE hFindVolumeMountPoint);
  2784.   WINBASEAPI WINBOOL WINAPI SetVolumeMountPointA(LPCSTR lpszVolumeMountPoint,LPCSTR lpszVolumeName);
  2785.   WINBASEAPI WINBOOL WINAPI SetVolumeMountPointW(LPCWSTR lpszVolumeMountPoint,LPCWSTR lpszVolumeName);
  2786.   WINBASEAPI WINBOOL WINAPI DeleteVolumeMountPointA(LPCSTR lpszVolumeMountPoint);
  2787.   WINBASEAPI WINBOOL WINAPI DeleteVolumeMountPointW(LPCWSTR lpszVolumeMountPoint);
  2788.   WINBASEAPI WINBOOL WINAPI GetVolumeNameForVolumeMountPointA(LPCSTR lpszVolumeMountPoint,LPSTR lpszVolumeName,DWORD cchBufferLength);
  2789.   WINBASEAPI WINBOOL WINAPI GetVolumeNameForVolumeMountPointW(LPCWSTR lpszVolumeMountPoint,LPWSTR lpszVolumeName,DWORD cchBufferLength);
  2790.   WINBASEAPI WINBOOL WINAPI GetVolumePathNameA(LPCSTR lpszFileName,LPSTR lpszVolumePathName,DWORD cchBufferLength);
  2791.   WINBASEAPI WINBOOL WINAPI GetVolumePathNameW(LPCWSTR lpszFileName,LPWSTR lpszVolumePathName,DWORD cchBufferLength);
  2792.   WINBASEAPI WINBOOL WINAPI GetVolumePathNamesForVolumeNameA(LPCSTR lpszVolumeName,LPCH lpszVolumePathNames,DWORD cchBufferLength,PDWORD lpcchReturnLength);
  2793.   WINBASEAPI WINBOOL WINAPI GetVolumePathNamesForVolumeNameW(LPCWSTR lpszVolumeName,LPWCH lpszVolumePathNames,DWORD cchBufferLength,PDWORD lpcchReturnLength);
  2794.  
  2795. #define ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID 0x1
  2796. #define ACTCTX_FLAG_LANGID_VALID 0x2
  2797. #define ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID 0x4
  2798. #define ACTCTX_FLAG_RESOURCE_NAME_VALID 0x8
  2799. #define ACTCTX_FLAG_SET_PROCESS_DEFAULT 0x10
  2800. #define ACTCTX_FLAG_APPLICATION_NAME_VALID 0x20
  2801. #define ACTCTX_FLAG_SOURCE_IS_ASSEMBLYREF 0x40
  2802. #define ACTCTX_FLAG_HMODULE_VALID 0x80
  2803.  
  2804.   typedef struct tagACTCTXA {
  2805.     ULONG cbSize;
  2806.     DWORD dwFlags;
  2807.     LPCSTR lpSource;
  2808.     USHORT wProcessorArchitecture;
  2809.     LANGID wLangId;
  2810.     LPCSTR lpAssemblyDirectory;
  2811.     LPCSTR lpResourceName;
  2812.     LPCSTR lpApplicationName;
  2813.     HMODULE hModule;
  2814.   } ACTCTXA,*PACTCTXA;
  2815.  
  2816.   typedef struct tagACTCTXW {
  2817.     ULONG cbSize;
  2818.     DWORD dwFlags;
  2819.     LPCWSTR lpSource;
  2820.     USHORT wProcessorArchitecture;
  2821.     LANGID wLangId;
  2822.     LPCWSTR lpAssemblyDirectory;
  2823.     LPCWSTR lpResourceName;
  2824.     LPCWSTR lpApplicationName;
  2825.     HMODULE hModule;
  2826.   } ACTCTXW,*PACTCTXW;
  2827.  
  2828.   typedef const ACTCTXA *PCACTCTXA;
  2829.   typedef const ACTCTXW *PCACTCTXW;
  2830.  
  2831. #ifdef UNICODE
  2832.   typedef ACTCTXW ACTCTX;
  2833.   typedef PACTCTXW PACTCTX;
  2834.   typedef PCACTCTXW PCACTCTX;
  2835. #else
  2836.   typedef ACTCTXA ACTCTX;
  2837.   typedef PACTCTXA PACTCTX;
  2838.   typedef PCACTCTXA PCACTCTX;
  2839. #endif
  2840.  
  2841. #ifdef UNICODE
  2842. #define CreateActCtx CreateActCtxW
  2843. #else
  2844. #define CreateActCtx CreateActCtxA
  2845. #endif
  2846.  
  2847.   WINBASEAPI HANDLE WINAPI CreateActCtxA(PCACTCTXA pActCtx);
  2848.   WINBASEAPI HANDLE WINAPI CreateActCtxW(PCACTCTXW pActCtx);
  2849.   WINBASEAPI VOID WINAPI AddRefActCtx(HANDLE hActCtx);
  2850.   WINBASEAPI VOID WINAPI ReleaseActCtx(HANDLE hActCtx);
  2851.   WINBASEAPI WINBOOL WINAPI ZombifyActCtx(HANDLE hActCtx);
  2852.   WINBASEAPI WINBOOL WINAPI ActivateActCtx(HANDLE hActCtx,ULONG_PTR *lpCookie);
  2853.  
  2854. #define DEACTIVATE_ACTCTX_FLAG_FORCE_EARLY_DEACTIVATION (0x1)
  2855.  
  2856.   WINBASEAPI WINBOOL WINAPI DeactivateActCtx(DWORD dwFlags,ULONG_PTR ulCookie);
  2857.   WINBASEAPI WINBOOL WINAPI GetCurrentActCtx(HANDLE *lphActCtx);
  2858.  
  2859.   typedef struct tagACTCTX_SECTION_KEYED_DATA_2600 {
  2860.     ULONG cbSize;
  2861.     ULONG ulDataFormatVersion;
  2862.     PVOID lpData;
  2863.     ULONG ulLength;
  2864.     PVOID lpSectionGlobalData;
  2865.     ULONG ulSectionGlobalDataLength;
  2866.     PVOID lpSectionBase;
  2867.     ULONG ulSectionTotalLength;
  2868.     HANDLE hActCtx;
  2869.     ULONG ulAssemblyRosterIndex;
  2870.   } ACTCTX_SECTION_KEYED_DATA_2600,*PACTCTX_SECTION_KEYED_DATA_2600;
  2871.  
  2872.   typedef const ACTCTX_SECTION_KEYED_DATA_2600 *PCACTCTX_SECTION_KEYED_DATA_2600;
  2873.  
  2874.   typedef struct tagACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA {
  2875.     PVOID lpInformation;
  2876.     PVOID lpSectionBase;
  2877.     ULONG ulSectionLength;
  2878.     PVOID lpSectionGlobalDataBase;
  2879.     ULONG ulSectionGlobalDataLength;
  2880.   } ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA,*PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  2881.  
  2882.   typedef const ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA *PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
  2883.  
  2884.   typedef struct tagACTCTX_SECTION_KEYED_DATA {
  2885.     ULONG cbSize;
  2886.     ULONG ulDataFormatVersion;
  2887.     PVOID lpData;
  2888.     ULONG ulLength;
  2889.     PVOID lpSectionGlobalData;
  2890.     ULONG ulSectionGlobalDataLength;
  2891.     PVOID lpSectionBase;
  2892.     ULONG ulSectionTotalLength;
  2893.     HANDLE hActCtx;
  2894.     ULONG ulAssemblyRosterIndex;
  2895.  
  2896.     ULONG ulFlags;
  2897.     ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA AssemblyMetadata;
  2898.   } ACTCTX_SECTION_KEYED_DATA,*PACTCTX_SECTION_KEYED_DATA;
  2899.  
  2900.   typedef const ACTCTX_SECTION_KEYED_DATA *PCACTCTX_SECTION_KEYED_DATA;
  2901.  
  2902. #define FIND_ACTCTX_SECTION_KEY_RETURN_HACTCTX 0x1
  2903. #define FIND_ACTCTX_SECTION_KEY_RETURN_FLAGS 0x2
  2904. #define FIND_ACTCTX_SECTION_KEY_RETURN_ASSEMBLY_METADATA 0x4
  2905.  
  2906. #ifdef UNICODE
  2907. #define FindActCtxSectionString FindActCtxSectionStringW
  2908. #else
  2909. #define FindActCtxSectionString FindActCtxSectionStringA
  2910. #endif
  2911.  
  2912.   WINBASEAPI WINBOOL WINAPI FindActCtxSectionStringA(DWORD dwFlags,const GUID *lpExtensionGuid,ULONG ulSectionId,LPCSTR lpStringToFind,PACTCTX_SECTION_KEYED_DATA ReturnedData);
  2913.   WINBASEAPI WINBOOL WINAPI FindActCtxSectionStringW(DWORD dwFlags,const GUID *lpExtensionGuid,ULONG ulSectionId,LPCWSTR lpStringToFind,PACTCTX_SECTION_KEYED_DATA ReturnedData);
  2914.   WINBASEAPI WINBOOL WINAPI FindActCtxSectionGuid(DWORD dwFlags,const GUID *lpExtensionGuid,ULONG ulSectionId,const GUID *lpGuidToFind,PACTCTX_SECTION_KEYED_DATA ReturnedData);
  2915.  
  2916. #ifndef RC_INVOKED
  2917. #ifndef ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED
  2918.  
  2919.   typedef struct _ACTIVATION_CONTEXT_BASIC_INFORMATION {
  2920.     HANDLE hActCtx;
  2921.     DWORD dwFlags;
  2922.   } ACTIVATION_CONTEXT_BASIC_INFORMATION,*PACTIVATION_CONTEXT_BASIC_INFORMATION;
  2923.  
  2924.   typedef const struct _ACTIVATION_CONTEXT_BASIC_INFORMATION *PCACTIVATION_CONTEXT_BASIC_INFORMATION;
  2925.  
  2926. #define ACTIVATION_CONTEXT_BASIC_INFORMATION_DEFINED 1
  2927. #endif
  2928. #endif
  2929.  
  2930. #define QUERY_ACTCTX_FLAG_USE_ACTIVE_ACTCTX 0x4
  2931. #define QUERY_ACTCTX_FLAG_ACTCTX_IS_HMODULE 0x8
  2932. #define QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS 0x10
  2933. #define QUERY_ACTCTX_FLAG_NO_ADDREF 0x80000000
  2934.  
  2935.   WINBASEAPI WINBOOL WINAPI QueryActCtxW(DWORD dwFlags,HANDLE hActCtx,PVOID pvSubInstance,ULONG ulInfoClass,PVOID pvBuffer,SIZE_T cbBuffer,SIZE_T *pcbWrittenOrRequired);
  2936.  
  2937.   typedef WINBOOL (WINAPI *PQUERYACTCTXW_FUNC)(DWORD dwFlags,HANDLE hActCtx,PVOID pvSubInstance,ULONG ulInfoClass,PVOID pvBuffer,SIZE_T cbBuffer,SIZE_T *pcbWrittenOrRequired);
  2938.  
  2939.   WINBASEAPI WINBOOL WINAPI ProcessIdToSessionId(DWORD dwProcessId,DWORD *pSessionId);
  2940.   WINBASEAPI DWORD WINAPI WTSGetActiveConsoleSessionId();
  2941.   WINBASEAPI WINBOOL WINAPI IsWow64Process(HANDLE hProcess,PBOOL Wow64Process);
  2942.   WINBASEAPI WINBOOL WINAPI GetLogicalProcessorInformation(PSYSTEM_LOGICAL_PROCESSOR_INFORMATION Buffer,PDWORD ReturnedLength);
  2943.   WINBASEAPI WINBOOL WINAPI GetNumaHighestNodeNumber(PULONG HighestNodeNumber);
  2944.   WINBASEAPI WINBOOL WINAPI GetNumaProcessorNode(UCHAR Processor,PUCHAR NodeNumber);
  2945.   WINBASEAPI WINBOOL WINAPI GetNumaNodeProcessorMask(UCHAR Node,PULONGLONG ProcessorMask);
  2946.   WINBASEAPI WINBOOL WINAPI GetNumaAvailableMemoryNode(UCHAR Node,PULONGLONG AvailableBytes);
  2947.  
  2948. #ifdef __cplusplus
  2949. }
  2950. #endif
  2951. #endif
  2952.