Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

8877 lines
174 KiB

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