home *** CD-ROM | disk | FTP | other *** search
/ Chip 2000 August / Chip_2000-08_cd1.bin / sharewar / dvcpp / _SETUP.5 / Group3 / winnt.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-03-08  |  49.8 KB  |  1,612 lines

  1. #ifndef _WINNT_H
  2. #define _WINNT_H
  3.  
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7.  
  8. #include <winerror.h>
  9.  
  10. #ifndef RC_INVOKED
  11. #include <string.h>
  12.  
  13. #ifndef VOID
  14. #define VOID void
  15. typedef char CHAR;
  16. typedef short SHORT;
  17. typedef long LONG;
  18. #endif
  19. typedef CHAR CCHAR;
  20. typedef unsigned char UCHAR,*PUCHAR;
  21. typedef unsigned short USHORT,*PUSHORT;
  22. typedef unsigned long ULONG,*PULONG;
  23. #if (!defined(_WCHAR_T_DEFINED) && !defined(_WCHAR_T_)) || defined(__need_wchar_t)
  24. #define _WCHAR_T_DEFINED
  25. #define _WCHAR_T_
  26. #undef __need_wchar_t
  27. #ifndef __cplusplus
  28. typedef unsigned short wchar_t;
  29. #endif
  30. #endif
  31. typedef wchar_t WCHAR;
  32. typedef WCHAR *PWCHAR,*LPWCH,*PWCH,*NWPSTR,*LPWSTR,*PWSTR;
  33. typedef CONST WCHAR *LPCWCH,*PCWCH,*LPCWSTR,*PCWSTR;
  34. typedef CHAR *PCHAR,*LPCH,*PCH,*NPSTR,*LPSTR,*PSTR;
  35. typedef CONST CHAR *LPCCH,*PCSTR,*LPCSTR;
  36. #ifndef _TCHAR_DEFINED
  37. #define _TCHAR_DEFINED
  38. #ifdef UNICODE
  39. typedef WCHAR TCHAR;
  40. #else
  41. typedef CHAR TCHAR;
  42. #endif
  43. #endif
  44. typedef TCHAR TBYTE,*PTCH,*PTBYTE;
  45. typedef TCHAR *LPTCH,*PTSTR,*LPTSTR,*LP;
  46. typedef const TCHAR *LPCTSTR;
  47. #ifdef UNICODE
  48. #define TEXT(q) L##q
  49. #else
  50. #define TEXT(q) q
  51. #endif
  52. #ifndef _T
  53. #define _T TEXT
  54. #endif
  55. typedef SHORT *PSHORT;
  56. typedef LONG *PLONG;
  57. typedef void *HANDLE;
  58. typedef HANDLE *PHANDLE,*LPHANDLE;
  59. #ifdef STRICT
  60. #define DECLARE_HANDLE(n) typedef struct n##__{int i;}*n
  61. #else
  62. #define DECLARE_HANDLE(n) typedef HANDLE n
  63. #endif
  64. typedef DWORD LCID;
  65. typedef PDWORD PLCID;
  66. typedef WORD LANGID;
  67. /*FIXME: Which version of BC supports __int64? */
  68. #ifdef __GNUC__
  69. #define HAVE_INT64
  70. #define _INTEGRAL_MAX_BITS 64
  71. #define __int64 long long
  72. #elif defined(_MSC_VER) || defined(__LCC__)
  73. #define HAVE_INT64
  74. #endif
  75. #if defined(HAVE_INT64) || (defined(_INTEGRAL_MAX_BITS) && _INTEGRAL_MAX_BITS >= 64)
  76. typedef __int64 LONGLONG;
  77. typedef unsigned __int64 DWORDLONG;
  78. #else
  79. typedef double LONGLONG,DWORDLONG;
  80. #endif
  81. typedef LONGLONG *PLONGLONG;
  82. typedef DWORDLONG *PDWORDLONG;
  83. typedef DWORDLONG ULONGLONG,*PULONGLONG;
  84. typedef LONGLONG USN;
  85. #define Int32x32To64(a,b) ((LONGLONG)(a)*(LONGLONG)(b))
  86. #define UInt32x32To64(a,b) ((DWORDLONG)(a)*(DWORDLONG)(b))
  87. #ifdef HAVE_INT64
  88. #define Int64ShllMod32(a,b) ((DWORDLONG)(a)<<(b))
  89. #define Int64ShraMod32(a,b) ((LONGLONG)(a)>>(b))
  90. #define Int64ShrlMod32(a,b) ((DWORDLONG)(a)>>(b))
  91. #endif
  92. #define UNICODE_NULL ((WCHAR)0)
  93. typedef BYTE BOOLEAN,*PBOOLEAN;
  94. #endif
  95.  
  96. #define NTAPI __stdcall
  97. #define COMPRESSION_FORMAT_NONE 0
  98. #define COMPRESSION_FORMAT_DEFAULT 1
  99. #define COMPRESSION_FORMAT_LZNT1 2
  100. #define COMPRESSION_ENGINE_STANDARD 0
  101. #define COMPRESSION_ENGINE_MAXIMUM 256
  102. #define ACCESS_ALLOWED_ACE_TYPE    0
  103. #define ACCESS_DENIED_ACE_TYPE    1
  104. #define ANYSIZE_ARRAY 1
  105. #define SYSTEM_AUDIT_ACE_TYPE    2
  106. #define SYSTEM_ALARM_ACE_TYPE    3
  107. #define OBJECT_INHERIT_ACE    1
  108. #define CONTAINER_INHERIT_ACE    2
  109. #define NO_PROPAGATE_INHERIT_ACE    4
  110. #define INHERIT_ONLY_ACE    8
  111. #define VALID_INHERIT_FLAGS    16
  112. #define SUCCESSFUL_ACCESS_ACE_FLAG    64
  113. #define FAILED_ACCESS_ACE_FLAG    128
  114. #define DELETE    0x00010000L
  115. #define READ_CONTROL    0x20000L
  116. #define WRITE_DAC    0x40000L
  117. #define WRITE_OWNER    0x80000L
  118. #define SYNCHRONIZE    0x100000L
  119. #define STANDARD_RIGHTS_REQUIRED    0xF0000
  120. #define STANDARD_RIGHTS_READ    0x20000
  121. #define STANDARD_RIGHTS_WRITE    0x20000
  122. #define STANDARD_RIGHTS_EXECUTE    0x20000
  123. #define STANDARD_RIGHTS_ALL    0x1F0000
  124. #define SPECIFIC_RIGHTS_ALL    0xFFFF
  125. #define ACCESS_SYSTEM_SECURITY    0x1000000
  126. #define MAXIMUM_ALLOWED    0x2000000
  127. #define GENERIC_READ    0x80000000
  128. #define GENERIC_WRITE    0x40000000
  129. #define GENERIC_EXECUTE    0x20000000
  130. #define GENERIC_ALL    0x10000000
  131. #define FILE_READ_DATA    1
  132. #define FILE_LIST_DIRECTORY    1
  133. #define FILE_WRITE_DATA    2
  134. #define FILE_ADD_FILE    2
  135. #define FILE_APPEND_DATA    4
  136. #define FILE_ADD_SUBDIRECTORY    4
  137. #define FILE_CREATE_PIPE_INSTANCE    4
  138. #define FILE_READ_EA    8
  139. #define FILE_READ_PROPERTIES    8
  140. #define FILE_WRITE_EA    16
  141. #define FILE_WRITE_PROPERTIES    16
  142. #define FILE_EXECUTE    32
  143. #define FILE_TRAVERSE    32
  144. #define FILE_DELETE_CHILD    64
  145. #define FILE_READ_ATTRIBUTES    128
  146. #define FILE_WRITE_ATTRIBUTES    256
  147. #define FILE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x1FF)
  148. #define FILE_GENERIC_READ (STANDARD_RIGHTS_READ|FILE_READ_DATA|FILE_READ_ATTRIBUTES|FILE_READ_EA|SYNCHRONIZE)
  149. #define FILE_GENERIC_WRITE (STANDARD_RIGHTS_WRITE|FILE_WRITE_DATA|FILE_WRITE_ATTRIBUTES|FILE_WRITE_EA|FILE_APPEND_DATA|SYNCHRONIZE)
  150. #define FILE_GENERIC_EXECUTE (STANDARD_RIGHTS_EXECUTE|FILE_READ_ATTRIBUTES|FILE_EXECUTE|SYNCHRONIZE)
  151. #define FILE_SHARE_READ    1
  152. #define FILE_SHARE_WRITE 2
  153. #define FILE_SHARE_DELETE 4
  154. #define FILE_ATTRIBUTE_READONLY    1
  155. #define FILE_ATTRIBUTE_HIDDEN    2
  156. #define FILE_ATTRIBUTE_SYSTEM    4
  157. #define FILE_ATTRIBUTE_DIRECTORY    16
  158. #define FILE_ATTRIBUTE_ARCHIVE    32
  159. #define FILE_ATTRIBUTE_NORMAL    128
  160. #define FILE_ATTRIBUTE_TEMPORARY    256
  161. #define FILE_ATTRIBUTE_COMPRESSED    2048
  162. #define FILE_ATTRIBUTE_OFFLINE    0x1000
  163. #define FILE_NOTIFY_CHANGE_FILE_NAME    1
  164. #define FILE_NOTIFY_CHANGE_DIR_NAME    2
  165. #define FILE_NOTIFY_CHANGE_ATTRIBUTES    4
  166. #define FILE_NOTIFY_CHANGE_SIZE    8
  167. #define FILE_NOTIFY_CHANGE_LAST_WRITE    16
  168. #define FILE_NOTIFY_CHANGE_LAST_ACCESS  32
  169. #define FILE_NOTIFY_CHANGE_CREATION    64
  170. #define FILE_NOTIFY_CHANGE_SECURITY    256
  171. #define MAILSLOT_NO_MESSAGE    ((DWORD)-1)
  172. #define MAILSLOT_WAIT_FOREVER    ((DWORD)-1)
  173. #define FILE_CASE_SENSITIVE_SEARCH    1
  174. #define FILE_CASE_PRESERVED_NAMES    2
  175. #define FILE_UNICODE_ON_DISK    4
  176. #define FILE_PERSISTENT_ACLS    8
  177. #define FILE_FILE_COMPRESSION    16
  178. #define FILE_VOLUME_IS_COMPRESSED    0x8000
  179. #define IO_COMPLETION_MODIFY_STATE    2
  180. #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|3)
  181. #define DUPLICATE_CLOSE_SOURCE    1
  182. #define DUPLICATE_SAME_ACCESS    2
  183. #define PROCESS_TERMINATE    1
  184. #define PROCESS_CREATE_THREAD    2
  185. #define PROCESS_VM_OPERATION    8
  186. #define PROCESS_VM_READ    16
  187. #define PROCESS_VM_WRITE    32
  188. #define PROCESS_DUP_HANDLE    64
  189. #define PROCESS_CREATE_PROCESS    128
  190. #define PROCESS_SET_QUOTA    256
  191. #define PROCESS_SET_INFORMATION    512
  192. #define PROCESS_QUERY_INFORMATION    1024
  193. #define PROCESS_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0xFFF)
  194. #define THREAD_TERMINATE    1
  195. #define THREAD_SUSPEND_RESUME    2
  196. #define THREAD_GET_CONTEXT    8
  197. #define THREAD_SET_CONTEXT    16
  198. #define THREAD_SET_INFORMATION    32
  199. #define THREAD_QUERY_INFORMATION    64
  200. #define THREAD_SET_THREAD_TOKEN    128
  201. #define THREAD_IMPERSONATE    256
  202. #define THREAD_DIRECT_IMPERSONATION    0x200
  203. #define THREAD_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3FF)
  204. #define EXCEPTION_NONCONTINUABLE    1
  205. #define EXCEPTION_MAXIMUM_PARAMETERS 15
  206. #define SECURITY_NULL_SID_AUTHORITY    {0,0,0,0,0,0}
  207. #define SECURITY_WORLD_SID_AUTHORITY    {0,0,0,0,0,1}
  208. #define SECURITY_LOCAL_SID_AUTHORITY    {0,0,0,0,0,2}
  209. #define SECURITY_CREATOR_SID_AUTHORITY    {0,0,0,0,0,3}
  210. #define SECURITY_NON_UNIQUE_AUTHORITY    {0,0,0,0,0,4}
  211. #define SECURITY_NT_AUTHORITY    {0,0,0,0,0,5}
  212. #define SE_CREATE_TOKEN_NAME    TEXT("SeCreateTokenPrivilege")
  213. #define SE_ASSIGNPRIMARYTOKEN_NAME    TEXT("SeAssignPrimaryTokenPrivilege")
  214. #define SE_LOCK_MEMORY_NAME    TEXT("SeLockMemoryPrivilege")
  215. #define SE_INCREASE_QUOTA_NAME    TEXT("SeIncreaseQuotaPrivilege")
  216. #define SE_UNSOLICITED_INPUT_NAME    TEXT("SeUnsolicitedInputPrivilege")
  217. #define SE_MACHINE_ACCOUNT_NAME TEXT("SeMachineAccountPrivilege")
  218. #define SE_TCB_NAME    TEXT("SeTcbPrivilege")
  219. #define SE_SECURITY_NAME    TEXT("SeSecurityPrivilege")
  220. #define SE_TAKE_OWNERSHIP_NAME    TEXT("SeTakeOwnershipPrivilege")
  221. #define SE_LOAD_DRIVER_NAME    TEXT("SeLoadDriverPrivilege")
  222. #define SE_SYSTEM_PROFILE_NAME    TEXT("SeSystemProfilePrivilege")
  223. #define SE_SYSTEMTIME_NAME    TEXT("SeSystemtimePrivilege")
  224. #define SE_PROF_SINGLE_PROCESS_NAME    TEXT("SeProfileSingleProcessPrivilege")
  225. #define SE_INC_BASE_PRIORITY_NAME    TEXT("SeIncreaseBasePriorityPrivilege")
  226. #define SE_CREATE_PAGEFILE_NAME TEXT("SeCreatePagefilePrivilege")
  227. #define SE_CREATE_PERMANENT_NAME    TEXT("SeCreatePermanentPrivilege")
  228. #define SE_BACKUP_NAME TEXT("SeBackupPrivilege")
  229. #define SE_RESTORE_NAME    TEXT("SeRestorePrivilege")
  230. #define SE_SHUTDOWN_NAME    TEXT("SeShutdownPrivilege")
  231. #define SE_DEBUG_NAME    TEXT("SeDebugPrivilege")
  232. #define SE_AUDIT_NAME    TEXT("SeAuditPrivilege")
  233. #define SE_SYSTEM_ENVIRONMENT_NAME    TEXT("SeSystemEnvironmentPrivilege")
  234. #define SE_CHANGE_NOTIFY_NAME    TEXT("SeChangeNotifyPrivilege")
  235. #define SE_REMOTE_SHUTDOWN_NAME    TEXT("SeRemoteShutdownPrivilege")
  236. #define LANG_BULGARIAN     2
  237. #define LANG_CHINESE    4
  238. #define LANG_CROATIAN    26
  239. #define LANG_CZECH    5
  240. #define LANG_DANISH    6
  241. #define LANG_DUTCH    19
  242. #define LANG_ENGLISH    9
  243. #define LANG_FINNISH    11
  244. #define LANG_FRENCH    12
  245. #define LANG_GERMAN    7
  246. #define LANG_GREEK    8
  247. #define LANG_HUNGARIAN    14
  248. #define LANG_ICELANDIC    15
  249. #define LANG_ITALIAN    16
  250. #define LANG_JAPANESE    17
  251. #define LANG_KOREAN    18
  252. #define LANG_NEUTRAL    0
  253. #define LANG_NORWEGIAN    20
  254. #define LANG_POLISH    21
  255. #define LANG_PORTUGUESE    22
  256. #define LANG_ROMANIAN    24
  257. #define LANG_RUSSIAN    25
  258. #define LANG_SLOVAK    27
  259. #define LANG_SLOVENIAN    36
  260. #define LANG_SPANISH    10
  261. #define LANG_SWEDISH    29
  262. #define LANG_TURKISH    31
  263. #define SUBLANG_CHINESE_SIMPLIFIED    2
  264. #define SUBLANG_CHINESE_TRADITIONAL    1
  265. #define SUBLANG_CHINESE_HONGKONG    3
  266. #define SUBLANG_CHINESE_SINGAPORE    4
  267. #define SUBLANG_DEFAULT    1
  268. #define SUBLANG_DUTCH    1
  269. #define SUBLANG_DUTCH_BELGIAN    2
  270. #define SUBLANG_ENGLISH_AUS    3
  271. #define SUBLANG_ENGLISH_CAN    4
  272. #define SUBLANG_ENGLISH_EIRE    6
  273. #define SUBLANG_ENGLISH_NZ    5
  274. #define SUBLANG_ENGLISH_UK    2
  275. #define SUBLANG_ENGLISH_US    1
  276. #define SUBLANG_FRENCH    1
  277. #define SUBLANG_FRENCH_BELGIAN    2
  278. #define SUBLANG_FRENCH_CANADIAN    3
  279. #define SUBLANG_FRENCH_SWISS    4
  280. #define SUBLANG_GERMAN    1
  281. #define SUBLANG_GERMAN_AUSTRIAN    3
  282. #define SUBLANG_GERMAN_SWISS    2
  283. #define SUBLANG_ITALIAN    1
  284. #define SUBLANG_ITALIAN_SWISS    2
  285. #define SUBLANG_NEUTRAL    0
  286. #define SUBLANG_NORWEGIAN_BOKMAL    1
  287. #define SUBLANG_NORWEGIAN_NYNORSK    2
  288. #define SUBLANG_PORTUGUESE    2
  289. #define SUBLANG_PORTUGUESE_BRAZILIAN    1
  290. #define SUBLANG_SPANISH    1
  291. #define SUBLANG_SPANISH_MEXICAN    2
  292. #define SUBLANG_SPANISH_MODERN    3
  293. #define SUBLANG_SYS_DEFAULT    2
  294. #define NLS_VALID_LOCALE_MASK    1048575
  295. #define SORT_DEFAULT    0
  296. #define SORT_JAPANESE_XJIS    0
  297. #define SORT_JAPANESE_UNICODE    1
  298. #define SORT_CHINESE_BIG5    0
  299. #define SORT_CHINESE_UNICODE    1
  300. #define SORT_KOREAN_KSC    0
  301. #define SORT_KOREAN_UNICODE    1
  302. #define ACL_REVISION    2
  303. #define MINCHAR    0x80
  304. #define MAXCHAR    0x7f
  305. #define MINSHORT    0x8000
  306. #define MAXSHORT    0x7fff
  307. #define MINLONG    0x80000000
  308. #define MAXLONG    0x7fffffff
  309. #define MAXBYTE    0xff
  310. #define MAXWORD    0xffff
  311. #define MAXDWORD    0xffffffff
  312. #define PROCESSOR_INTEL_386 386
  313. #define PROCESSOR_INTEL_486 486
  314. #define PROCESSOR_INTEL_PENTIUM 586
  315. #define PROCESSOR_MIPS_R4000 4000
  316. #define PROCESSOR_ALPHA_21064 21064
  317. #define PROCESSOR_ARCHITECTURE_INTEL 0
  318. #define PROCESSOR_ARCHITECTURE_MIPS 1
  319. #define PROCESSOR_ARCHITECTURE_ALPHA 2
  320. #define PROCESSOR_ARCHITECTURE_PPC 3
  321. #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
  322. #define PAGE_READONLY 2
  323. #define PAGE_READWRITE 4
  324. #define PAGE_WRITECOPY 8
  325. #define FILE_ACTION_ADDED    1
  326. #define FILE_ACTION_REMOVED    2
  327. #define FILE_ACTION_MODIFIED    3
  328. #define FILE_ACTION_RENAMED_OLD_NAME    4
  329. #define FILE_ACTION_RENAMED_NEW_NAME    5
  330. #define HEAP_NO_SERIALIZE 1
  331. #define HEAP_GROWABLE 2
  332. #define HEAP_GENERATE_EXCEPTIONS 4
  333. #define HEAP_ZERO_MEMORY 8
  334. #define HEAP_REALLOC_IN_PLACE_ONLY 16
  335. #define HEAP_TAIL_CHECKING_ENABLED 32
  336. #define HEAP_FREE_CHECKING_ENABLED 64
  337. #define HEAP_DISABLE_COALESCE_ON_FREE 128
  338. #define HEAP_CREATE_ALIGN_16 0x0000
  339. #define HEAP_CREATE_ENABLE_TRACING 0x20000
  340. #define HEAP_MAXIMUM_TAG 0xFFF
  341. #define HEAP_PSEUDO_TAG_FLAG 0x8000
  342. #define HEAP_TAG_SHIFT 16
  343. #define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b)+(o)<<16)))
  344. #define KEY_QUERY_VALUE 1
  345. #define KEY_SET_VALUE 2
  346. #define KEY_CREATE_SUB_KEY 4
  347. #define KEY_ENUMERATE_SUB_KEYS 8
  348. #define KEY_NOTIFY 16
  349. #define KEY_CREATE_LINK 32
  350. #define KEY_WRITE 0x20006
  351. #define KEY_EXECUTE 0x20019
  352. #define KEY_READ 0x20019
  353. #define KEY_ALL_ACCESS 0xf003f
  354. #define REG_WHOLE_HIVE_VOLATILE    1
  355. #define REG_REFRESH_HIVE    2
  356. #define REG_NO_LAZY_FLUSH    4
  357. #define OWNER_SECURITY_INFORMATION 1
  358. #define GROUP_SECURITY_INFORMATION 2
  359. #define DACL_SECURITY_INFORMATION 4
  360. #define SACL_SECURITY_INFORMATION 8
  361. #define MAXIMUM_PROCESSORS 32
  362. #define PAGE_EXECUTE 16
  363. #define PAGE_EXECUTE_READ 32
  364. #define PAGE_EXECUTE_READWRITE 64
  365. #define PAGE_GUARD 256
  366. #define PAGE_NOACCESS 1
  367. #define PAGE_NOCACHE 512
  368. #define MEM_COMMIT 4096
  369. #define MEM_FREE 65536
  370. #define MEM_RESERVE 8192
  371. #define MEM_IMAGE 16777216
  372. #define MEM_MAPPED 262144
  373. #define MEM_PRIVATE 131072
  374. #define MEM_DECOMMIT 16384
  375. #define MEM_RELEASE 32768
  376. #define PAGE_EXECUTE_WRITECOPY 128
  377. #define SECTION_EXTEND_SIZE 16
  378. #define SECTION_MAP_READ 4
  379. #define SECTION_MAP_WRITE 2
  380. #define SECTION_QUERY 1
  381. #define SECTION_ALL_ACCESS 0xf001f
  382. #define MESSAGE_RESOURCE_UNICODE 1
  383. #define RTL_CRITSECT_TYPE 0
  384. #define RTL_RESOURCE_TYPE 1
  385. #define FIELD_OFFSET(t,f) ((LONG)&(((t*)0)->f))
  386. #define IMAGE_SIZEOF_FILE_HEADER    20
  387. #define IMAGE_FILE_RELOCS_STRIPPED    1
  388. #define IMAGE_FILE_EXECUTABLE_IMAGE    2
  389. #define IMAGE_FILE_LINE_NUMS_STRIPPED    4
  390. #define IMAGE_FILE_LOCAL_SYMS_STRIPPED    8
  391. #define IMAGE_FILE_BYTES_REVERSED_LO    128
  392. #define IMAGE_FILE_32BIT_MACHINE    256
  393. #define IMAGE_FILE_DEBUG_STRIPPED    512
  394. #define IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP    1024
  395. #define IMAGE_FILE_NET_RUN_FROM_SWAP    2048
  396. #define IMAGE_FILE_SYSTEM    4096
  397. #define IMAGE_FILE_DLL    8192
  398. #define IMAGE_FILE_UP_SYSTEM_ONLY    16384
  399. #define IMAGE_FILE_BYTES_REVERSED_HI    32768
  400. #define IMAGE_FILE_MACHINE_UNKNOWN    0
  401. #define IMAGE_FILE_MACHINE_I386    332
  402. #define IMAGE_FILE_MACHINE_R3000    354
  403. #define IMAGE_FILE_MACHINE_R4000    358
  404. #define IMAGE_FILE_MACHINE_R10000    360
  405. #define IMAGE_FILE_MACHINE_ALPHA    388
  406. #define IMAGE_FILE_MACHINE_POWERPC    496
  407. #define IMAGE_DOS_SIGNATURE 0x5A4D
  408. #define IMAGE_OS2_SIGNATURE 0x454E
  409. #define IMAGE_OS2_SIGNATURE_LE 0x454C
  410. #define IMAGE_VXD_SIGNATURE 0x454C
  411. #define IMAGE_NT_SIGNATURE 0x00004550
  412. #define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b
  413. #define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107
  414. #define IMAGE_SEPARATE_DEBUG_SIGNATURE 0x4944
  415. #define IMAGE_NUMBEROF_DIRECTORY_ENTRIES 16
  416. #define IMAGE_SIZEOF_ROM_OPTIONAL_HEADER 56
  417. #define IMAGE_SIZEOF_STD_OPTIONAL_HEADER 28
  418. #define IMAGE_SIZEOF_NT_OPTIONAL_HEADER 224
  419. #define IMAGE_SIZEOF_SHORT_NAME 8
  420. #define IMAGE_SIZEOF_SECTION_HEADER 40
  421. #define IMAGE_SIZEOF_SYMBOL 18
  422. #define IMAGE_SIZEOF_AUX_SYMBOL 18
  423. #define IMAGE_SIZEOF_RELOCATION 10
  424. #define IMAGE_SIZEOF_BASE_RELOCATION 8
  425. #define IMAGE_SIZEOF_LINENUMBER 6
  426. #define IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR 60
  427. #define SIZEOF_RFPO_DATA 16
  428. #define IMAGE_SUBSYSTEM_UNKNOWN    0
  429. #define IMAGE_SUBSYSTEM_NATIVE    1
  430. #define IMAGE_SUBSYSTEM_WINDOWS_GUI    2
  431. #define IMAGE_SUBSYSTEM_WINDOWS_CUI    3
  432. #define IMAGE_SUBSYSTEM_OS2_CUI    5
  433. #define IMAGE_SUBSYSTEM_POSIX_CUI    7
  434. #define IMAGE_FIRST_SECTION(h) ((PIMAGE_SECTION_HEADER) (DWORD)h+FIELD_OFFSET(IMAGE_NT_HEADERS,OptionalHeader)+((PIMAGE_NT_HEADERS)(h))->FileHeader.SizeOfOptionalHeader))
  435. #define IMAGE_DIRECTORY_ENTRY_EXPORT    0
  436. #define IMAGE_DIRECTORY_ENTRY_IMPORT    1
  437. #define IMAGE_DIRECTORY_ENTRY_RESOURCE    2
  438. #define IMAGE_DIRECTORY_ENTRY_EXCEPTION    3
  439. #define IMAGE_DIRECTORY_ENTRY_SECURITY    4
  440. #define IMAGE_DIRECTORY_ENTRY_BASERELOC    5
  441. #define IMAGE_DIRECTORY_ENTRY_DEBUG    6
  442. #define IMAGE_DIRECTORY_ENTRY_COPYRIGHT    7
  443. #define IMAGE_DIRECTORY_ENTRY_GLOBALPTR    8
  444. #define IMAGE_DIRECTORY_ENTRY_TLS    9
  445. #define IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG    10
  446. #define IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT    11
  447. #define IMAGE_DIRECTORY_ENTRY_IAT    12
  448. #define IMAGE_SCN_TYPE_NO_PAD 8
  449. #define IMAGE_SCN_CNT_CODE 32
  450. #define IMAGE_SCN_CNT_INITIALIZED_DATA 64
  451. #define IMAGE_SCN_CNT_UNINITIALIZED_DATA 128
  452. #define IMAGE_SCN_LNK_OTHER 256
  453. #define IMAGE_SCN_LNK_INFO 512
  454. #define IMAGE_SCN_LNK_REMOVE 2048
  455. #define IMAGE_SCN_LNK_COMDAT 4096
  456. #define IMAGE_SCN_MEM_FARDATA 0x8000
  457. #define IMAGE_SCN_MEM_PURGEABLE 0x20000
  458. #define IMAGE_SCN_MEM_16BIT 0x20000
  459. #define IMAGE_SCN_MEM_LOCKED  0x40000
  460. #define IMAGE_SCN_MEM_PRELOAD 0x80000
  461. #define IMAGE_SCN_ALIGN_1BYTES 0x100000
  462. #define IMAGE_SCN_ALIGN_2BYTES 0x200000
  463. #define IMAGE_SCN_ALIGN_4BYTES 0x300000
  464. #define IMAGE_SCN_ALIGN_8BYTES 0x400000
  465. #define IMAGE_SCN_ALIGN_16BYTES 0x500000
  466. #define IMAGE_SCN_ALIGN_32BYTES 0x600000
  467. #define IMAGE_SCN_ALIGN_64BYTES 0x700000
  468. #define IMAGE_SCN_LNK_NRELOC_OVFL 0x1000000
  469. #define IMAGE_SCN_MEM_DISCARDABLE 0x2000000
  470. #define IMAGE_SCN_MEM_NOT_CACHED 0x4000000
  471. #define IMAGE_SCN_MEM_NOT_PAGED 0x8000000
  472. #define IMAGE_SCN_MEM_SHARED 0x10000000
  473. #define IMAGE_SCN_MEM_EXECUTE 0x20000000
  474. #define IMAGE_SCN_MEM_READ 0x40000000
  475. #define IMAGE_SCN_MEM_WRITE 0x80000000
  476. #define IMAGE_SYM_UNDEFINED    0
  477. #define IMAGE_SYM_ABSOLUTE (-1)
  478. #define IMAGE_SYM_DEBUG    (-2)
  479. #define IMAGE_SYM_TYPE_NULL 0
  480. #define IMAGE_SYM_TYPE_VOID 1
  481. #define IMAGE_SYM_TYPE_CHAR 2
  482. #define IMAGE_SYM_TYPE_SHORT 3
  483. #define IMAGE_SYM_TYPE_INT 4
  484. #define IMAGE_SYM_TYPE_LONG 5
  485. #define IMAGE_SYM_TYPE_FLOAT 6
  486. #define IMAGE_SYM_TYPE_DOUBLE 7
  487. #define IMAGE_SYM_TYPE_STRUCT 8
  488. #define IMAGE_SYM_TYPE_UNION 9
  489. #define IMAGE_SYM_TYPE_ENUM 10
  490. #define IMAGE_SYM_TYPE_MOE 11
  491. #define IMAGE_SYM_TYPE_BYTE 12
  492. #define IMAGE_SYM_TYPE_WORD 13
  493. #define IMAGE_SYM_TYPE_UINT 14
  494. #define IMAGE_SYM_TYPE_DWORD 15
  495. #define IMAGE_SYM_TYPE_PCODE 32768
  496. #define IMAGE_SYM_DTYPE_NULL 0
  497. #define IMAGE_SYM_DTYPE_POINTER 1
  498. #define IMAGE_SYM_DTYPE_FUNCTION 2
  499. #define IMAGE_SYM_DTYPE_ARRAY 3
  500. #define IMAGE_SYM_CLASS_END_OF_FUNCTION    (-1)
  501. #define IMAGE_SYM_CLASS_NULL 0
  502. #define IMAGE_SYM_CLASS_AUTOMATIC 1
  503. #define IMAGE_SYM_CLASS_EXTERNAL 2
  504. #define IMAGE_SYM_CLASS_STATIC 3
  505. #define IMAGE_SYM_CLASS_REGISTER 4
  506. #define IMAGE_SYM_CLASS_EXTERNAL_DEF 5
  507. #define IMAGE_SYM_CLASS_LABEL 6
  508. #define IMAGE_SYM_CLASS_UNDEFINED_LABEL 7
  509. #define IMAGE_SYM_CLASS_MEMBER_OF_STRUCT 8
  510. #define IMAGE_SYM_CLASS_ARGUMENT 9
  511. #define IMAGE_SYM_CLASS_STRUCT_TAG 10
  512. #define IMAGE_SYM_CLASS_MEMBER_OF_UNION 11
  513. #define IMAGE_SYM_CLASS_UNION_TAG 12
  514. #define IMAGE_SYM_CLASS_TYPE_DEFINITION 13
  515. #define IMAGE_SYM_CLASS_UNDEFINED_STATIC 14
  516. #define IMAGE_SYM_CLASS_ENUM_TAG 15
  517. #define IMAGE_SYM_CLASS_MEMBER_OF_ENUM 16
  518. #define IMAGE_SYM_CLASS_REGISTER_PARAM 17
  519. #define IMAGE_SYM_CLASS_BIT_FIELD 18
  520. #define IMAGE_SYM_CLASS_FAR_EXTERNAL 68
  521. #define IMAGE_SYM_CLASS_BLOCK 100
  522. #define IMAGE_SYM_CLASS_FUNCTION 101
  523. #define IMAGE_SYM_CLASS_END_OF_STRUCT 102
  524. #define IMAGE_SYM_CLASS_FILE 103
  525. #define IMAGE_SYM_CLASS_SECTION 104
  526. #define IMAGE_SYM_CLASS_WEAK_EXTERNAL 105
  527. #define IMAGE_COMDAT_SELECT_NODUPLICATES 1
  528. #define IMAGE_COMDAT_SELECT_ANY 2
  529. #define IMAGE_COMDAT_SELECT_SAME_SIZE 3
  530. #define IMAGE_COMDAT_SELECT_EXACT_MATCH 4
  531. #define IMAGE_COMDAT_SELECT_ASSOCIATIVE 5
  532. #define IMAGE_COMDAT_SELECT_LARGEST 6
  533. #define IMAGE_COMDAT_SELECT_NEWEST 7
  534. #define IMAGE_WEAK_EXTERN_SEARCH_NOLIBRARY 1
  535. #define IMAGE_WEAK_EXTERN_SEARCH_LIBRARY 2
  536. #define IMAGE_WEAK_EXTERN_SEARCH_ALIAS 3
  537. #define IMAGE_REL_I386_ABSOLUTE 0
  538. #define IMAGE_REL_I386_DIR16 1
  539. #define IMAGE_REL_I386_REL16 2
  540. #define IMAGE_REL_I386_DIR32 6
  541. #define IMAGE_REL_I386_DIR32NB 7
  542. #define IMAGE_REL_I386_SEG12 9
  543. #define IMAGE_REL_I386_SECTION 10
  544. #define IMAGE_REL_I386_SECREL 11
  545. #define IMAGE_REL_I386_REL32 20
  546. #define IMAGE_REL_MIPS_ABSOLUTE 0
  547. #define IMAGE_REL_MIPS_REFHALF 1
  548. #define IMAGE_REL_MIPS_REFWORD 2
  549. #define IMAGE_REL_MIPS_JMPADDR 3
  550. #define IMAGE_REL_MIPS_REFHI 4
  551. #define IMAGE_REL_MIPS_REFLO 5
  552. #define IMAGE_REL_MIPS_GPREL 6
  553. #define IMAGE_REL_MIPS_LITERAL 7
  554. #define IMAGE_REL_MIPS_SECTION 10
  555. #define IMAGE_REL_MIPS_SECREL 11
  556. #define IMAGE_REL_MIPS_SECRELLO 12
  557. #define IMAGE_REL_MIPS_SECRELHI 13
  558. #define IMAGE_REL_MIPS_REFWORDNB 34
  559. #define IMAGE_REL_MIPS_PAIR 35
  560. #define IMAGE_REL_ALPHA_ABSOLUTE 0
  561. #define IMAGE_REL_ALPHA_REFLONG 1
  562. #define IMAGE_REL_ALPHA_REFQUAD 2
  563. #define IMAGE_REL_ALPHA_GPREL32 3
  564. #define IMAGE_REL_ALPHA_LITERAL 4
  565. #define IMAGE_REL_ALPHA_LITUSE 5
  566. #define IMAGE_REL_ALPHA_GPDISP 6
  567. #define IMAGE_REL_ALPHA_BRADDR 7
  568. #define IMAGE_REL_ALPHA_HINT 8
  569. #define IMAGE_REL_ALPHA_INLINE_REFLONG 9
  570. #define IMAGE_REL_ALPHA_REFHI 10
  571. #define IMAGE_REL_ALPHA_REFLO 11
  572. #define IMAGE_REL_ALPHA_PAIR 12
  573. #define IMAGE_REL_ALPHA_MATCH 13
  574. #define IMAGE_REL_ALPHA_SECTION 14
  575. #define IMAGE_REL_ALPHA_SECREL 15
  576. #define IMAGE_REL_ALPHA_REFLONGNB 16
  577. #define IMAGE_REL_ALPHA_SECRELLO 17
  578. #define IMAGE_REL_ALPHA_SECRELHI 18
  579. #define IMAGE_REL_PPC_ABSOLUTE 0
  580. #define IMAGE_REL_PPC_ADDR64 1
  581. #define IMAGE_REL_PPC_ADDR32 2
  582. #define IMAGE_REL_PPC_ADDR24 3
  583. #define IMAGE_REL_PPC_ADDR16 4
  584. #define IMAGE_REL_PPC_ADDR14 5
  585. #define IMAGE_REL_PPC_REL24 6
  586. #define IMAGE_REL_PPC_REL14 7
  587. #define IMAGE_REL_PPC_TOCREL16 8
  588. #define IMAGE_REL_PPC_TOCREL14 9
  589. #define IMAGE_REL_PPC_ADDR32NB 10
  590. #define IMAGE_REL_PPC_SECREL 11
  591. #define IMAGE_REL_PPC_SECTION 12
  592. #define IMAGE_REL_PPC_IFGLUE 13
  593. #define IMAGE_REL_PPC_IMGLUE 14
  594. #define IMAGE_REL_PPC_SECREL16 15
  595. #define IMAGE_REL_PPC_REFHI 16
  596. #define IMAGE_REL_PPC_REFLO 17
  597. #define IMAGE_REL_PPC_PAIR 18
  598. #define IMAGE_REL_PPC_TYPEMASK 255
  599. #define IMAGE_REL_PPC_NEG 256
  600. #define IMAGE_REL_PPC_BRTAKEN 512
  601. #define IMAGE_REL_PPC_BRNTAKEN 1024
  602. #define IMAGE_REL_PPC_TOCDEFN 2048
  603. #define IMAGE_REL_BASED_ABSOLUTE 0
  604. #define IMAGE_REL_BASED_HIGH 1
  605. #define IMAGE_REL_BASED_LOW 2
  606. #define IMAGE_REL_BASED_HIGHLOW 3
  607. #define IMAGE_REL_BASED_HIGHADJ 4
  608. #define IMAGE_REL_BASED_MIPS_JMPADDR 5
  609. #define IMAGE_ARCHIVE_START_SIZE 8
  610. #define IMAGE_ARCHIVE_START "!<arch>\n"
  611. #define IMAGE_ARCHIVE_END "`\n"
  612. #define IMAGE_ARCHIVE_PAD "\n"
  613. #define IMAGE_ARCHIVE_LINKER_MEMBER "/               "
  614. #define IMAGE_ARCHIVE_LONGNAMES_MEMBER "//              "
  615. #define IMAGE_ORDINAL_FLAG 0x80000000
  616. #define IMAGE_SNAP_BY_ORDINAL(o) ((o&IMAGE_ORDINAL_FLAG)!=0)
  617. #define IMAGE_ORDINAL(o) (o&0xffff)
  618. #define IMAGE_RESOURCE_NAME_IS_STRING 0x80000000
  619. #define IMAGE_RESOURCE_DATA_IS_DIRECTORY 0x80000000
  620. #define IMAGE_DEBUG_TYPE_UNKNOWN 0
  621. #define IMAGE_DEBUG_TYPE_COFF 1
  622. #define IMAGE_DEBUG_TYPE_CODEVIEW 2
  623. #define IMAGE_DEBUG_TYPE_FPO 3
  624. #define IMAGE_DEBUG_TYPE_MISC 4
  625. #define IMAGE_DEBUG_TYPE_EXCEPTION 5
  626. #define IMAGE_DEBUG_TYPE_FIXUP 6
  627. #define IMAGE_DEBUG_TYPE_OMAP_TO_SRC 7
  628. #define IMAGE_DEBUG_TYPE_OMAP_FROM_SRC 8
  629. #define FRAME_FPO 0
  630. #define FRAME_TRAP 1
  631. #define FRAME_TSS 2
  632. #define FRAME_NONFPO 3
  633. #define IMAGE_DEBUG_MISC_EXENAME 1
  634. #define N_BTMASK 0x000F
  635. #define N_TMASK 0x0030
  636. #define N_TMASK1 0x00C0
  637. #define N_TMASK2 0x00F0
  638. #define N_BTSHFT 4
  639. #define N_TSHIFT 2
  640. #define IS_TEXT_UNICODE_ASCII16 1
  641. #define IS_TEXT_UNICODE_REVERSE_ASCII16 16
  642. #define IS_TEXT_UNICODE_STATISTICS 2
  643. #define IS_TEXT_UNICODE_REVERSE_STATISTICS 32
  644. #define IS_TEXT_UNICODE_CONTROLS 4
  645. #define IS_TEXT_UNICODE_REVERSE_CONTROLS 64
  646. #define IS_TEXT_UNICODE_SIGNATURE 8
  647. #define IS_TEXT_UNICODE_REVERSE_SIGNATURE 128
  648. #define IS_TEXT_UNICODE_ILLEGAL_CHARS 256
  649. #define IS_TEXT_UNICODE_ODD_LENGTH 512
  650. #define IS_TEXT_UNICODE_NULL_BYTES 4096
  651. #define IS_TEXT_UNICODE_UNICODE_MASK 15
  652. #define IS_TEXT_UNICODE_REVERSE_MASK 240
  653. #define IS_TEXT_UNICODE_NOT_UNICODE_MASK 3840
  654. #define IS_TEXT_UNICODE_NOT_ASCII_MASK 61440
  655. #define SERVICE_KERNEL_DRIVER 1
  656. #define SERVICE_FILE_SYSTEM_DRIVER 2
  657. #define SERVICE_ADAPTER 4
  658. #define SERVICE_RECOGNIZER_DRIVER 8
  659. #define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER|SERVICE_FILE_SYSTEM_DRIVER|SERVICE_RECOGNIZER_DRIVER)
  660. #define SERVICE_WIN32_OWN_PROCESS 16
  661. #define SERVICE_WIN32_SHARE_PROCESS 32
  662. #define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS|SERVICE_WIN32_SHARE_PROCESS)
  663. #define SERVICE_INTERACTIVE_PROCESS 256
  664. #define SERVICE_TYPE_ALL (SERVICE_WIN32|SERVICE_ADAPTER|SERVICE_DRIVER|SERVICE_INTERACTIVE_PROCESS)
  665. #define SERVICE_BOOT_START 0
  666. #define SERVICE_SYSTEM_START 1
  667. #define SERVICE_AUTO_START 2
  668. #define SERVICE_DEMAND_START 3
  669. #define SERVICE_DISABLED 4
  670. #define SERVICE_ERROR_IGNORE 0
  671. #define SERVICE_ERROR_NORMAL 1
  672. #define SERVICE_ERROR_SEVERE 2
  673. #define SERVICE_ERROR_CRITICAL 3
  674. #define SE_OWNER_DEFAULTED 1
  675. #define SE_GROUP_DEFAULTED 2
  676. #define SE_DACL_PRESENT 4
  677. #define SE_DACL_DEFAULTED 8
  678. #define SE_SACL_PRESENT 16
  679. #define SE_SACL_DEFAULTED 32
  680. #define SE_SELF_RELATIVE 0x8000
  681. #define SECURITY_DESCRIPTOR_MIN_LENGTH 20
  682. #define SECURITY_DESCRIPTOR_REVISION 1
  683. #define SECURITY_DESCRIPTOR_REVISION1 1
  684. #define SE_PRIVILEGE_ENABLED_BY_DEFAULT 1
  685. #define SE_PRIVILEGE_ENABLED 2
  686. #define SE_PRIVILEGE_USED_FOR_ACCESS 0x80000000
  687. #define PRIVILEGE_SET_ALL_NECESSARY 1
  688. #define SECURITY_MAX_IMPERSONATION_LEVEL SecurityDelegation
  689. #define DEFAULT_IMPERSONATION_LEVEL SecurityImpersonation
  690. #define SECURITY_DYNAMIC_TRACKING TRUE
  691. #define SECURITY_STATIC_TRACKING FALSE
  692. #define TOKEN_SOURCE_LENGTH 8
  693. #define TOKEN_ADJUST_DEFAULT    128
  694. #define TOKEN_ADJUST_GROUPS    64
  695. #define TOKEN_ADJUST_PRIVILEGES    32
  696. #define TOKEN_ALL_ACCESS    0xf00ff
  697. #define TOKEN_ASSIGN_PRIMARY    1
  698. #define TOKEN_DUPLICATE    2
  699. #define TOKEN_EXECUTE    0x20000
  700. #define TOKEN_IMPERSONATE    4
  701. #define TOKEN_QUERY    8
  702. #define TOKEN_QUERY_SOURCE    16
  703. #define TOKEN_READ    0x20008
  704. #define TOKEN_WRITE    0x200e0
  705. #define DLL_PROCESS_DETACH    0
  706. #define DLL_PROCESS_ATTACH    1
  707. #define DLL_THREAD_ATTACH    2
  708. #define DLL_THREAD_DETACH    3
  709. #define DBG_CONTINUE 0x10002
  710. #define DBG_TERMINATE_THREAD 0x40010003
  711. #define DBG_TERMINATE_PROCESS 0x40010004
  712. #define DBG_CONTROL_C 0x40010005
  713. #define DBG_CONTROL_BREAK 0x40010008
  714. #define DBG_EXCEPTION_NOT_HANDLED 0x80010001
  715. #define TAPE_ABSOLUTE_POSITION 0
  716. #define TAPE_LOGICAL_POSITION 1
  717. #define TAPE_PSEUDO_LOGICAL_POSITION 2
  718. #define TAPE_REWIND                 0L
  719. #define TAPE_ABSOLUTE_BLOCK 1
  720. #define TAPE_LOGICAL_BLOCK 2
  721. #define TAPE_PSEUDO_LOGICAL_BLOCK 3
  722. #define TAPE_SPACE_END_OF_DATA 4
  723. #define TAPE_SPACE_RELATIVE_BLOCKS 5
  724. #define TAPE_SPACE_FILEMARKS 6
  725. #define TAPE_SPACE_SEQUENTIAL_FMKS 7
  726. #define TAPE_SPACE_SETMARKS 8
  727. #define TAPE_SPACE_SEQUENTIAL_SMKS 9
  728. #define TAPE_DRIVE_FIXED 1
  729. #define TAPE_DRIVE_SELECT 2
  730. #define TAPE_DRIVE_INITIATOR 4
  731. #define TAPE_DRIVE_ERASE_SHORT 16
  732. #define TAPE_DRIVE_ERASE_LONG 32
  733. #define TAPE_DRIVE_ERASE_BOP_ONLY 64
  734. #define TAPE_DRIVE_ERASE_IMMEDIATE 128
  735. #define TAPE_DRIVE_TAPE_CAPACITY 256
  736. #define TAPE_DRIVE_TAPE_REMAINING 512
  737. #define TAPE_DRIVE_FIXED_BLOCK 1024
  738. #define TAPE_DRIVE_VARIABLE_BLOCK 2048
  739. #define TAPE_DRIVE_WRITE_PROTECT 4096
  740. #define TAPE_DRIVE_EOT_WZ_SIZE 8192
  741. #define TAPE_DRIVE_ECC 0x10000
  742. #define TAPE_DRIVE_COMPRESSION 0x20000
  743. #define TAPE_DRIVE_PADDING 0x40000
  744. #define TAPE_DRIVE_REPORT_SMKS 0x80000
  745. #define TAPE_DRIVE_GET_ABSOLUTE_BLK 0x100000
  746. #define TAPE_DRIVE_GET_LOGICAL_BLK 0x200000
  747. #define TAPE_DRIVE_SET_EOT_WZ_SIZE 0x400000
  748. #define TAPE_DRIVE_RESERVED_BIT 0x80000000
  749. #define TAPE_DRIVE_LOAD_UNLOAD 0x80000001
  750. #define TAPE_DRIVE_TENSION 0x80000002
  751. #define TAPE_DRIVE_LOCK_UNLOCK 0x80000004
  752. #define TAPE_DRIVE_REWIND_IMMEDIATE 0x80000008
  753. #define TAPE_DRIVE_SET_BLOCK_SIZE 0x80000010
  754. #define TAPE_DRIVE_LOAD_UNLD_IMMED 0x80000020
  755. #define TAPE_DRIVE_TENSION_IMMED 0x80000040
  756. #define TAPE_DRIVE_LOCK_UNLK_IMMED 0x80000080
  757. #define TAPE_DRIVE_SET_ECC 0x80000100
  758. #define TAPE_DRIVE_SET_COMPRESSION 0x80000200
  759. #define TAPE_DRIVE_SET_PADDING 0x80000400
  760. #define TAPE_DRIVE_SET_REPORT_SMKS 0x80000800
  761. #define TAPE_DRIVE_ABSOLUTE_BLK 0x80001000
  762. #define TAPE_DRIVE_ABS_BLK_IMMED 0x80002000
  763. #define TAPE_DRIVE_LOGICAL_BLK 0x80004000
  764. #define TAPE_DRIVE_LOG_BLK_IMMED 0x80008000
  765. #define TAPE_DRIVE_END_OF_DATA 0x80010000
  766. #define TAPE_DRIVE_RELATIVE_BLKS 0x80020000
  767. #define TAPE_DRIVE_FILEMARKS 0x80040000
  768. #define TAPE_DRIVE_SEQUENTIAL_FMKS 0x80080000
  769. #define TAPE_DRIVE_SETMARKS 0x80100000
  770. #define TAPE_DRIVE_SEQUENTIAL_SMKS 0x80200000
  771. #define TAPE_DRIVE_REVERSE_POSITION 0x80400000
  772. #define TAPE_DRIVE_SPACE_IMMEDIATE 0x80800000
  773. #define TAPE_DRIVE_WRITE_SETMARKS 0x81000000
  774. #define TAPE_DRIVE_WRITE_FILEMARKS 0x82000000
  775. #define TAPE_DRIVE_WRITE_SHORT_FMKS 0x84000000
  776. #define TAPE_DRIVE_WRITE_LONG_FMKS 0x88000000
  777. #define TAPE_DRIVE_WRITE_MARK_IMMED 0x90000000
  778. #define TAPE_DRIVE_FORMAT 0xA0000000
  779. #define TAPE_DRIVE_FORMAT_IMMEDIATE 0xC0000000
  780. #define TAPE_DRIVE_HIGH_FEATURES 0x80000000
  781. #define TAPE_FIXED_PARTITIONS    0
  782. #define TAPE_INITIATOR_PARTITIONS    2
  783. #define TAPE_SELECT_PARTITIONS    1
  784. #define TAPE_FILEMARKS    1
  785. #define TAPE_LONG_FILEMARKS    3
  786. #define TAPE_SETMARKS    0
  787. #define TAPE_SHORT_FILEMARKS    2
  788. #define TAPE_ERASE_LONG 1
  789. #define TAPE_ERASE_SHORT 0
  790. #define TAPE_LOAD 0
  791. #define TAPE_UNLOAD 1
  792. #define TAPE_TENSION 2
  793. #define TAPE_LOCK 3
  794. #define TAPE_UNLOCK 4
  795. #define TAPE_FORMAT 5
  796.  
  797. #define MAKELANGID(p,s)    ((((WORD)(s))<<10)|(WORD)(p))
  798. #define MAKELCID(l,s) ((DWORD)((((DWORD)((WORD)(s)))<<16)|((DWORD)((WORD)(l)))))
  799. #define PRIMARYLANGID(l)    ((WORD)(l)&0x3ff)
  800. #define SORTIDFROMLCID(l)    ((WORD)((((DWORD)(l))&NLS_VALID_LOCALE_MASK)>>16))
  801. #define SUBLANGID(l)    ((WORD)(l)>>10)
  802. #define LANGIDFROMLCID(l)    ((WORD)(l))
  803. #define BTYPE(x) ((x)&N_BTMASK)
  804. #define ISPTR(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT))
  805. #define ISFCN(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_FUNCTION<<N_BTSHFT))
  806. #define ISARY(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_ARRAY<<N_BTSHFT))
  807. #define ISTAG(x) ((x)==IMAGE_SYM_CLASS_STRUCT_TAG||(x)==IMAGE_SYM_CLASS_UNION_TAG||(x)==IMAGE_SYM_CLASS_ENUM_TAG)
  808. #define INCREF(x) ((((x)&~N_BTMASK)<<N_TSHIFT)|(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)|((x)&N_BTMASK))
  809. #define DECREF(x) ((((x)>>N_TSHIFT)&~N_BTMASK)|((x)&N_BTMASK))
  810.  
  811. #ifndef RC_INVOKED
  812. typedef DWORD ACCESS_MASK;
  813. typedef PVOID PSID;
  814. typedef struct _GENERIC_MAPPING {
  815.     ACCESS_MASK GenericRead;
  816.     ACCESS_MASK GenericWrite;
  817.     ACCESS_MASK GenericExecute;
  818.     ACCESS_MASK GenericAll;
  819. } GENERIC_MAPPING, *PGENERIC_MAPPING;
  820. typedef struct _ACE_HEADER {
  821.     BYTE AceType;
  822.     BYTE AceFlags;
  823.     WORD AceSize;
  824. } ACE_HEADER;
  825. typedef struct _ACCESS_ALLOWED_ACE {
  826.     ACE_HEADER Header;
  827.     ACCESS_MASK Mask;
  828.     DWORD SidStart;
  829. } ACCESS_ALLOWED_ACE;
  830. typedef struct _ACCESS_DENIED_ACE {
  831.     ACE_HEADER Header;
  832.     ACCESS_MASK Mask;
  833.     DWORD SidStart;
  834. } ACCESS_DENIED_ACE;
  835. typedef struct _ACL {
  836.     BYTE AclRevision;
  837.     BYTE Sbz1;
  838.     WORD AclSize;
  839.     WORD AceCount;
  840.     WORD Sbz2;
  841. } ACL,*PACL;
  842. typedef struct _ACL_REVISION_INFORMATION {
  843.     DWORD AclRevision;
  844. } ACL_REVISION_INFORMATION;
  845. typedef struct _ACL_SIZE_INFORMATION {
  846.     DWORD   AceCount;
  847.     DWORD   AclBytesInUse;
  848.     DWORD   AclBytesFree;
  849. } ACL_SIZE_INFORMATION;
  850. #ifdef _M_IX86
  851. #define SIZE_OF_80387_REGISTERS    80
  852. #define CONTEXT_i386    0x10000
  853. #define CONTEXT_i486    0x10000
  854. #define CONTEXT_CONTROL    (CONTEXT_i386|0x00000001L)
  855. #define CONTEXT_INTEGER    (CONTEXT_i386|0x00000002L)
  856. #define CONTEXT_SEGMENTS    (CONTEXT_i386|0x00000004L)
  857. #define CONTEXT_FLOATING_POINT    (CONTEXT_i386|0x00000008L)
  858. #define CONTEXT_DEBUG_REGISTERS    (CONTEXT_i386|0x00000010L)
  859. #define CONTEXT_FULL    (CONTEXT_CONTROL|CONTEXT_INTEGER|CONTEXT_SEGMENTS)
  860. typedef struct _FLOATING_SAVE_AREA {
  861.     DWORD    ControlWord;
  862.     DWORD    StatusWord;
  863.     DWORD    TagWord;
  864.     DWORD    ErrorOffset;
  865.     DWORD    ErrorSelector;
  866.     DWORD    DataOffset;
  867.     DWORD    DataSelector;
  868.     BYTE    RegisterArea[80];
  869.     DWORD    Cr0NpxState;
  870. } FLOATING_SAVE_AREA;
  871. typedef struct _CONTEXT {
  872.     DWORD    ContextFlags;
  873.     DWORD    Dr0;
  874.     DWORD    Dr1;
  875.     DWORD    Dr2;
  876.     DWORD    Dr3;
  877.     DWORD    Dr6;
  878.     DWORD    Dr7;
  879.     FLOATING_SAVE_AREA FloatSave;
  880.     DWORD    SegGs;
  881.     DWORD    SegFs;
  882.     DWORD    SegEs;
  883.     DWORD    SegDs;
  884.     DWORD    Edi;
  885.     DWORD    Esi;
  886.     DWORD    Ebx;
  887.     DWORD    Edx;
  888.     DWORD    Ecx;
  889.     DWORD    Eax;
  890.     DWORD    Ebp;
  891.     DWORD    Eip;
  892.     DWORD    SegCs;
  893.     DWORD    EFlags;
  894.     DWORD    Esp;
  895.     DWORD    SegSs;
  896. } CONTEXT,*PCONTEXT,*LPCONTEXT;
  897. #else
  898. #error "Unknown machine architecture"
  899. #endif
  900. typedef struct _EXCEPTION_RECORD {
  901.     DWORD ExceptionCode;
  902.     DWORD ExceptionFlags;
  903.     struct _EXCEPTION_RECORD *ExceptionRecord;
  904.     PVOID ExceptionAddress;
  905.     DWORD NumberParameters;
  906.     DWORD ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
  907. } EXCEPTION_RECORD,*PEXCEPTION_RECORD;
  908. typedef struct _EXCEPTION_POINTERS {
  909.     PEXCEPTION_RECORD ExceptionRecord;
  910.     PCONTEXT ContextRecord;
  911. } EXCEPTION_POINTERS,*PEXCEPTION_POINTERS,*LPEXCEPTION_POINTERS;
  912. typedef union _LARGE_INTEGER {
  913.     struct {
  914.         DWORD LowPart;
  915.         LONG HighPart;
  916.     }_STRUCT_NAME(u);
  917.     LONGLONG QuadPart;
  918. } LARGE_INTEGER,*PLARGE_INTEGER;
  919. typedef union _ULARGE_INTEGER {
  920.     struct {
  921.         DWORD LowPart;
  922.         DWORD HighPart;
  923.     }_STRUCT_NAME(u);
  924.     DWORDLONG QuadPart;
  925. } ULARGE_INTEGER,*PULARGE_INTEGER;
  926. typedef LARGE_INTEGER LUID,*PLUID;
  927. typedef struct _LUID_AND_ATTRIBUTES {
  928.     LUID   Luid;
  929.     DWORD  Attributes;
  930. } LUID_AND_ATTRIBUTES;
  931. typedef LUID_AND_ATTRIBUTES LUID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
  932. typedef LUID_AND_ATTRIBUTES_ARRAY *PLUID_AND_ATTRIBUTES_ARRAY;
  933. typedef struct _PRIVILEGE_SET {
  934.     DWORD PrivilegeCount;
  935.     DWORD Control;
  936.     LUID_AND_ATTRIBUTES Privilege[ANYSIZE_ARRAY];
  937. } PRIVILEGE_SET,*PPRIVILEGE_SET;
  938. typedef enum _SECURITY_IMPERSONATION_LEVEL {
  939.     SecurityAnonymous,
  940.     SecurityIdentification,
  941.     SecurityImpersonation,
  942.     SecurityDelegation
  943. } SECURITY_IMPERSONATION_LEVEL;
  944. typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE,*PSECURITY_CONTEXT_TRACKING_MODE;
  945. typedef struct _SECURITY_QUALITY_OF_SERVICE {
  946.     DWORD Length;
  947.     SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
  948.     SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
  949.     BOOLEAN EffectiveOnly;
  950. } SECURITY_QUALITY_OF_SERVICE,*PSECURITY_QUALITY_OF_SERVICE;
  951. typedef DWORD SECURITY_DESCRIPTOR;
  952. typedef PVOID PSECURITY_DESCRIPTOR;
  953. typedef PVOID PACCESS_TOKEN;
  954. typedef struct _SE_IMPERSONATION_STATE {
  955.     PACCESS_TOKEN Token;
  956.     BOOLEAN CopyOnOpen;
  957.     BOOLEAN EffectiveOnly;
  958.     SECURITY_IMPERSONATION_LEVEL Level;
  959. } SE_IMPERSONATION_STATE,*PSE_IMPERSONATION_STATE;
  960. typedef struct _SID_AND_ATTRIBUTES {
  961.     PSID Sid;
  962.     DWORD Attributes;
  963. } SID_AND_ATTRIBUTES;
  964. typedef SID_AND_ATTRIBUTES SID_AND_ATTRIBUTES_ARRAY[ANYSIZE_ARRAY];
  965. typedef SID_AND_ATTRIBUTES_ARRAY *PSID_AND_ATTRIBUTES_ARRAY;
  966. typedef struct _TOKEN_SOURCE {
  967.     CHAR SourceName[8];
  968.     LUID SourceIdentifier;
  969. } TOKEN_SOURCE;
  970. typedef struct _TOKEN_CONTROL {
  971.     LUID TokenId;
  972.     LUID AuthenticationId;
  973.     LUID ModifiedId;
  974.     TOKEN_SOURCE TokenSource;
  975. } TOKEN_CONTROL;
  976. typedef struct _TOKEN_DEFAULT_DACL {
  977.     PACL DefaultDacl;
  978. } TOKEN_DEFAULT_DACL;
  979. typedef struct _TOKEN_GROUPS {
  980.     DWORD GroupCount;
  981.     SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY];
  982. } TOKEN_GROUPS,*PTOKEN_GROUPS,*LPTOKEN_GROUPS;
  983. typedef struct _TOKEN_OWNER {
  984.     PSID Owner;
  985. } TOKEN_OWNER;
  986. typedef struct _TOKEN_PRIMARY_GROUP {
  987.     PSID PrimaryGroup;
  988. } TOKEN_PRIMARY_GROUP;
  989. typedef struct _TOKEN_PRIVILEGES {
  990.     DWORD PrivilegeCount;
  991.     LUID_AND_ATTRIBUTES Privileges[ANYSIZE_ARRAY];
  992. } TOKEN_PRIVILEGES,*PTOKEN_PRIVILEGES,*LPTOKEN_PRIVILEGES;
  993. typedef enum tagTOKEN_TYPE { TokenPrimary=1,TokenImpersonation }TOKEN_TYPE;
  994. typedef struct _TOKEN_STATISTICS {
  995.     LUID TokenId;
  996.     LUID AuthenticationId;
  997.     LARGE_INTEGER ExpirationTime;
  998.     TOKEN_TYPE TokenType;
  999.     SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
  1000.     DWORD DynamicCharged;
  1001.     DWORD DynamicAvailable;
  1002.     DWORD GroupCount;
  1003.     DWORD PrivilegeCount;
  1004.     LUID ModifiedId;
  1005. } TOKEN_STATISTICS;
  1006. typedef struct _TOKEN_USER {
  1007.     SID_AND_ATTRIBUTES User;
  1008. } TOKEN_USER;
  1009. typedef struct _SID_IDENTIFIER_AUTHORITY {
  1010.     BYTE Value[6];
  1011. } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
  1012. typedef struct _SECURITY_ATTRIBUTES {
  1013.     DWORD nLength;
  1014.     LPVOID lpSecurityDescriptor;
  1015.     BOOL bInheritHandle;
  1016. } SECURITY_ATTRIBUTES,*LPSECURITY_ATTRIBUTES;
  1017. typedef DWORD SECURITY_INFORMATION,*PSECURITY_INFORMATION;
  1018. typedef WORD SECURITY_DESCRIPTOR_CONTROL,*PSECURITY_DESCRIPTOR_CONTROL;
  1019. typedef enum _TOKEN_INFORMATION_CLASS {
  1020.     TokenUser=1,TokenGroups,TokenPrivileges,TokenOwner,
  1021.     TokenPrimaryGroup,TokenDefaultDacl,TokenSource,TokenType,
  1022.     TokenImpersonationLevel,TokenStatistics
  1023. } TOKEN_INFORMATION_CLASS;
  1024. typedef enum _SID_NAME_USE {
  1025.     SidTypeUser=1,SidTypeGroup,SidTypeDomain,SidTypeAlias,SidTypeWellKnownGroup,
  1026.     SidTypeDeletedAccount,SidTypeInvalid,SidTypeUnknown
  1027. } SID_NAME_USE,*PSID_NAME_USE;
  1028. typedef struct _FILE_NOTIFY_INFORMATION {
  1029.     DWORD NextEntryOffset;
  1030.     DWORD Action;
  1031.     DWORD FileNameLength;
  1032.     WCHAR FileName[1];
  1033. } FILE_NOTIFY_INFORMATION,*PFILE_NOTIFY_INFORMATION;
  1034. typedef struct _TAPE_ERASE { ULONG Type; } TAPE_ERASE;
  1035. typedef struct _TAPE_GET_DRIVE_PARAMETERS {
  1036.     BOOLEAN ECC;
  1037.     BOOLEAN Compression;
  1038.     BOOLEAN DataPadding;
  1039.     BOOLEAN ReportSetmarks;
  1040.     ULONG DefaultBlockSize;
  1041.     ULONG MaximumBlockSize;
  1042.     ULONG MinimumBlockSize;
  1043.     ULONG MaximumPartitionCount;
  1044.     ULONG FeaturesLow;
  1045.     ULONG FeaturesHigh;
  1046.     ULONG EOTWarningZoneSize;
  1047. } TAPE_GET_DRIVE_PARAMETERS;
  1048. typedef struct _TAPE_GET_MEDIA_PARAMETERS {
  1049.     LARGE_INTEGER Capacity;
  1050.     LARGE_INTEGER Remaining;
  1051.     DWORD BlockSize;
  1052.     DWORD PartitionCount;
  1053.     BOOLEAN WriteProtected;
  1054. } TAPE_GET_MEDIA_PARAMETERS;
  1055. typedef struct _TAPE_GET_POSITION {
  1056.     ULONG Type;
  1057.     ULONG Partition;
  1058.     ULONG OffsetLow;
  1059.     ULONG OffsetHigh;
  1060. } TAPE_GET_POSITION;
  1061. typedef struct _TAPE_PREPARE { ULONG Operation; } TAPE_PREPARE;
  1062. typedef struct _TAPE_SET_DRIVE_PARAMETERS {
  1063.     BOOLEAN ECC;
  1064.     BOOLEAN Compression;
  1065.     BOOLEAN DataPadding;
  1066.     BOOLEAN ReportSetmarks;
  1067.     ULONG EOTWarningZoneSize;
  1068. } TAPE_SET_DRIVE_PARAMETERS;
  1069. typedef struct _TAPE_SET_MEDIA_PARAMETERS {    ULONG BlockSize; } TAPE_SET_MEDIA_PARAMETERS;
  1070. typedef struct _TAPE_SET_POSITION {
  1071.     ULONG Method;
  1072.     ULONG Partition;
  1073.     ULONG OffsetLow;
  1074.     ULONG OffsetHigh;
  1075. } TAPE_SET_POSITION;
  1076. typedef struct _TAPE_WRITE_MARKS {
  1077.     ULONG Type;
  1078.     ULONG Count;
  1079. } TAPE_WRITE_MARKS;
  1080. typedef struct _MEMORY_BASIC_INFORMATION {
  1081.     PVOID BaseAddress;
  1082.     PVOID AllocationBase;
  1083.     DWORD AllocationProtect;
  1084.     DWORD RegionSize;
  1085.     DWORD State;
  1086.     DWORD Protect;
  1087.     DWORD Type;
  1088. } MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION;
  1089. typedef struct _MESSAGE_RESOURCE_ENTRY {
  1090.     WORD Length;
  1091.     WORD Flags;
  1092.     BYTE Text[1];
  1093. } MESSAGE_RESOURCE_ENTRY,*PMESSAGE_RESOURCE_ENTRY;
  1094. typedef struct _MESSAGE_RESOURCE_BLOCK {
  1095.     DWORD LowId;
  1096.     DWORD HighId;
  1097.     DWORD OffsetToEntries;
  1098. } MESSAGE_RESOURCE_BLOCK,*PMESSAGE_RESOURCE_BLOCK;
  1099. typedef struct _MESSAGE_RESOURCE_DATA {
  1100.     DWORD NumberOfBlocks;
  1101.     MESSAGE_RESOURCE_BLOCK Blocks[1];
  1102. } MESSAGE_RESOURCE_DATA,*PMESSAGE_RESOURCE_DATA;
  1103. typedef struct _LIST_ENTRY {
  1104.     struct _LIST_ENTRY *Flink;
  1105.     struct _LIST_ENTRY *Blink;
  1106. } LIST_ENTRY,*PLIST_ENTRY;
  1107. typedef struct _RTL_CRITICAL_SECTION_DEBUG {
  1108.     WORD Type;
  1109.     WORD CreatorBackTraceIndex;
  1110.     struct _RTL_CRITICAL_SECTION *CriticalSection;
  1111.     LIST_ENTRY ProcessLocksList;
  1112.     DWORD EntryCount;
  1113.     DWORD ContentionCount;
  1114.     DWORD Spare[2];
  1115. } RTL_CRITICAL_SECTION_DEBUG,*PRTL_CRITICAL_SECTION_DEBUG;
  1116. typedef struct _RTL_CRITICAL_SECTION {
  1117.     PRTL_CRITICAL_SECTION_DEBUG DebugInfo;
  1118.     LONG LockCount;
  1119.     LONG RecursionCount;
  1120.     HANDLE OwningThread;
  1121.     HANDLE LockSemaphore;
  1122.     DWORD Reserved;
  1123. } RTL_CRITICAL_SECTION,*PRTL_CRITICAL_SECTION;
  1124. typedef struct _EVENTLOGRECORD {
  1125.     DWORD Length;
  1126.     DWORD Reserved;
  1127.     DWORD RecordNumber;
  1128.     DWORD TimeGenerated;
  1129.     DWORD TimeWritten;
  1130.     DWORD EventID;
  1131.     WORD EventType;
  1132.     WORD NumStrings;
  1133.     WORD EventCategory;
  1134.     WORD ReservedFlags;
  1135.     DWORD ClosingRecordNumber;
  1136.     DWORD StringOffset;
  1137.     DWORD UserSidLength;
  1138.     DWORD UserSidOffset;
  1139.     DWORD DataLength;
  1140.     DWORD DataOffset;
  1141. } EVENTLOGRECORD,*PEVENTLOGRECORD;
  1142. typedef struct _IMAGE_VXD_HEADER {
  1143.     WORD e32_magic;
  1144.     BYTE e32_border;
  1145.     BYTE e32_worder;
  1146.     DWORD e32_level;
  1147.     WORD e32_cpu;
  1148.     WORD e32_os;
  1149.     DWORD e32_ver;
  1150.     DWORD e32_mflags;
  1151.     DWORD e32_mpages;
  1152.     DWORD e32_startobj;
  1153.     DWORD e32_eip;
  1154.     DWORD e32_stackobj;
  1155.     DWORD e32_esp;
  1156.     DWORD e32_pagesize;
  1157.     DWORD e32_lastpagesize;
  1158.     DWORD e32_fixupsize;
  1159.     DWORD e32_fixupsum;
  1160.     DWORD e32_ldrsize;
  1161.     DWORD e32_ldrsum;
  1162.     DWORD e32_objtab;
  1163.     DWORD e32_objcnt;
  1164.     DWORD e32_objmap;
  1165.     DWORD e32_itermap;
  1166.     DWORD e32_rsrctab;
  1167.     DWORD e32_rsrccnt;
  1168.     DWORD e32_restab;
  1169.     DWORD e32_enttab;
  1170.     DWORD e32_dirtab;
  1171.     DWORD e32_dircnt;
  1172.     DWORD e32_fpagetab;
  1173.     DWORD e32_frectab;
  1174.     DWORD e32_impmod;
  1175.     DWORD e32_impmodcnt;
  1176.     DWORD e32_impproc;
  1177.     DWORD e32_pagesum;
  1178.     DWORD e32_datapage;
  1179.     DWORD e32_preload;
  1180.     DWORD e32_nrestab;
  1181.     DWORD e32_cbnrestab;
  1182.     DWORD e32_nressum;
  1183.     DWORD e32_autodata;
  1184.     DWORD e32_debuginfo;
  1185.     DWORD e32_debuglen;
  1186.     DWORD e32_instpreload;
  1187.     DWORD e32_instdemand;
  1188.     DWORD e32_heapsize;
  1189.     BYTE e32_res3[12];
  1190.     DWORD e32_winresoff;
  1191.     DWORD e32_winreslen;
  1192.     WORD e32_devid;
  1193.     WORD e32_ddkver;
  1194. } IMAGE_VXD_HEADER,*PIMAGE_VXD_HEADER;
  1195. typedef struct _IMAGE_FILE_HEADER {
  1196.     WORD Machine;
  1197.     WORD NumberOfSections;
  1198.     DWORD TimeDateStamp;
  1199.     DWORD PointerToSymbolTable;
  1200.     DWORD NumberOfSymbols;
  1201.     WORD SizeOfOptionalHeader;
  1202.     WORD Characteristics;
  1203. } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
  1204. typedef struct _IMAGE_DATA_DIRECTORY {
  1205.     DWORD VirtualAddress;
  1206.     DWORD Size;
  1207. } IMAGE_DATA_DIRECTORY,*PIMAGE_DATA_DIRECTORY;
  1208. typedef struct _IMAGE_OPTIONAL_HEADER {
  1209.     WORD Magic;
  1210.     BYTE MajorLinkerVersion;
  1211.     BYTE MinorLinkerVersion;
  1212.     DWORD SizeOfCode;
  1213.     DWORD SizeOfInitializedData;
  1214.     DWORD SizeOfUninitializedData;
  1215.     DWORD AddressOfEntryPoint;
  1216.     DWORD BaseOfCode;
  1217.     DWORD BaseOfData;
  1218.     DWORD ImageBase;
  1219.     DWORD SectionAlignment;
  1220.     DWORD FileAlignment;
  1221.     WORD MajorOperatingSystemVersion;
  1222.     WORD MinorOperatingSystemVersion;
  1223.     WORD MajorImageVersion;
  1224.     WORD MinorImageVersion;
  1225.     WORD MajorSubsystemVersion;
  1226.     WORD MinorSubsystemVersion;
  1227.     DWORD Reserved1;
  1228.     DWORD SizeOfImage;
  1229.     DWORD SizeOfHeaders;
  1230.     DWORD CheckSum;
  1231.     WORD Subsystem;
  1232.     WORD DllCharacteristics;
  1233.     DWORD SizeOfStackReserve;
  1234.     DWORD SizeOfStackCommit;
  1235.     DWORD SizeOfHeapReserve;
  1236.     DWORD SizeOfHeapCommit;
  1237.     DWORD LoaderFlags;
  1238.     DWORD NumberOfRvaAndSizes;
  1239.     IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
  1240. } IMAGE_OPTIONAL_HEADER,*PIMAGE_OPTIONAL_HEADER;
  1241. typedef struct _IMAGE_ROM_OPTIONAL_HEADER {
  1242.     WORD Magic;
  1243.     BYTE MajorLinkerVersion;
  1244.     BYTE MinorLinkerVersion;
  1245.     DWORD SizeOfCode;
  1246.     DWORD SizeOfInitializedData;
  1247.     DWORD SizeOfUninitializedData;
  1248.     DWORD AddressOfEntryPoint;
  1249.     DWORD BaseOfCode;
  1250.     DWORD BaseOfData;
  1251.     DWORD BaseOfBss;
  1252.     DWORD GprMask;
  1253.     DWORD CprMask[4];
  1254.     DWORD GpValue;
  1255. } IMAGE_ROM_OPTIONAL_HEADER,*PIMAGE_ROM_OPTIONAL_HEADER;
  1256. typedef struct _IMAGE_DOS_HEADER {
  1257.     WORD e_magic;
  1258.     WORD e_cblp;
  1259.     WORD e_cp;
  1260.     WORD e_crlc;
  1261.     WORD e_cparhdr;
  1262.     WORD e_minalloc;
  1263.     WORD e_maxalloc;
  1264.     WORD e_ss;
  1265.     WORD e_sp;
  1266.     WORD e_csum;
  1267.     WORD e_ip;
  1268.     WORD e_cs;
  1269.     WORD e_lfarlc;
  1270.     WORD e_ovno;
  1271.     WORD e_res[4];
  1272.     WORD e_oemid;
  1273.     WORD e_oeminfo;
  1274.     WORD e_res2[10];
  1275.     LONG e_lfanew;
  1276. } IMAGE_DOS_HEADER,*PIMAGE_DOS_HEADER;
  1277. typedef struct _IMAGE_OS2_HEADER {
  1278.     WORD ne_magic;
  1279.     CHAR ne_ver;
  1280.     CHAR ne_rev;
  1281.     WORD ne_enttab;
  1282.     WORD ne_cbenttab;
  1283.     LONG ne_crc;
  1284.     WORD ne_flags;
  1285.     WORD ne_autodata;
  1286.     WORD ne_heap;
  1287.     WORD ne_stack;
  1288.     LONG ne_csip;
  1289.     LONG ne_sssp;
  1290.     WORD ne_cseg;
  1291.     WORD ne_cmod;
  1292.     WORD ne_cbnrestab;
  1293.     WORD ne_segtab;
  1294.     WORD ne_rsrctab;
  1295.     WORD ne_restab;
  1296.     WORD ne_modtab;
  1297.     WORD ne_imptab;
  1298.     LONG ne_nrestab;
  1299.     WORD ne_cmovent;
  1300.     WORD ne_align;
  1301.     WORD ne_cres;
  1302.     BYTE ne_exetyp;
  1303.     BYTE ne_flagsothers;
  1304.     WORD ne_pretthunks;
  1305.     WORD ne_psegrefbytes;
  1306.     WORD ne_swaparea;
  1307.     WORD ne_expver;
  1308. } IMAGE_OS2_HEADER,*PIMAGE_OS2_HEADER;
  1309. typedef struct _IMAGE_NT_HEADERS {
  1310.     DWORD Signature;
  1311.     IMAGE_FILE_HEADER FileHeader;
  1312.     IMAGE_OPTIONAL_HEADER OptionalHeader;
  1313. } IMAGE_NT_HEADERS,*PIMAGE_NT_HEADERS;
  1314. typedef struct _IMAGE_ROM_HEADERS {
  1315.     IMAGE_FILE_HEADER FileHeader;
  1316.     IMAGE_ROM_OPTIONAL_HEADER OptionalHeader;
  1317. } IMAGE_ROM_HEADERS,*PIMAGE_ROM_HEADERS;
  1318. typedef struct _IMAGE_SECTION_HEADER {
  1319.     BYTE Name[IMAGE_SIZEOF_SHORT_NAME];
  1320.     union {
  1321.         DWORD PhysicalAddress;
  1322.         DWORD VirtualSize;
  1323.     } Misc;
  1324.     DWORD VirtualAddress;
  1325.     DWORD SizeOfRawData;
  1326.     DWORD PointerToRawData;
  1327.     DWORD PointerToRelocations;
  1328.     DWORD PointerToLinenumbers;
  1329.     WORD NumberOfRelocations;
  1330.     WORD NumberOfLinenumbers;
  1331.     DWORD Characteristics;
  1332. } IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
  1333. typedef struct _IMAGE_SYMBOL {
  1334.     union {
  1335.         BYTE ShortName[8];
  1336.         struct {
  1337.             DWORD Short;
  1338.             DWORD Long;
  1339.         } Name;
  1340.         PBYTE LongName[2];
  1341.     } N;
  1342.     DWORD Value;
  1343.     SHORT SectionNumber;
  1344.     WORD Type;
  1345.     BYTE StorageClass;
  1346.     BYTE NumberOfAuxSymbols;
  1347. } IMAGE_SYMBOL,*PIMAGE_SYMBOL;
  1348. typedef union _IMAGE_AUX_SYMBOL {
  1349.     struct {
  1350.         DWORD TagIndex;
  1351.         union {
  1352.             struct {
  1353.                 WORD Linenumber;
  1354.                 WORD Size;
  1355.             } LnSz;
  1356.             DWORD TotalSize;
  1357.         } Misc;
  1358.         union {
  1359.             struct {
  1360.                 DWORD PointerToLinenumber;
  1361.                 DWORD PointerToNextFunction;
  1362.             } Function;
  1363.             struct {
  1364.                 WORD Dimension[4];
  1365.             } Array;
  1366.         } FcnAry;
  1367.         WORD TvIndex;
  1368.     } Sym;
  1369.     struct {
  1370.         BYTE Name[IMAGE_SIZEOF_SYMBOL];
  1371.     } File;
  1372.     struct {
  1373.         DWORD Length;
  1374.         WORD NumberOfRelocations;
  1375.         WORD NumberOfLinenumbers;
  1376.         DWORD CheckSum;
  1377.         SHORT Number;
  1378.         BYTE Selection;
  1379.     } Section;
  1380. } IMAGE_AUX_SYMBOL,*PIMAGE_AUX_SYMBOL;
  1381. typedef struct _IMAGE_COFF_SYMBOLS_HEADER {
  1382.     DWORD NumberOfSymbols;
  1383.     DWORD LvaToFirstSymbol;
  1384.     DWORD NumberOfLinenumbers;
  1385.     DWORD LvaToFirstLinenumber;
  1386.     DWORD RvaToFirstByteOfCode;
  1387.     DWORD RvaToLastByteOfCode;
  1388.     DWORD RvaToFirstByteOfData;
  1389.     DWORD RvaToLastByteOfData;
  1390. } IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER;
  1391. typedef struct _IMAGE_RELOCATION {
  1392.     union {
  1393.         DWORD VirtualAddress;
  1394.         DWORD RelocCount;
  1395.     } DUMMYUNIONNAME;
  1396.     DWORD SymbolTableIndex;
  1397.     WORD Type;
  1398. } IMAGE_RELOCATION,*PIMAGE_RELOCATION;
  1399. typedef struct _IMAGE_BASE_RELOCATION {
  1400.     DWORD VirtualAddress;
  1401.     DWORD SizeOfBlock;
  1402. } IMAGE_BASE_RELOCATION,*PIMAGE_BASE_RELOCATION;
  1403. typedef struct _IMAGE_LINENUMBER {
  1404.     union {
  1405.         DWORD SymbolTableIndex;
  1406.         DWORD VirtualAddress;
  1407.     } Type;
  1408.     WORD Linenumber;
  1409. } IMAGE_LINENUMBER,*PIMAGE_LINENUMBER;
  1410. typedef struct _IMAGE_ARCHIVE_MEMBER_HEADER {
  1411.     BYTE Name[16];
  1412.     BYTE Date[12];
  1413.     BYTE UserID[6];
  1414.     BYTE GroupID[6];
  1415.     BYTE Mode[8];
  1416.     BYTE Size[10];
  1417.     BYTE EndHeader[2];
  1418. } IMAGE_ARCHIVE_MEMBER_HEADER,*PIMAGE_ARCHIVE_MEMBER_HEADER;
  1419. typedef struct _IMAGE_EXPORT_DIRECTORY {
  1420.     DWORD Characteristics;
  1421.     DWORD TimeDateStamp;
  1422.     WORD MajorVersion;
  1423.     WORD MinorVersion;
  1424.     DWORD Name;
  1425.     DWORD Base;
  1426.     DWORD NumberOfFunctions;
  1427.     DWORD NumberOfNames;
  1428.     PDWORD *AddressOfFunctions;
  1429.     PDWORD *AddressOfNames;
  1430.     PWORD *AddressOfNameOrdinals;
  1431. } IMAGE_EXPORT_DIRECTORY,*PIMAGE_EXPORT_DIRECTORY;
  1432. typedef struct _IMAGE_IMPORT_BY_NAME {
  1433.     WORD Hint;
  1434.     BYTE Name[1];
  1435. } IMAGE_IMPORT_BY_NAME,*PIMAGE_IMPORT_BY_NAME;
  1436. typedef struct _IMAGE_THUNK_DATA {
  1437.     union {
  1438.         PBYTE ForwarderString;
  1439.         PDWORD Function;
  1440.         DWORD Ordinal;
  1441.         PIMAGE_IMPORT_BY_NAME AddressOfData;
  1442.     } u1;
  1443. } IMAGE_THUNK_DATA,*PIMAGE_THUNK_DATA;
  1444. typedef struct _IMAGE_IMPORT_DESCRIPTOR {
  1445.     union {
  1446.         DWORD Characteristics;
  1447.         PIMAGE_THUNK_DATA OriginalFirstThunk;
  1448.     } DUMMYUNIONNAME;
  1449.     DWORD TimeDateStamp;
  1450.     DWORD ForwarderChain;
  1451.     DWORD Name;
  1452.     PIMAGE_THUNK_DATA FirstThunk;
  1453. } IMAGE_IMPORT_DESCRIPTOR,*PIMAGE_IMPORT_DESCRIPTOR;
  1454. typedef struct _IMAGE_BOUND_IMPORT_DESCRIPTOR {
  1455.     DWORD TimeDateStamp;
  1456.     WORD OffsetModuleName;
  1457.     WORD NumberOfModuleForwarderRefs;
  1458. } IMAGE_BOUND_IMPORT_DESCRIPTOR,*PIMAGE_BOUND_IMPORT_DESCRIPTOR;
  1459. typedef struct _IMAGE_BOUND_FORWARDER_REF {
  1460.     DWORD TimeDateStamp;
  1461.     WORD OffsetModuleName;
  1462.     WORD Reserved;
  1463. } IMAGE_BOUND_FORWARDER_REF,*PIMAGE_BOUND_FORWARDER_REF;
  1464. typedef void(NTAPI *PIMAGE_TLS_CALLBACK)(PVOID,DWORD,PVOID);
  1465. typedef struct _IMAGE_TLS_DIRECTORY {
  1466.     DWORD StartAddressOfRawData;
  1467.     DWORD EndAddressOfRawData;
  1468.     PDWORD AddressOfIndex;
  1469.     PIMAGE_TLS_CALLBACK *AddressOfCallBacks;
  1470.     DWORD SizeOfZeroFill;
  1471.     DWORD Characteristics;
  1472. } IMAGE_TLS_DIRECTORY,*PIMAGE_TLS_DIRECTORY;
  1473. typedef struct _IMAGE_RESOURCE_DIRECTORY {
  1474.     DWORD Characteristics;
  1475.     DWORD TimeDateStamp;
  1476.     WORD MajorVersion;
  1477.     WORD MinorVersion;
  1478.     WORD NumberOfNamedEntries;
  1479.     WORD NumberOfIdEntries;
  1480. } IMAGE_RESOURCE_DIRECTORY,*PIMAGE_RESOURCE_DIRECTORY;
  1481. typedef struct _IMAGE_RESOURCE_DIRECTORY_ENTRY {
  1482.     union {
  1483.         struct {
  1484.             DWORD NameOffset:31;
  1485.             DWORD NameIsString:1;
  1486.         }DUMMYSTRUCTNAME;
  1487.         DWORD Name;
  1488.         WORD Id;
  1489.     } DUMMYUNIONNAME;
  1490.     union {
  1491.         DWORD OffsetToData;
  1492.         struct {
  1493.             DWORD OffsetToDirectory:31;
  1494.             DWORD DataIsDirectory:1;
  1495.         } DUMMYSTRUCTNAME2;
  1496.     } DUMMYUNIONNAME2;
  1497. } IMAGE_RESOURCE_DIRECTORY_ENTRY,*PIMAGE_RESOURCE_DIRECTORY_ENTRY;
  1498. typedef struct _IMAGE_RESOURCE_DIRECTORY_STRING {
  1499.     WORD Length;
  1500.     CHAR NameString[1];
  1501. } IMAGE_RESOURCE_DIRECTORY_STRING,*PIMAGE_RESOURCE_DIRECTORY_STRING;
  1502. typedef struct _IMAGE_RESOURCE_DIR_STRING_U {
  1503.     WORD Length;
  1504.     WCHAR NameString[1];
  1505. } IMAGE_RESOURCE_DIR_STRING_U,*PIMAGE_RESOURCE_DIR_STRING_U;
  1506. typedef struct _IMAGE_RESOURCE_DATA_ENTRY {
  1507.     DWORD OffsetToData;
  1508.     DWORD Size;
  1509.     DWORD CodePage;
  1510.     DWORD Reserved;
  1511. } IMAGE_RESOURCE_DATA_ENTRY,*PIMAGE_RESOURCE_DATA_ENTRY;
  1512. typedef struct _IMAGE_LOAD_CONFIG_DIRECTORY {
  1513.     DWORD Characteristics;
  1514.     DWORD TimeDateStamp;
  1515.     WORD MajorVersion;
  1516.     WORD MinorVersion;
  1517.     DWORD GlobalFlagsClear;
  1518.     DWORD GlobalFlagsSet;
  1519.     DWORD CriticalSectionDefaultTimeout;
  1520.     DWORD DeCommitFreeBlockThreshold;
  1521.     DWORD DeCommitTotalFreeThreshold;
  1522.     PVOID LockPrefixTable;
  1523.     DWORD MaximumAllocationSize;
  1524.     DWORD VirtualMemoryThreshold;
  1525.     DWORD ProcessHeapFlags;
  1526.     DWORD Reserved[4];
  1527. } IMAGE_LOAD_CONFIG_DIRECTORY,*PIMAGE_LOAD_CONFIG_DIRECTORY;
  1528. typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY {
  1529.     DWORD BeginAddress;
  1530.     DWORD EndAddress;
  1531.     PVOID ExceptionHandler;
  1532.     PVOID HandlerData;
  1533.     DWORD PrologEndAddress;
  1534. } IMAGE_RUNTIME_FUNCTION_ENTRY,*PIMAGE_RUNTIME_FUNCTION_ENTRY;
  1535. typedef struct _IMAGE_DEBUG_DIRECTORY {
  1536.     DWORD Characteristics;
  1537.     DWORD TimeDateStamp;
  1538.     WORD MajorVersion;
  1539.     WORD MinorVersion;
  1540.     DWORD Type;
  1541.     DWORD SizeOfData;
  1542.     DWORD AddressOfRawData;
  1543.     DWORD PointerToRawData;
  1544. } IMAGE_DEBUG_DIRECTORY,*PIMAGE_DEBUG_DIRECTORY;
  1545. typedef struct _FPO_DATA {
  1546.     DWORD ulOffStart;
  1547.     DWORD cbProcSize;
  1548.     DWORD cdwLocals;
  1549.     WORD cdwParams;
  1550.     WORD cbProlog:8;
  1551.     WORD cbRegs:3;
  1552.     WORD fHasSEH:1;
  1553.     WORD fUseBP:1;
  1554.     WORD reserved:1;
  1555.     WORD cbFrame:2;
  1556. } FPO_DATA,*PFPO_DATA;
  1557. typedef struct _IMAGE_DEBUG_MISC {
  1558.     DWORD DataType;
  1559.     DWORD Length;
  1560.     BOOLEAN Unicode;
  1561.     BYTE Reserved[3];
  1562.     BYTE Data[1];
  1563. } IMAGE_DEBUG_MISC,*PIMAGE_DEBUG_MISC;
  1564. typedef struct _IMAGE_FUNCTION_ENTRY {
  1565.     DWORD StartingAddress;
  1566.     DWORD EndingAddress;
  1567.     DWORD EndOfPrologue;
  1568. } IMAGE_FUNCTION_ENTRY,*PIMAGE_FUNCTION_ENTRY;
  1569. typedef struct _IMAGE_SEPARATE_DEBUG_HEADER {
  1570.     WORD Signature;
  1571.     WORD Flags;
  1572.     WORD Machine;
  1573.     WORD Characteristics;
  1574.     DWORD TimeDateStamp;
  1575.     DWORD CheckSum;
  1576.     DWORD ImageBase;
  1577.     DWORD SizeOfImage;
  1578.     DWORD NumberOfSections;
  1579.     DWORD ExportedNamesSize;
  1580.     DWORD DebugDirectorySize;
  1581.     DWORD Reserved[3];
  1582. } IMAGE_SEPARATE_DEBUG_HEADER,*PIMAGE_SEPARATE_DEBUG_HEADER;
  1583. typedef enum _CM_SERVICE_NODE_TYPE {
  1584.     DriverType=SERVICE_KERNEL_DRIVER,
  1585.     FileSystemType=SERVICE_FILE_SYSTEM_DRIVER,
  1586.     Win32ServiceOwnProcess=SERVICE_WIN32_OWN_PROCESS,
  1587.     Win32ServiceShareProcess=SERVICE_WIN32_SHARE_PROCESS,
  1588.     AdapterType=SERVICE_ADAPTER,
  1589.     RecognizerType=SERVICE_RECOGNIZER_DRIVER
  1590. } SERVICE_NODE_TYPE;
  1591. typedef enum _CM_SERVICE_LOAD_TYPE {
  1592.     BootLoad=SERVICE_BOOT_START,
  1593.     SystemLoad=SERVICE_SYSTEM_START,
  1594.     AutoLoad=SERVICE_AUTO_START,
  1595.     DemandLoad=SERVICE_DEMAND_START,
  1596.     DisableLoad=SERVICE_DISABLED
  1597. } SERVICE_LOAD_TYPE;
  1598. typedef enum _CM_ERROR_CONTROL_TYPE {
  1599.     IgnoreError=SERVICE_ERROR_IGNORE,
  1600.     NormalError=SERVICE_ERROR_NORMAL,
  1601.     SevereError=SERVICE_ERROR_SEVERE,
  1602.     CriticalError=SERVICE_ERROR_CRITICAL
  1603. } SERVICE_ERROR_TYPE;
  1604.  
  1605. PVOID GetCurrentFiber(void);
  1606. PVOID GetFiberData(void);
  1607. #endif
  1608. #ifdef __cplusplus
  1609. }
  1610. #endif
  1611. #endif
  1612.