root/trunk/win32/ntdef.d

Revision 352, 2.5 kB (checked in by Yu Hozuki, 2 years ago)

Many argument types and return types were improved to const using CPtr template.
They follow the original headers.

  • Property svn:eol-style set to native
Line 
1 /***********************************************************************\
2 *                                ntdef.d                                *
3 *                                                                       *
4 *                       Windows API header module                       *
5 *                                                                       *
6 *                 Translated from MinGW Windows headers                 *
7 *                           by Stewart Gordon                           *
8 *                                                                       *
9 *                       Placed into public domain                       *
10 \***********************************************************************/
11 module win32.ntdef;
12
13 private import win32.basetsd, win32.subauth, win32.windef, win32.winnt;
14
15 const uint
16     OBJ_INHERIT          = 0x0002,
17     OBJ_PERMANENT        = 0x0010,
18     OBJ_EXCLUSIVE        = 0x0020,
19     OBJ_CASE_INSENSITIVE = 0x0040,
20     OBJ_OPENIF           = 0x0080,
21     OBJ_OPENLINK         = 0x0100,
22     OBJ_VALID_ATTRIBUTES = 0x01F2;
23
24 void InitializeObjectAttributes(OBJECT_ATTRIBUTES* p, UNICODE_STRING* n,
25       uint a, HANDLE r, void* s) {
26     with (*p) {
27         Length = OBJECT_ATTRIBUTES.sizeof;
28         RootDirectory = r;
29         Attributes = a;
30         ObjectName = n;
31         SecurityDescriptor = s;
32         SecurityQualityOfService = null;
33     }
34 }
35
36 bool NT_SUCCESS(int x) { return x >= 0; }
37
38 /*  In MinGW, NTSTATUS, UNICODE_STRING, STRING and their associated pointer
39  *  type aliases are defined in ntdef.h, ntsecapi.h and subauth.h, each of
40  *  which checks that none of the others is already included.
41  */
42 alias int  NTSTATUS;
43 alias int* PNTSTATUS;
44
45 struct UNICODE_STRING {
46     USHORT Length;
47     USHORT MaximumLength;
48     PWSTR  Buffer;
49 }
50 alias UNICODE_STRING*       PUNICODE_STRING;
51 alias CPtr!(UNICODE_STRING) PCUNICODE_STRING;
52
53 struct STRING {
54     USHORT Length;
55     USHORT MaximumLength;
56     PCHAR  Buffer;
57 }
58 alias STRING  ANSI_STRING, OEM_STRING;
59 alias STRING* PSTRING, PANSI_STRING, POEM_STRING;
60
61 alias LARGE_INTEGER  PHYSICAL_ADDRESS;
62 alias LARGE_INTEGER* PPHYSICAL_ADDRESS;
63
64 enum SECTION_INHERIT {
65     ViewShare = 1,
66     ViewUnmap
67 }
68
69 /*  In MinGW, this is defined in ntdef.h and ntsecapi.h, each of which checks
70  *  that the other isn't already included.
71  */
72 struct OBJECT_ATTRIBUTES {
73     ULONG           Length = OBJECT_ATTRIBUTES.sizeof;
74     HANDLE          RootDirectory;
75     PUNICODE_STRING ObjectName;
76     ULONG           Attributes;
77     PVOID           SecurityDescriptor;
78     PVOID           SecurityQualityOfService;
79 }
80 alias OBJECT_ATTRIBUTES* POBJECT_ATTRIBUTES;
Note: See TracBrowser for help on using the browser.