NtGdiGetObject
[reactos.git] / reactos / include / psdk / ntdef.h
1 #ifndef _NTDEF_H
2 #define _NTDEF_H
3 #if __GNUC__ >=3
4 #pragma GCC system_header
5 #endif
6
7 /* TODO: some compilers support this */
8 #define RESTRICTED_POINTER
9
10 #define NTAPI __stdcall
11 #if !defined(_M_CEE_PURE)
12 #define NTAPI_INLINE NTAPI
13 #else
14 #define NTAPI_INLINE
15 #endif
16
17 #ifndef DECLSPEC_NOINLINE
18 #define DECLSPEC_NOINLINE __declspec(noinline)
19 #endif
20
21 #define OBJ_INHERIT 0x00000002
22 #define OBJ_PERMANENT 0x00000010
23 #define OBJ_EXCLUSIVE 0x00000020
24 #define OBJ_CASE_INSENSITIVE 0x00000040
25 #define OBJ_OPENIF 0x00000080
26 #define OBJ_OPENLINK 0x00000100
27 #define OBJ_KERNEL_HANDLE 0x00000200
28 #define OBJ_FORCE_ACCESS_CHECK 0x00000400
29 #define OBJ_VALID_ATTRIBUTES 0x000007F2
30 #define InitializeObjectAttributes(p,n,a,r,s) { \
31 (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
32 (p)->RootDirectory = (r); \
33 (p)->Attributes = (a); \
34 (p)->ObjectName = (n); \
35 (p)->SecurityDescriptor = (s); \
36 (p)->SecurityQualityOfService = NULL; \
37 }
38 #ifndef NT_SUCCESS
39 #define NT_SUCCESS(x) ((x)>=0)
40 #endif
41 #define NT_WARNING(x) ((ULONG)(x)>>30==2)
42 #define NT_ERROR(x) ((ULONG)(x)>>30==3)
43 #if !defined(_NTSECAPI_H) && !defined(_SUBAUTH_H)
44 typedef LONG NTSTATUS, *PNTSTATUS;
45 typedef struct _UNICODE_STRING {
46 USHORT Length;
47 USHORT MaximumLength;
48 PWSTR Buffer;
49 } UNICODE_STRING, *PUNICODE_STRING;
50 typedef const UNICODE_STRING* PCUNICODE_STRING;
51 typedef struct _STRING {
52 USHORT Length;
53 USHORT MaximumLength;
54 PCHAR Buffer;
55 } STRING, *PSTRING;
56 typedef struct _CSTRING {
57 USHORT Length;
58 USHORT MaximumLength;
59 CONST CHAR *Buffer;
60 } CSTRING, *PCSTRING;
61 #endif
62 typedef STRING ANSI_STRING;
63 typedef PSTRING PANSI_STRING;
64 typedef STRING OEM_STRING;
65 typedef PSTRING POEM_STRING;
66 typedef CONST STRING* PCOEM_STRING;
67 typedef STRING CANSI_STRING;
68 typedef PSTRING PCANSI_STRING;
69 typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
70 typedef CONST CHAR *LPCCH, *PCCH;
71 typedef signed char SCHAR;
72 typedef SCHAR *PSCHAR;
73 typedef enum _SECTION_INHERIT {
74 ViewShare = 1,
75 ViewUnmap = 2
76 } SECTION_INHERIT;
77 typedef enum _NT_PRODUCT_TYPE {
78 NtProductWinNt = 1,
79 NtProductLanManNt,
80 NtProductServer
81 } NT_PRODUCT_TYPE, *PNT_PRODUCT_TYPE;
82 #if !defined(_NTSECAPI_H)
83 typedef struct _OBJECT_ATTRIBUTES {
84 ULONG Length;
85 HANDLE RootDirectory;
86 PUNICODE_STRING ObjectName;
87 ULONG Attributes;
88 PVOID SecurityDescriptor;
89 PVOID SecurityQualityOfService;
90 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
91 #endif
92 #define NOTHING
93 #define RTL_CONSTANT_STRING(s) { sizeof(s)-sizeof((s)[0]), sizeof(s), s }
94 #define TYPE_ALIGNMENT( t ) FIELD_OFFSET( struct { char x; t test; }, test )
95 #define RTL_FIELD_SIZE(type, field) (sizeof(((type *)0)->field))
96 #define RTL_NUMBER_OF_V1(A) (sizeof(A)/sizeof((A)[0]))
97 #define RTL_NUMBER_OF_V2(A) RTL_NUMBER_OF_V1(A)
98 #endif
99 #ifdef ENABLE_RTL_NUMBER_OF_V2
100 #define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V2(A)
101 #else
102 #define RTL_NUMBER_OF(A) RTL_NUMBER_OF_V1(A)
103 #define ARRAYSIZE(A) RTL_NUMBER_OF_V2(A)
104 #define MINCHAR 0x80
105 #define MAXCHAR 0x7f
106 #define MINSHORT 0x8000
107 #define MAXSHORT 0x7fff
108 #define MINLONG 0x80000000
109 #define MAXLONG 0x7fffffff
110 #define MAXUCHAR 0xff
111 #define MAXUSHORT 0xffff
112 #define MAXULONG 0xffffffff
113 #define MAXLONGLONG (0x7fffffffffffffffLL)
114 #define C_ASSERT(e) extern char __C_ASSERT__[(e)?1:-1]
115
116 #endif /* _NTDEF_H */