This repository has been archived on 2024-12-16. You can view files and clone it, but cannot push or open issues or pull requests.
CodeBlocksPortable/WATCOM/h/nt/ddk/ntdef.h

1185 lines
44 KiB
C
Raw Normal View History

/*
* ntdef.h NT definitions
*
* =========================================================================
*
* Open Watcom Project
*
* Copyright (c) 2004-2010 The Open Watcom Contributors. All Rights Reserved.
*
* This file is automatically generated. Do not edit directly.
*
* =========================================================================
*/
#ifndef _NTDEF_
#define _NTDEF_
#ifndef _ENABLE_AUTODEPEND
#pragma read_only_file;
#endif
#include <_w32ials.h>
#include <ctype.h>
#include <basetsd.h>
#include <guiddef.h>
#include <sdkddkver.h>
#include <specstrings.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Define the appropriate macro for the current processor. */
#if defined(_M_I386) && !defined(_X86_)
#define _X86_
#elif defined(_M_ALPHA) && !defined(_ALPHA_)
#define _ALPHA_
#endif
/* Calling conventions */
#ifdef _M_I386
#define FASTCALL _fastcall
#else
#define FASTCALL
#endif
#define NTAPI __stdcall
/* Variable attributes */
#define CONST const
/* Parameter attributes */
#define IN
#define OUT
#define OPTIONAL
#define NOTHING
#define CRITICAL
/* Pointer attributes */
#define UNALIGNED
#define UNALIGNED64
#define RESTRICTED_POINTER
/* Macro to perform compile-time assertions */
#define C_ASSERT( x ) typedef char __C_ASSERT__[(x) ? 1 : -1]
/* Declaration specifiers */
#define DECLSPEC_IMPORT __declspec(dllimport)
#define DECLSPEC_NORETURN
#define DECLSPEC_NOTHROW
#define DECLSPEC_ALIGN( x )
#define DECLSPEC_UUID( x )
#define DECLSPEC_NOVTABLE
#define DECLSPEC_SELECTANY
#define DECLSPEC_ADDRSAFE
#define DECLSPEC_NOINLINE
#define DECLSPEC_DEPRECATED
#ifdef DEPRECATE_DDK_FUNCTIONS
#define DECLSPEC_DEPRECATED_DDK DECLSPEC_DEPRECATED
#else
#define DECLSPEC_DEPRECATED_DDK
#endif
/* Macros to specify NT functions */
#define NTSYSAPI DECLSPEC_IMPORT
#define NTSYSCALLAPI DECLSPEC_IMPORT
/* Standard method and API calling conventions */
#define STDMETHODCALLTYPE __stdcall
#define STDMETHODVCALLTYPE __cdecl
#define STDAPICALLTYPE __stdcall
#define STDAPIVCALLTYPE __cdecl
/* Macro used to specify extern "C" */
#ifdef __cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C extern
#endif
/* Standard method implementation and API declaration macros */
#define STDAPI EXTERN_C HRESULT STDAPICALLTYPE
#define STDAPI_( x ) EXTERN_C x STDAPICALLTYPE
#define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE
#define STDAPIV_( x ) EXTERN_C x STDAPIVCALLTYPE
#define STDMETHODIMP HRESULT STDMETHODCALLTYPE
#define STDMETHODIMP_( x ) x STDMETHODCALLTYPE
#define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE
#define STDMETHODIMPV_( x ) x STDMETHODVCALLTYPE
#define STDOVERRIDEMETHODIMP STDMETHODIMP
#define STDOVERRIDEMETHODIMP_( x ) STDMETHODIMP_( x )
#define STDOVERRIDEMETHODIMPV STDMETHODIMPV
#define STDOVERRIDEMETHODIMPV_( x ) STDMETHODIMPV_( x )
#define IFACEMETHODIMP STDMETHODIMP
#define IFACEMETHODIMP_( x ) STDMETHODIMP_( x )
#define IFACEMETHODIMPV STDMETHODIMPV
#define IFACEMETHODIMPV_( x ) STDMETHODIMPV_( x )
/* Macro to declare handle data types */
#define DECLARE_HANDLE( x ) typedef struct x##__ { int dummy; } *x
/* Macro used to specify an unspecified data type or an empty parameter list */
#define VOID void
/* Macro to specify neutral strings */
#ifdef UNICODE
#define __TEXT( x ) L##x
#else
#define __TEXT( x ) x
#endif
#define TEXT( x ) __TEXT( x )
/* Primitive data types */
typedef void *PVOID;
typedef void *PVOID64;
typedef char CHAR;
typedef short SHORT;
typedef long LONG;
typedef int INT;
typedef SHORT *PSHORT;
typedef LONG *PLONG;
typedef double DOUBLE;
typedef unsigned char UCHAR;
typedef unsigned short USHORT;
typedef unsigned long ULONG;
typedef UCHAR *PUCHAR;
typedef USHORT *PUSHORT;
typedef ULONG *PULONG;
typedef signed char SCHAR;
typedef SCHAR *PSCHAR;
#if (_WIN32_WINNT >= 0x0600)
typedef CONST UCHAR *PCUCHAR;
typedef CONST USHORT *PCUSHORT;
typedef CONST ULONG *PCULONG;
typedef CONST SCHAR *PCSCHAR;
#endif
typedef void *HANDLE;
typedef HANDLE *PHANDLE;
typedef UCHAR FCHAR;
typedef USHORT FSHORT;
typedef ULONG FLONG;
typedef LONG HRESULT;
typedef char CCHAR;
typedef short CSHORT;
typedef ULONG CLONG;
typedef CCHAR *PCCHAR;
typedef CSHORT *PCSHORT;
typedef CLONG *PCLONG;
typedef ULONG LCID;
typedef PULONG PLCID;
typedef USHORT LANGID;
typedef ULONG LOGICAL;
typedef ULONG *PLOGICAL;
typedef LONG NTSTATUS;
typedef NTSTATUS *PNTSTATUS;
#if (_WIN32_WINNT >= 0x0600)
typedef CONST NTSTATUS *PCNTSTATUS;
#endif
typedef __int64 LONGLONG;
typedef unsigned __int64 ULONGLONG;
typedef LONGLONG *PLONGLONG;
typedef ULONGLONG *PULONGLONG;
typedef LONGLONG USN;
typedef CHAR *PSZ;
typedef CONST char *PCSZ;
typedef USHORT RTL_STRING_LENGTH_TYPE;
typedef UCHAR BOOLEAN;
typedef BOOLEAN *PBOOLEAN;
typedef UCHAR KIRQL;
typedef KIRQL *PKIRQL;
/* ANSI string data types */
typedef CHAR *PCHAR;
typedef CHAR *LPCH;
typedef CHAR *PCH;
typedef CONST CHAR *LPCCH;
typedef CHAR *PCCH;
typedef CHAR *NPSTR;
typedef CHAR *LPSTR;
typedef CHAR *PSTR;
typedef PSTR *PZPSTR;
typedef CONST PSTR *PCZPSTR;
typedef CONST CHAR *LPCSTR;
typedef CONST CHAR *PCSTR;
typedef PCSTR *PZPCSTR;
typedef CHAR *PZZSTR;
typedef CONST CHAR *PCZZSTR;
typedef CHAR *PNZCH;
typedef CONST CHAR *PCNZCH;
/* Unicode string data types */
typedef wchar_t WCHAR;
typedef WCHAR *PWCHAR;
typedef WCHAR *LPWCH;
typedef WCHAR *PWCH;
typedef CONST WCHAR *LPCWCH;
typedef CONST WCHAR *PCWCH;
typedef WCHAR *NWPSTR;
typedef WCHAR *LPWSTR;
typedef WCHAR *PWSTR;
typedef PWSTR *PZPWSTR;
typedef CONST PWSTR *PCZPWSTR;
typedef WCHAR UNALIGNED *LPUWSTR;
typedef WCHAR UNALIGNED *PUWSTR;
typedef CONST WCHAR *LPCWSTR;
typedef CONST WCHAR *PCWSTR;
typedef PCWSTR *PZPCWSTR;
typedef CONST WCHAR UNALIGNED *LPCUWSTR;
typedef CONST WCHAR UNALIGNED *PCUWSTR;
typedef WCHAR *PZZWSTR;
typedef CONST WCHAR *PCZZWSTR;
typedef WCHAR UNALIGNED *PUZZWSTR;
typedef CONST WCHAR UNALIGNED *PCUZZWSTR;
typedef WCHAR *PNZWCH;
typedef CONST WCHAR *PCNZWCH;
typedef WCHAR UNALIGNED *PUNZWCH;
typedef CONST WCHAR UNALIGNED *PCUNZWCH;
/* Neutral string data types */
#ifdef UNICODE
typedef WCHAR TCHAR;
typedef WCHAR *PTCHAR;
typedef WCHAR TUCHAR;
typedef WCHAR *PTUCHAR;
typedef LPWCH LPTCH;
typedef LPWCH PTCH;
typedef LPCWCH LPCTCH;
typedef LPCWCH PCTCH;
typedef LPWSTR LPTSTR;
typedef LPWSTR PTSTR;
typedef LPCWSTR LPCTSTR;
typedef LPCWSTR PCTSTR;
typedef LPUWSTR LPUTSTR;
typedef LPUWSTR PUTSTR;
typedef LPCUWSTR LPCUTSTR;
typedef LPCUWSTR PCUTSTR;
typedef PZZWSTR PZZTSTR;
typedef PCZZWSTR PCZZTSTR;
typedef PUZZWSTR PUZZTSTR;
typedef PCUZZWSTR PCUZZTSTR;
typedef PNZWCH PNZTCH;
typedef PCNZWCH PCNZTCH;
typedef PUNZWCH PUNZTCH;
typedef PCUNZWCH PCUNZTCH;
#else
typedef char TCHAR;
typedef char *PTCHAR;
typedef unsigned char TUCHAR;
typedef unsigned char *PTUCHAR;
typedef LPCH LPTCH;
typedef LPCH PTCH;
typedef LPCCH LPCTCH;
typedef LPCCH PCTCH;
typedef LPSTR LPTSTR;
typedef LPSTR PTSTR;
typedef LPCSTR LPCTSTR;
typedef LPCSTR PCTSTR;
typedef LPSTR LPUTSTR;
typedef LPSTR PUTSTR;
typedef LPCSTR LPCUTSTR;
typedef LPCSTR PCUTSTR;
typedef PZZSTR PZZTSTR;
typedef PCZZSTR PCZZTSTR;
typedef PZZSTR PUZZTSTR;
typedef PCZZSTR PCUZZTSTR;
typedef PNZCH PNZTCH;
typedef PCNZCH PCNZTCH;
typedef PNZCH PUNZTCH;
typedef PCNZCH PCUNZTCH;
#endif
/* Universal Character Set (UCS) data types */
#if (_WIN32_WINNT >= 0x0600)
typedef CONST WCHAR *LPCWCHAR;
typedef CONST WCHAR *PCWCHAR;
typedef CONST WCHAR UNALIGNED *LPCUWCHAR;
typedef CONST WCHAR UNALIGNED *PCUWCHAR;
typedef unsigned long UCSCHAR;
typedef UCSCHAR *PUCSCHAR;
typedef const UCSCHAR *PCUCSCHAR;
typedef UCSCHAR *PUCSSTR;
typedef UCSCHAR UNALIGNED *PUUCSSTR;
typedef const UCSCHAR *PCUCSSTR;
typedef const UCSCHAR UNALIGNED *PCUUCSSTR;
typedef UCSCHAR UNALIGNED *PUUCSCHAR;
typedef const UCSCHAR UNALIGNED *PCUUCSCHAR;
#endif
/* Security status data type */
#ifndef __SECSTATUS_DEFINED__
#define __SECSTATUS_DEFINED__
typedef LONG SECURITY_STATUS;
#endif
/* Value used to declare an array of an unknown size */
#define ANYSIZE_ARRAY 1
/* Universal Character Set (UCS) constants */
#if (_WIN32_WINNT >= 0x0600)
#define UCSCHAR_INVALID_CHARACTER 0xFFFFFFFFL
#define MIN_UCSCHAR 0x00000000L
#define MAX_UCSCHAR 0x0010FFFFL
#endif
/* Processor group special value */
#define ALL_PROCESSOR_GROUPS 0xFFFF
/* Object handle tag bits */
#define OBJ_HANDLE_TAGBITS 0x00000003L
/* Macros to test NT status values */
#define NT_SUCCESS( x ) (((NTSTATUS)(x)) >= 0)
#define NT_INFORMATION( x ) ((((ULONG)(x)) >> 30) == 1)
#define NT_WARNING( x ) ((((ULONG)(x)) >> 30) == 2)
#define NT_ERROR( x ) ((((ULONG)(x)) >> 30) == 3)
/* Error severities */
#define APPLICATION_ERROR_MASK 0x20000000
#define ERROR_SEVERITY_SUCCES 0x00000000
#define ERROR_SEVERITY_INFORMATIONAL 0x40000000
#define ERROR_SEVERITY_WARNING 0x80000000
#define ERROR_SEVERITY_ERROR 0xC0000000
/* Null character values */
#define ANSI_NULL ((CHAR)0)
#define UNICODE_NULL ((WCHAR)0)
/* Object attribute flags */
#define OBJ_INHERIT 0x00000002L
#define OBJ_PERMANENT 0x00000010L
#define OBJ_EXCLUSIVE 0x00000020L
#define OBJ_CASE_INSENSITIVE 0x00000040L
#define OBJ_OPENIF 0x00000080L
#define OBJ_OPENLINK 0x00000100L
#define OBJ_KERNEL_HANDLE 0x00000200L
#define OBJ_FORCE_ACCESS_CHECK 0x00000400L
#define OBJ_VALID_ATTRIBUTES 0x000007F2L
/* Basic constants */
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef TRUE
#define TRUE 1
#endif
/* Limits of primitive data types */
#define MINCHAR 0x80
#define MAXCHAR 0x7F
#define MINSHORT 0x8000
#define MAXSHORT 0x7FFF
#define MINLONG 0x80000000
#define MAXLONG 0x7FFFFFFF
#define MAXUCHAR 0xFF
#define MAXUSHORT 0xFFFF
#define MAXULONG 0xFFFFFFFF
/* Macro to test if an argument is present */
#define ARGUMENT_PRESENT( x ) ((CHAR *)(ULONG_PTR)(x) != (CHAR *)NULL)
/* Macro to find field offsets */
#define FIELD_OFFSET( x, p ) ((LONG)(LONG_PTR)&(((x *)0)->p))
/* Macro to find the containing record */
#define CONTAINING_RECORD( p1, p2, p3 ) \
((p2 *)((PCHAR)(p1) - (ULONG_PTR)(&((p2 *)0)->p3)))
/* Suite types */
#define VER_SUITE_SMALLBUSINESS 0x00000001
#define VER_SUITE_ENTERPRISE 0x00000002
#define VER_SUITE_BACKOFFICE 0x00000004
#define VER_SUITE_COMMUNICATIONS 0x00000008
#define VER_SUITE_TERMINAL 0x00000010
#define VER_SUITE_SMALLBUSINESS_RESTRICTED 0x00000020
#define VER_SUITE_EMBEDDEDNT 0x00000040
#define VER_SUITE_DATACENTER 0x00000080
#define VER_SUITE_SINGLEUSERTS 0x00000100
#define VER_SUITE_PERSONAL 0x00000200
#define VER_SUITE_BLADE 0x00000400
#define VER_SUITE_EMBEDDED_RESTRICTED 0x00000800
#define VER_SUITE_SECURITY_APPLIANCE 0x00001000
#define VER_SUITE_STORAGE_SERVER 0x00002000
#define VER_SUITE_COMPUTE_SERVER 0x00004000
#define VER_SUITE_WH_SERVER 0x00008000
/* Product types */
#define PRODUCT_UNDEFINED 0x00000000
#define PRODUCT_ULTIMATE 0x00000001
#define PRODUCT_HOME_BASIC 0x00000002
#define PRODUCT_HOME_PREMIUM 0x00000003
#define PRODUCT_ENTERPRISE 0x00000004
#define PRODUCT_HOME_BASIC_N 0x00000005
#define PRODUCT_BUSINESS 0x00000006
#define PRODUCT_STANDARD_SERVER 0x00000007
#define PRODUCT_DATACENTER_SERVER 0x00000008
#define PRODUCT_SMALLBUSINESS_SERVER 0x00000009
#define PRODUCT_ENTERPRISE_SERVER 0x0000000A
#define PRODUCT_STARTER 0x0000000B
#define PRODUCT_DATACENTER_SERVER_CORE 0x0000000C
#define PRODUCT_STANDARD_SERVER_CORE 0x0000000D
#define PRODUCT_ENTERPRISE_SERVER_CORE 0x0000000E
#define PRODUCT_ENTERPRISE_SERVER_IA64 0x0000000F
#define PRODUCT_BUSINESS_N 0x00000010
#define PRODUCT_WEB_SERVER 0x00000011
#define PRODUCT_CLUSTER_SERVER 0x00000012
#define PRODUCT_HOME_SERVER 0x00000013
#define PRODUCT_STORAGE_EXPRESS_SERVER 0x00000014
#define PRODUCT_STORAGE_STANDARD_SERVER 0x00000015
#define PRODUCT_STORAGE_WORKGROUP_SERVER 0x00000016
#define PRODUCT_STORAGE_ENTERPRISE_SERVER 0x00000017
#define PRODUCT_SERVER_FOR_SMALLBUSINESS 0x00000018
#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM 0x00000019
#define PRODUCT_HOME_PREMIUM_N 0x0000001A
#define PRODUCT_ENTERPRISE_N 0x0000001B
#define PRODUCT_ULTIMATE_N 0x0000001C
#define PRODUCT_WEB_SERVER_CORE 0x0000001D
#define PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT 0x0000001E
#define PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY 0x0000001F
#define PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING 0x00000020
#define PRODUCT_SERVER_FOUNDATION 0x00000021
#define PRODUCT_HOME_PREMIUM_SERVER 0x00000022
#define PRODUCT_SERVER_FOR_SMALLBUSINESS_V 0x00000023
#define PRODUCT_STANDARD_SERVER_V 0x00000024
#define PRODUCT_DATACENTER_SERVER_V 0x00000025
#define PRODUCT_ENTERPRISE_SERVER_V 0x00000026
#define PRODUCT_DATACENTER_SERVER_CORE_V 0x00000027
#define PRODUCT_STANDARD_SERVER_CORE_V 0x00000028
#define PRODUCT_ENTERPRISE_SERVER_CORE_V 0x00000029
#define PRODUCT_HYPERV 0x0000002A
#define PRODUCT_STORAGE_EXPRESS_SERVER_CORE 0x0000002B
#define PRODUCT_STORAGE_STANDARD_SERVER_CORE 0x0000002C
#define PRODUCT_STORAGE_WORKGROUP_SERVER_CORE 0x0000002D
#define PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE 0x0000002E
#define PRODUCT_STARTER_N 0x0000002F
#define PRODUCT_PROFESSIONAL 0x00000030
#define PRODUCT_PROFESSIONAL_N 0x00000031
#define PRODUCT_SB_SOLUTION_SERVER 0x00000032
#define PRODUCT_SERVER_FOR_SB_SOLUTIONS 0x00000033
#define PRODUCT_STANDARD_SERVER_SOLUTIONS 0x00000034
#define PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE 0x00000035
#define PRODUCT_SB_SOLUTION_SERVER_EM 0x00000036
#define PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM 0x00000037
#define PRODUCT_SOLUTION_EMBEDDEDSERVER 0x00000038
#define PRODUCT_SOLUTION_EMBEDDEDSERVER_CORE 0x00000039
#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT 0x0000003B
#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL 0x0000003C
#define PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC 0x0000003D
#define PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC 0x0000003E
#define PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE 0x0000003F
#define PRODUCT_CLUSTER_SERVER_V 0x00000040
#define PRODUCT_EMBEDDED 0x00000041
#define PRODUCT_STARTER_E 0x00000042
#define PRODUCT_HOME_BASIC_E 0x00000043
#define PRODUCT_HOME_PREMIUM_E 0x00000044
#define PRODUCT_PROFESSIONAL_E 0x00000045
#define PRODUCT_ENTERPRISE_E 0x00000046
#define PRODUCT_ULTIMATE_E 0x00000047
#define PRODUCT_UNLICENSED 0xABCDABCD
/* Language identifiers */
#define LANG_NEUTRAL 0x00
#define LANG_INVARIANT 0x7F
#define LANG_AFRIKAANS 0x36
#define LANG_ALBANIAN 0x1C
#define LANG_ALSATIAN 0x84
#define LANG_AMHARIC 0x5E
#define LANG_ARABIC 0x01
#define LANG_ARMENIAN 0x2B
#define LANG_ASSAMESE 0x4D
#define LANG_AZERI 0x2C
#define LANG_BASHKIR 0x6D
#define LANG_BASQUE 0x2D
#define LANG_BELARUSIAN 0x23
#define LANG_BENGALI 0x45
#define LANG_BRETON 0x7E
#define LANG_BULGARIAN 0x02
#define LANG_CATALAN 0x03
#define LANG_CHINESE 0x04
#define LANG_CORSICAN 0x83
#define LANG_CROATIAN 0x1A
#define LANG_CZECH 0x05
#define LANG_DANISH 0x06
#define LANG_DARI 0x8C
#define LANG_DIVEHI 0x65
#define LANG_DUTCH 0x13
#define LANG_ENGLISH 0x09
#define LANG_ESTONIAN 0x25
#define LANG_FAEROESE 0x38
#define LANG_FARSI 0x29
#define LANG_FILIPINO 0x64
#define LANG_FINNISH 0x0B
#define LANG_FRENCH 0x0C
#define LANG_FRISIAN 0x62
#define LANG_GALICIAN 0x56
#define LANG_GEORGIAN 0x37
#define LANG_GERMAN 0x07
#define LANG_GREEK 0x08
#define LANG_GREENLANDIC 0x6F
#define LANG_GUJARATI 0x47
#define LANG_HAUSA 0x68
#define LANG_HEBREW 0x0D
#define LANG_HINDI 0x39
#define LANG_HUNGARIAN 0x0E
#define LANG_ICELANDIC 0x0F
#define LANG_IGBO 0x70
#define LANG_INDONESIAN 0x21
#define LANG_INUKTITUT 0x5D
#define LANG_IRISH 0x3C
#define LANG_ITALIAN 0x10
#define LANG_JAPANESE 0x11
#define LANG_KANNADA 0x4B
#define LANG_KASHMIRI 0x60
#define LANG_KAZAK 0x3F
#define LANG_KHMER 0x53
#define LANG_KICHE 0x86
#define LANG_KINYARWANDA 0x87
#define LANG_KONKANI 0x57
#define LANG_KOREAN 0x12
#define LANG_KYRGYZ 0x40
#define LANG_LAO 0x54
#define LANG_LATVIAN 0x26
#define LANG_LITHUANIAN 0x27
#define LANG_LOWER_SORBIAN 0x2E
#define LANG_LUXEMBOURGISH 0x6E
#define LANG_MACEDONIAN 0x2F
#define LANG_MALAY 0x3E
#define LANG_MALAYALAM 0x4C
#define LANG_MALTESE 0x3A
#define LANG_MANIPURI 0x58
#define LANG_MAORI 0x81
#define LANG_MAPUDUNGUN 0x7A
#define LANG_MARATHI 0x4E
#define LANG_MOHAWK 0x7C
#define LANG_MONGOLIAN 0x50
#define LANG_NEPALI 0x61
#define LANG_NORWEGIAN 0x14
#define LANG_OCCITAN 0x82
#define LANG_ORIYA 0x48
#define LANG_PASHTO 0x63
#define LANG_PERSIAN 0x29
#define LANG_POLISH 0x15
#define LANG_PORTUGUESE 0x16
#define LANG_PUNJABI 0x46
#define LANG_QUECHUA 0x6B
#define LANG_ROMANIAN 0x18
#define LANG_ROMANSH 0x17
#define LANG_RUSSIAN 0x19
#define LANG_SAMI 0x3B
#define LANG_SANSKRIT 0x4F
#define LANG_SCOTTISH_GAELIC 0x91
#define LANG_SERBIAN 0x1A
#define LANG_SINDHI 0x59
#define LANG_SINHALESE 0x5B
#define LANG_SLOVAK 0x1B
#define LANG_SLOVENIAN 0x24
#define LANG_SOTHO 0x6C
#define LANG_SPANISH 0x0A
#define LANG_SWAHILI 0x41
#define LANG_SWEDISH 0x1D
#define LANG_SYRIAC 0x5A
#define LANG_TAJIK 0x28
#define LANG_TAMAZIGHT 0x5F
#define LANG_TAMIL 0x49
#define LANG_TATAR 0x44
#define LANG_TELUGU 0x4A
#define LANG_THAI 0x1E
#define LANG_TIBETAN 0x51
#define LANG_TIGRIGNA 0x73
#define LANG_TSWANA 0x32
#define LANG_TURKISH 0x1F
#define LANG_TURKMEN 0x42
#define LANG_UIGHUR 0x80
#define LANG_UKRAINIAN 0x22
#define LANG_UPPER_SORBIAN 0x2E
#define LANG_URDU 0x20
#define LANG_UZBEK 0x43
#define LANG_VIETNAMESE 0x2A
#define LANG_WELSH 0x52
#define LANG_WOLOF 0x88
#define LANG_XHOSA 0x34
#define LANG_YAKUT 0x85
#define LANG_YI 0x78
#define LANG_YORUBA 0x6A
#define LANG_ZULU 0x35
/* Sublanguage identifiers */
#define SUBLANG_NEUTRAL 0x00
#define SUBLANG_DEFAULT 0x01
#define SUBLANG_SYS_DEFAULT 0x02
#define SUBLANG_CUSTOM_DEFAULT 0x03
#define SUBLANG_CUSTOM_UNSPECIFIED 0x04
#define SUBLANG_UI_CUSTOM_DEFAULT 0x05
#define SUBLANG_AFRIKAANS_SOUTH_AFRICA 0x01
#define SUBLANG_ALBANIAN_ALBANIA 0x01
#define SUBLANG_ALSATIAN_FRANCE 0x01
#define SUBLANG_AMHARIC_ETHIOPIA 0x01
#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
#define SUBLANG_ARABIC_IRAQ 0x02
#define SUBLANG_ARABIC_EGYPT 0x03
#define SUBLANG_ARABIC_LIBYA 0x04
#define SUBLANG_ARABIC_ALGERIA 0x05
#define SUBLANG_ARABIC_MOROCCO 0x06
#define SUBLANG_ARABIC_TUNISIA 0x07
#define SUBLANG_ARABIC_OMAN 0x08
#define SUBLANG_ARABIC_YEMEN 0x09
#define SUBLANG_ARABIC_SYRIA 0x0A
#define SUBLANG_ARABIC_JORDAN 0x0B
#define SUBLANG_ARABIC_LEBANON 0x0C
#define SUBLANG_ARABIC_KUWAIT 0x0D
#define SUBLANG_ARABIC_UAE 0x0E
#define SUBLANG_ARABIC_BAHRAIN 0x0F
#define SUBLANG_ARABIC_QATAR 0x10
#define SUBLANG_ARMENIAN_ARMENIA 0x01
#define SUBLANG_ASSAMESE_INDIA 0x01
#define SUBLANG_AZERI_LATIN 0x01
#define SUBLANG_AZERI_CYRILLIC 0x02
#define SUBLANG_BASHKIR_RUSSIA 0x01
#define SUBLANG_BASQUE_BASQUE 0x01
#define SUBLANG_BELARUSIAN_BELARUS 0x01
#define SUBLANG_BENGALI 0x01
#define SUBLANG_BENGALI_BANGLADESH 0x02
#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_LATIN 0x05
#define SUBLANG_BOSNIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x08
#define SUBLANG_BRETON_FRANCE 0x01
#define SUBLANG_BULGARIAN_BULGARIA 0x01
#define SUBLANG_CATALAN_CATALAN 0x01
#define SUBLANG_CHINESE_TRADITIONAL 0x01
#define SUBLANG_CHINESE_SIMPLIFIED 0x02
#define SUBLANG_CHINESE_HONGKONG 0x03
#define SUBLANG_CHINESE_SINGAPORE 0x04
#define SUBLANG_CHINESE_MACAU 0x05
#define SUBLANG_CORSICAN_FRANCE 0x01
#define SUBLANG_CZECH_CZECH_REPUBLIC 0x01
#define SUBLANG_CROATIAN_CROATIA 0x01
#define SUBLANG_CROATIAN_BOSNIA_HERZEGOVINA_LATIN 0x04
#define SUBLANG_DANISH_DENMARK 0x01
#define SUBLANG_DARI_AFGHANISTAN 0x01
#define SUBLANG_DIVEHI_MALDIVES 0x01
#define SUBLANG_DUTCH 0x01
#define SUBLANG_DUTCH_BELGIAN 0x02
#define SUBLANG_ENGLISH_US 0x01
#define SUBLANG_ENGLISH_UK 0x02
#define SUBLANG_ENGLISH_AUS 0x03
#define SUBLANG_ENGLISH_CAN 0x04
#define SUBLANG_ENGLISH_NZ 0x05
#define SUBLANG_ENGLISH_EIRE 0x06
#define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07
#define SUBLANG_ENGLISH_JAMAICA 0x08
#define SUBLANG_ENGLISH_CARIBBEAN 0x09
#define SUBLANG_ENGLISH_BELIZE 0x0A
#define SUBLANG_ENGLISH_TRINIDAD 0x0B
#define SUBLANG_ENGLISH_ZIMBABWE 0x0C
#define SUBLANG_ENGLISH_PHILIPPINES 0x0D
#define SUBLANG_ENGLISH_INDIA 0x10
#define SUBLANG_ENGLISH_MALAYSIA 0x11
#define SUBLANG_ENGLISH_SINGAPORE 0x12
#define SUBLANG_ESTONIAN_ESTONIA 0x01
#define SUBLANG_FAEROESE_FAROE_ISLANDS 0x01
#define SUBLANG_FILIPINO_PHILIPPINES 0x01
#define SUBLANG_FINNISH_FINLAND 0x01
#define SUBLANG_FRENCH 0x01
#define SUBLANG_FRENCH_BELGIAN 0x02
#define SUBLANG_FRENCH_CANADIAN 0x03
#define SUBLANG_FRENCH_SWISS 0x04
#define SUBLANG_FRENCH_LUXEMBOURG 0x05
#define SUBLANG_FRENCH_MONACO 0x06
#define SUBLANG_FRISIAN_NETHERLANDS 0x01
#define SUBLANG_GALICIAN_GALICIAN 0x01
#define SUBLANG_GEORGIAN_GEORGIA 0x01
#define SUBLANG_GERMAN 0x01
#define SUBLANG_GERMAN_SWISS 0x02
#define SUBLANG_GERMAN_AUSTRIAN 0x03
#define SUBLANG_GERMAN_LUXEMBOURG 0x04
#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
#define SUBLANG_GREEK_GREECE 0x01
#define SUBLANG_GREENLANDIC_GREENLAND 0x01
#define SUBLANG_GUJARATI_INDIA 0x01
#define SUBLANG_HAUSA_NIGERIA_LATIN 0x01
#define SUBLANG_HEBREW_ISRAEL 0x01
#define SUBLANG_HINDI_INDIA 0x01
#define SUBLANG_HUNGARIAN_HUNGARY 0x01
#define SUBLANG_ICELANDIC_ICELAND 0x01
#define SUBLANG_IGBO_NIGERIA 0x01
#define SUBLANG_INDONESIAN_INDONESIA 0x01
#define SUBLANG_INUKTITUT_CANADA 0x01
#define SUBLANG_INUKTITUT_CANADA_LATIN 0x02
#define SUBLANG_IRISH_IRELAND 0x01
#define SUBLANG_ITALIAN 0x01
#define SUBLANG_ITALIAN_SWISS 0x02
#define SUBLANG_JAPANESE_JAPAN 0x01
#define SUBLANG_KANNADA_INDIA 0x01
#define SUBLANG_KASHMIRI_SASIA 0x02
#define SUBLANG_KASHMIRI_INDIA 0x02
#define SUBLANG_KAZAK_KAZAKHSTAN 0x01
#define SUBLANG_KHMER_CAMBODIA 0x01
#define SUBLANG_KICHE_GUATEMALA 0x01
#define SUBLANG_KINYARWANDA_RWANDA 0x01
#define SUBLANG_KONKANI_INDIA 0x01
#define SUBLANG_KOREAN 0x01
#define SUBLANG_KYRGYZ_KYRGYZSTAN 0x01
#define SUBLANG_LAO_LAO 0x01
#define SUBLANG_LATVIAN_LATVIA 0x01
#define SUBLANG_LITHUANIAN 0x01
#define SUBLANG_LOWER_SORBIAN_GERMANY 0x02
#define SUBLANG_LUXEMBOURGISH_LUXEMBOURG 0x01
#define SUBLANG_MACEDONIAN_MACEDONIA 0x01
#define SUBLANG_MALAY_MALAYSIA 0x01
#define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02
#define SUBLANG_MALAYALAM_INDIA 0x01
#define SUBLANG_MALTESE_MALTA 0x01
#define SUBLANG_MAORI_NEW_ZEALAND 0x01
#define SUBLANG_MAPUDUNGUN_CHILE 0x01
#define SUBLANG_MARATHI_INDIA 0x01
#define SUBLANG_MOHAWK_MOHAWK 0x01
#define SUBLANG_MONGOLIAN_CYRILLIC_MONGOLIA 0x01
#define SUBLANG_MONGOLIAN_PRC 0x02
#define SUBLANG_NEPALI_INDIA 0x02
#define SUBLANG_NEPALI_NEPAL 0x01
#define SUBLANG_NORWEGIAN_BOKMAL 0x01
#define SUBLANG_NORWEGIAN_NYNORSK 0x02
#define SUBLANG_OCCITAN_FRANCE 0x01
#define SUBLANG_ORIYA_INDIA 0x01
#define SUBLANG_PASHTO_AFGHANISTAN 0x01
#define SUBLANG_PERSIAN_IRAN 0x01
#define SUBLANG_POLISH_POLAND 0x01
#define SUBLANG_PORTUGUESE 0x02
#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01
#define SUBLANG_PUNJABI_INDIA 0x01
#define SUBLANG_QUECHUA_BOLIVIA 0x01
#define SUBLANG_QUECHUA_ECUADOR 0x02
#define SUBLANG_QUECHUA_PERU 0x03
#define SUBLANG_ROMANIAN_ROMANIA 0x01
#define SUBLANG_ROMANSH_SWITZERLAND 0x01
#define SUBLANG_RUSSIAN_RUSSIA 0x01
#define SUBLANG_SAMI_NORTHERN_NORWAY 0x01
#define SUBLANG_SAMI_NORTHERN_SWEDEN 0x02
#define SUBLANG_SAMI_NORTHERN_FINLAND 0x03
#define SUBLANG_SAMI_LULE_NORWAY 0x04
#define SUBLANG_SAMI_LULE_SWEDEN 0x05
#define SUBLANG_SAMI_SOUTHERN_NORWAY 0x06
#define SUBLANG_SAMI_SOUTHERN_SWEDEN 0x07
#define SUBLANG_SAMI_SKOLT_FINLAND 0x08
#define SUBLANG_SAMI_INARI_FINLAND 0x09
#define SUBLANG_SANSKRIT_INDIA 0x01
#define SUBLANG_SCOTTISH_GAELIC 0x01
#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_LATIN 0x06
#define SUBLANG_SERBIAN_BOSNIA_HERZEGOVINA_CYRILLIC 0x07
#define SUBLANG_SERBIAN_MONTENEGRO_LATIN 0x0B
#define SUBLANG_SERBIAN_MONTENEGRO_CYRILLIC 0x0C
#define SUBLANG_SERBIAN_SERBIA_LATIN 0x09
#define SUBLANG_SERBIAN_SERBIA_CYRILLIC 0x0A
#define SUBLANG_SERBIAN_CROATIA 0x01
#define SUBLANG_SERBIAN_LATIN 0x02
#define SUBLANG_SERBIAN_CYRILLIC 0x03
#define SUBLANG_SINDHI_INDIA 0x01
#define SUBLANG_SINDHI_PAKISTAN 0x02
#define SUBLANG_SINDHI_AFGHANISTAN 0x02
#define SUBLANG_SINHALESE_SRI_LANKA 0x01
#define SUBLANG_SOTHO_NORTHERN_SOUTH_AFRICA 0x01
#define SUBLANG_SLOVAK_SLOVAKIA 0x01
#define SUBLANG_SLOVENIAN_SLOVENIA 0x01
#define SUBLANG_SPANISH 0x01
#define SUBLANG_SPANISH_MEXICAN 0x02
#define SUBLANG_SPANISH_MODERN 0x03
#define SUBLANG_SPANISH_GUATEMALA 0x04
#define SUBLANG_SPANISH_COSTA_RICA 0x05
#define SUBLANG_SPANISH_PANAMA 0x06
#define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07
#define SUBLANG_SPANISH_VENEZUELA 0x08
#define SUBLANG_SPANISH_COLOMBIA 0x09
#define SUBLANG_SPANISH_PERU 0x0A
#define SUBLANG_SPANISH_ARGENTINA 0x0B
#define SUBLANG_SPANISH_ECUADOR 0x0C
#define SUBLANG_SPANISH_CHILE 0x0D
#define SUBLANG_SPANISH_URUGUAY 0x0E
#define SUBLANG_SPANISH_PARAGUAY 0x0F
#define SUBLANG_SPANISH_BOLIVIA 0x10
#define SUBLANG_SPANISH_EL_SALVADOR 0x11
#define SUBLANG_SPANISH_HONDURAS 0x12
#define SUBLANG_SPANISH_NICARAGUA 0x13
#define SUBLANG_SPANISH_PEUTRO_RICO 0x14
#define SUBLANG_SPANISH_US 0x15
#define SUBLANG_SWAHILI_KENYA 0x01
#define SUBLANG_SWEDISH 0x01
#define SUBLANG_SWEDISH_FINLAND 0x02
#define SUBLANG_SYRIAC_SYRIA 0x01
#define SUBLANG_TAJIK_TAJIKISTAN 0x01
#define SUBLANG_TAMAZIGHT_ALGERIA_LATIN 0x02
#define SUBLANG_TAMIL_INDIA 0x01
#define SUBLANG_TATAR_RUSSIA 0x01
#define SUBLANG_TELUGU_INDIA 0x01
#define SUBLANG_THAI_THAILAND 0x01
#define SUBLANG_TIBETAN_PRC 0x01
#define SUBLANG_TIRGIGNA_ERITREA 0x02
#define SUBLANG_TSWANA_SOUTH_AFRICA 0x01
#define SUBLANG_TURKISH_TURKEY 0x01
#define SUBLANG_TURKMEN_TURKMENISTAN 0x01
#define SUBLANG_UIGHUR_PRC 0x01
#define SUBLANG_UKRAINIAN_UKRAINE 0x01
#define SUBLANG_UPPER_SORBIAN_GERMANY 0x01
#define SUBLANG_URDU_PAKISTAN 0x01
#define SUBLANG_URDU_INDIA 0x02
#define SUBLANG_UZBEK_LATIN 0x01
#define SUBLANG_UZBEK_CYRILLIC 0x02
#define SUBLANG_VIETNAMESE_VIETNAM 0x01
#define SUBLANG_WELSH_UNITED_KINGDOM 0x01
#define SUBLANG_WOLOF_SENEGAL 0x01
#define SUBLANG_XHOSA_SOUTH_AFRICA 0x01
#define SUBLANG_YAKUT_RUSSIA 0x01
#define SUBLANG_YI_PRC 0x01
#define SUBLANG_YURUBA_NIGERIA 0x01
#define SUBLANG_ZULU_SOUTH_AFRICA 0x01
/* Sort identifiers */
#define SORT_DEFAULT 0x0
#define SORT_INVARIANT_MATH 0x1
#define SORT_JAPANESE_XJIS 0x0
#define SORT_JAPANESE_UNICODE 0x1
#define SORT_JAPANESE_RADICALSTROKE 0x4
#define SORT_CHINESE_BIG5 0x0
#define SORT_CHINESE_PRCP 0x0
#define SORT_CHINESE_UNICODE 0x1
#define SORT_CHINESE_PRC 0x2
#define SORT_CHINESE_BOPOMOFO 0x3
#define SORT_CHINESE_RADICALSTROKE 0x4
#define SORT_KOREAN_KSC 0x0
#define SORT_KOREAN_UNICODE 0x1
#define SORT_GERMAN_PHONE_BOOK 0x1
#define SORT_HUNGARIAN_DEFAULT 0x0
#define SORT_HUNGARIAN_TECHNICAL 0x1
#define SORT_GEORGIAN_TRADITIONAL 0x0
#define SORT_GEORGIAN_MODERN 0x1
/* Macros to manipulate language identifiers */
#define MAKELANGID( p1, p2 ) (((USHORT)(p2) << 10) | (USHORT)(p1))
#define PRIMARYLANGID( x ) ((USHORT)(x) & 0x03FF)
#define SUBLANGID( x ) ((USHORT)(x) >> 10)
/* Macros to manipulate locale identifiers */
#define MAKELCID( p1, p2) (((ULONG)(USHORT)(p2) << 16) | (ULONG)(USHORT)(p1))
#define MAKESORTLCID( p1, p2, p3 ) (MAKELCID( p1, p2 ) | ((ULONG)(USHORT)(p3) << 20))
#define LANGIDFROMLCID( x ) ((USHORT)(x))
#define SORTIDFROMLCID( x ) ((USHORT)(((ULONG)(x) >> 16) & 0x0000000FL))
#define SORTVERSIONFROMLCID( x ) ((USHORT)(((ULONG)(x) >> 20) & 0x0000000FL))
/* Default languages identifiers */
#define LANG_SYSTEM_DEFAULT MAKELANGID( LANG_NEUTRAL, SUBLANG_SYS_DEFAULT )
#define LANG_USER_DEFAULT MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT )
/* Default locale identifiers */
#define LOCALE_SYSTEM_DEFAULT MAKELCID( LANG_SYSTEM_DEFAULT, SORT_DEFAULT )
#define LOCALE_USER_DEFAULT MAKELCID( LANG_USER_DEFAULT, SORT_DEFAULT )
#define LOCALE_CUSTOM_DEFAULT \
MAKELCID( MAKELANGID( LANG_NEUTRAL, SUBLANG_CUSTOM_DEFAULT ), SORT_DEFAULT )
#define LOCALE_CUSTOM_UNSPECIFIED \
MAKELCID( MAKELANGID( LANG_NEUTRAL, SUBLANG_CUSTOM_UNSPECIFIED ), SORT_DEFAULT )
#define LOCALE_CUSTOM_UI_DEFAULT \
MAKELCID( MAKELANGID( LANG_NEUTRAL, SUBLANG_UI_CUSTOM_DEFAULT ), SORT_DEFAULT )
#define LOCALE_NEUTRAL \
MAKELCID( MAKELANGID( LANG_NEUTRAL, SUBLANG_NEUTRAL ), SORT_DEFAULT )
#define LOCALE_INVARIANT \
MAKELCID( MAKELANGID( LANG_INVARIANT, SUBLANG_NEUTRAL ), SORT_DEFAULT )
/* Maximum locale name length */
#define LOCALE_NAME_MAX_LENGTH 85
/* Language identifiers for use with ConvertDefaultLocale() */
#define LANG_BOSNIAN_NEUTRAL 0x781A
#define LANG_CHINESE_SIMPLIFIED 0x0004
#define LANG_CHINESE_TRADITIONAL 0x7C04
#define LANG_SERBIAN_NEUTRAL 0x7C1A
/* Unreferenced parameter macros */
#define UNREFERENCED_PARAMETER( x ) (x)
#define DBG_UNREFERENCED_PARAMETER( x ) (x)
#define DBG_UNREFERENCED_LOCAL_VARIABLE( x ) (x)
/* Minimum and maximum macros */
#ifndef min
#define min( p1, p2 ) (((p1) < (p2)) ? (p1) : (p2))
#endif
#ifndef max
#define max( p1, p2 ) (((p1) > (p2)) ? (p1) : (p2))
#endif
/* Quad */
typedef struct _QUAD {
union {
__int64 UseThisFieldToCopy;
double DoNotUseThisField;
};
} QUAD;
typedef QUAD *PQUAD;
typedef QUAD UQUAD;
typedef UQUAD *PUQUAD;
#if (_WIN32_WINNT >= 0x0600)
typedef CONST UQUAD *PCUQUAD;
#endif
/* Compartment identifiers */
typedef enum {
UNSPECIFIED_COMPARTMENT_ID = 0,
DEFAULT_COMPARTMENT_ID = 1
} COMPARTMENT_ID;
typedef COMPARTMENT_ID *PCOMPARTMENT_ID;
/* Processor number */
typedef struct _PROCESSOR_NUMBER {
USHORT Group;
UCHAR Number;
UCHAR Reserved;
} PROCESSOR_NUMBER;
typedef PROCESSOR_NUMBER *PPROCESSOR_NUMBER;
/* Group affinity */
typedef struct _GROUP_AFFINITY {
KAFFINITY Mask;
USHORT Group;
USHORT Reserved[3];
} GROUP_AFFINITY;
typedef GROUP_AFFINITY *PGROUP_AFFINITY;
/* Large integer */
typedef union _LARGE_INTEGER {
struct {
ULONG LowPart;
LONG HighPart;
};
struct {
ULONG LowPart;
LONG HighPart;
} u;
LONGLONG QuadPart;
} LARGE_INTEGER;
typedef LARGE_INTEGER *PLARGE_INTEGER;
typedef LARGE_INTEGER PHYSICAL_ADDRESS;
typedef LARGE_INTEGER *PPHYSICAL_ADDRESS;
#define TIME LARGE_INTEGER
#define _TIME _LARGE_INTEGER
#define PTIME PLARGE_INTEGER
#define LowTime LowPart
#define HighPart HighPart
/* Unsigned large integer */
typedef union _ULARGE_INTEGER {
struct {
ULONG LowPart;
ULONG HighPart;
};
struct {
ULONG LowPart;
ULONG HighPart;
} u;
ULONGLONG QuadPart;
} ULARGE_INTEGER;
typedef ULARGE_INTEGER *PULARGE_INTEGER;
/* Locally unique identifier */
typedef struct _LUID {
ULONG LowPart;
LONG HighPart;
} LUID;
typedef LUID *PLUID;
/* Event types */
typedef enum _EVENT_TYPE {
NotificationEvent = 0,
SynchronizationEvent = 1
} EVENT_TYPE;
/* Timer types */
typedef enum _TIMER_TYPE {
NotificationTimer = 0,
SynchronizationTimer = 1
} TIMER_TYPE;
/* Wait types */
typedef enum _WAIT_TYPE {
WaitAll = 0,
WaitAny = 1
} WAIT_TYPE;
/* String */
typedef struct _STRING {
USHORT Length;
USHORT MaximumLength;
PCHAR Buffer;
} STRING;
typedef STRING *PSTRING;
typedef STRING ANSI_STRING;
typedef PSTRING PANSI_STRING;
typedef STRING OEM_STRING;
typedef PSTRING POEM_STRING;
typedef CONST STRING *PCOEM_STRING;
typedef STRING CANSI_STRING;
typedef PSTRING PCANSI_STRING;
/* Constant string */
typedef struct _CSTRING {
USHORT Length;
USHORT MaximumLength;
CONST char *Buffer;
} CSTRING;
typedef CSTRING *PCSTRING;
/* Unicode string */
typedef struct _UNICODE_STRING {
USHORT Length;
USHORT MaximumLength;
PWCH Buffer;
} UNICODE_STRING;
typedef UNICODE_STRING *PUNICODE_STRING;
typedef const UNICODE_STRING *PCUNICODE_STRING;
/* Doubly linked list entry */
typedef struct _LIST_ENTRY {
struct _LIST_ENTRY *Flink;
struct _LIST_ENTRY *Blink;
} LIST_ENTRY;
typedef LIST_ENTRY *PLIST_ENTRY;
typedef LIST_ENTRY *RESTRICTED_POINTER PRLIST_ENTRY;
/* Singly linked list entry */
typedef struct _SINGLE_LIST_ENTRY {
struct _SINGLE_LIST_ENTRY *Next;
} SINGLE_LIST_ENTRY;
typedef SINGLE_LIST_ENTRY *PSINGLE_LIST_ENTRY;
/* Doubly linked list entry (32-bit version) */
typedef struct LIST_ENTRY32 {
ULONG Flink;
ULONG Blink;
} LIST_ENTRY32;
typedef LIST_ENTRY32 *PLIST_ENTRY32;
/* Doubly linked list entry (64-bit version) */
typedef struct LIST_ENTRY64 {
ULONGLONG Flink;
ULONGLONG Blink;
} LIST_ENTRY64;
typedef LIST_ENTRY64 *PLIST_ENTRY64;
/* Singly linked list entry (32-bit version) */
typedef struct _SINGLE_LIST_ENTRY32 {
ULONG Next;
} SINGLE_LIST_ENTRY32;
typedef SINGLE_LIST_ENTRY32 *PSINGLE_LIST_ENTRY32;
/* String (32-bit version) */
typedef struct _STRING32 {
USHORT Length;
USHORT MaximumLength;
ULONG Buffer;
} STRING32;
typedef STRING32 *PSTRING32;
typedef STRING32 UNICODE_STRING32;
typedef UNICODE_STRING32 *PUNICODE_STRING32;
typedef STRING32 ANSI_STRING32;
typedef ANSI_STRING32 *PANSI_STRING32;
/* String (64-bit version) */
typedef struct _STRING64 {
USHORT Length;
USHORT MaximumLength;
ULONGLONG Buffer;
} STRING64;
typedef STRING64 *PSTRING64;
typedef STRING64 UNICODE_STRING64;
typedef UNICODE_STRING64 *PUNICODE_STRING64;
typedef STRING64 ANSI_STRING64;
typedef ANSI_STRING64 *PANSI_STRING64;
/* Object attributes (64-bit version) */
typedef struct _OBJECT_ATTRIBUTES64 {
ULONG Length;
ULONG64 RootDirectory;
ULONG64 ObjectName;
ULONG Attributes;
ULONG64 SecurityDescriptor;
ULONG64 SecurityQualityOfService;
} OBJECT_ATTRIBUTES64;
typedef OBJECT_ATTRIBUTES64 *POBJECT_ATTRIBUTES64;
typedef CONST OBJECT_ATTRIBUTES64 *PCOBJECT_ATTRIBUTES64;
/* Object attributes (32-bit version) */
typedef struct _OBJECT_ATTRIBUTES32 {
ULONG Length;
ULONG RootDirectory;
ULONG ObjectName;
ULONG Attributes;
ULONG SecurityDescriptor;
ULONG SecurityQualityOfService;
} OBJECT_ATTRIBUTES32;
typedef OBJECT_ATTRIBUTES32 *POBJECT_ATTRIBUTES32;
typedef CONST OBJECT_ATTRIBUTES32 *PCOBJECT_ATTRIBUTES32;
/* Object attributes */
typedef struct _OBJECT_ATTRIBUTES {
ULONG Length;
HANDLE RootDirectory;
PUNICODE_STRING ObjectName;
ULONG Attributes;
PVOID SecurityDescriptor;
PVOID SecurityQualityOfService;
} OBJECT_ATTRIBUTES;
typedef OBJECT_ATTRIBUTES *POBJECT_ATTRIBUTES;
typedef CONST OBJECT_ATTRIBUTES *PCOBJECT_ATTRIBUTES;
/* NT product types */
typedef enum _NT_PRODUCT_TYPE {
NtProductWinNt = 1,
NtProductLanManNt = 2,
NtProductServer = 3
} NT_PRODUCT_TYPE;
typedef NT_PRODUCT_TYPE *PNT_PRODUCT_TYPE;
/* Suite types */
typedef enum _SUITE_TYPE {
SmallBusiness = 0,
Enterprise = 1,
BackOffice = 2,
CommunicationServer = 3,
TerminalServer = 4,
SmallBusinessRestricted = 5,
EmbeddedNT = 6,
DataCenter = 7,
SingleUserTS = 8,
Personal = 9,
Blade = 10,
EmbeddedRestricted = 11,
SecurityAppliance = 12,
StorageServer = 13,
ComputeServer = 14,
WHServer = 15,
MaxSuiteType = 16
} SUITE_TYPE;
/* Functions implemented as macros */
#define Int32x32To64( p1, p2 ) ((LONGLONG)(LONG)(p1) * (LONGLONG)(LONG)(p2))
#define UInt32x32To64( p1, p2 ) ((ULONGLONG)(ULONG)(p1) * (ULONGLONG)(ULONG)(p2))
#define Int64ShllMod32( p1, p2 ) ((ULONGLONG)(p1) << (p2))
#define Int64ShraMod32( p1, p2 ) ((LONGLONG)(p1) >> (p2))
#define Int64ShrlMod32( p1, p2 ) ((ULONGLONG)(p1) >> (p2))
#define InitializeObjectAttributes( x, p1, p2, p3, p4 ) \
{ \
(x)->Length = sizeof( OBJECT_ATTRIBUTES ); \
(x)->RootDirectory = p3; \
(x)->Attributes = p2; \
(x)->ObjectName = p1; \
(x)->SecurityDescriptor = p4; \
(x)->SecurityQualityOfService = NULL; \
}
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* _NTDEF_ */