/* * 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 #include #include #include #include #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_ */