Release 980517
[wine] / include / ntdll.h
1 #ifndef __WINE_NTDLL_H
2 #define __WINE_NTDLL_H
3 /* ntdll.h 
4  *
5  * contains NT internal defines that don't show on the Win32 API level
6  *
7  * Copyright 1997 Marcus Meissner
8  */
9
10 /* assumes windows.h already included */
11
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15
16 /* Security Ids of NT */
17
18 /* Moved to windows.h
19 typedef struct {
20         BYTE    Value[6];
21 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
22 */
23
24 /* Moved to windows.h
25 typedef struct _SID {
26         BYTE    Revision;
27         BYTE    SubAuthorityCount;
28         SID_IDENTIFIER_AUTHORITY        IdentifierAuthority;
29         DWORD   SubAuthority[1];
30 } SID,*PSID,*LPSID;
31 */
32
33 #define SID_REVISION                    (1)     /* Current revision */
34 #define SID_MAX_SUB_AUTHORITIES         (15)    /* current max subauths */
35 #define SID_RECOMMENDED_SUB_AUTHORITIES (1)     /* recommended subauths */
36
37 /* ACLs of NT */
38
39 #define ACL_REVISION    2
40
41 #define ACL_REVISION1   1
42 #define ACL_REVISION2   2
43
44 /* Moved to windows.h
45 typedef struct _ACL {
46         BYTE    AclRevision;
47         BYTE    Sbz1;
48         WORD    AclSize;
49         WORD    AceCount;
50         WORD    Sbz2;
51 } ACL,*LPACL;
52 */
53
54 /* ACEs, directly starting after an ACL */
55 typedef struct _ACE_HEADER {
56         BYTE    AceType;
57         BYTE    AceFlags;
58         WORD    AceSize;
59 } ACE_HEADER,*LPACE_HEADER;
60
61 /* AceType */
62 #define ACCESS_ALLOWED_ACE_TYPE         0
63 #define ACCESS_DENIED_ACE_TYPE          1
64 #define SYSTEM_AUDIT_ACE_TYPE           2
65 #define SYSTEM_ALARM_ACE_TYPE           3
66
67 /* inherit AceFlags */
68 #define OBJECT_INHERIT_ACE              0x01
69 #define CONTAINER_INHERIT_ACE           0x02
70 #define NO_PROPAGATE_INHERIT_ACE        0x04
71 #define INHERIT_ONLY_ACE                0x08
72 #define VALID_INHERIT_FLAGS             0x0F
73
74 /* AceFlags mask for what events we (should) audit */
75 #define SUCCESSFUL_ACCESS_ACE_FLAG      0x40
76 #define FAILED_ACCESS_ACE_FLAG          0x80
77
78 /* different ACEs depending on AceType 
79  * SidStart marks the begin of a SID
80  * so the thing finally looks like this:
81  * 0: ACE_HEADER
82  * 4: ACCESS_MASK
83  * 8... : SID
84  */
85 typedef struct _ACCESS_ALLOWED_ACE {
86         ACE_HEADER      Header;
87         DWORD           Mask;
88         DWORD           SidStart;
89 } ACCESS_ALLOWED_ACE,*LPACCESS_ALLOWED_ACE;
90
91 typedef struct _ACCESS_DENIED_ACE {
92         ACE_HEADER      Header;
93         DWORD           Mask;
94         DWORD           SidStart;
95 } ACCESS_DENIED_ACE,*LPACCESS_DENIED_ACE;
96
97 typedef struct _SYSTEM_AUDIT_ACE {
98         ACE_HEADER      Header;
99         DWORD           Mask;
100         DWORD           SidStart;
101 } SYSTEM_AUDIT_ACE,*LPSYSTEM_AUDIT_ACE;
102
103 typedef struct _SYSTEM_ALARM_ACE {
104         ACE_HEADER      Header;
105         DWORD           Mask;
106         DWORD           SidStart;
107 } SYSTEM_ALARM_ACE,*LPSYSTEM_ALARM_ACE;
108
109 #define SECURITY_DESCRIPTOR_REVISION    1
110 #define SECURITY_DESCRIPTOR_REVISION1   1
111
112 /*
113 typedef WORD SECURITY_DESCRIPTOR_CONTROL;
114  */
115
116 #define SE_OWNER_DEFAULTED      0x0001
117 #define SE_GROUP_DEFAULTED      0x0002
118 #define SE_DACL_PRESENT         0x0004
119 #define SE_DACL_DEFAULTED       0x0008
120 #define SE_SACL_PRESENT         0x0010
121 #define SE_SACL_DEFAULTED       0x0020
122 #define SE_SELF_RELATIVE        0x8000
123
124 /* This was moved to windows.h
125 typedef struct {
126         BYTE    Revision;
127         BYTE    Sbz1;
128         SECURITY_DESCRIPTOR_CONTROL Control;
129         LPSID   Owner;
130         LPSID   Group;
131         LPACL   Sacl;
132         LPACL   Dacl;
133 } SECURITY_DESCRIPTOR,*PSECURITY_DESCRIPTOR,*LPSECURITY_DESCRIPTOR;
134 */
135
136 typedef enum tagSID_NAME_USE {
137         SidTypeUser = 1,
138         SidTypeGroup,
139         SidTypeDomain,
140         SidTypeAlias,
141         SidTypeWellKnownGroup,
142         SidTypeDeletedAccount,
143         SidTypeInvalid,
144         SidTypeUnknown
145 } SID_NAME_USE,*PSID_NAME_USE,*LPSID_NAME_USE;
146
147 /* NT lowlevel Strings (handled by Rtl* functions in NTDLL)
148  * If they are zero terminated, Length does not include the terminating 0.
149  */
150
151 typedef struct _STRING {
152         UINT16  Length;
153         UINT16  MaximumLength;
154         LPSTR   Buffer;
155 } STRING,*LPSTRING,ANSI_STRING,*LPANSI_STRING;
156
157 typedef struct _CSTRING {
158         UINT16  Length;
159         UINT16  MaximumLength;
160         LPCSTR  Buffer;
161 } CSTRING,*LPCSTRING;
162
163 typedef struct _UNICODE_STRING {
164         UINT16  Length;         /* bytes */
165         UINT16  MaximumLength;  /* bytes */
166         LPWSTR  Buffer;
167 } UNICODE_STRING,*LPUNICODE_STRING;
168
169
170 BOOL32 WINAPI IsValidSid(LPSID);
171 BOOL32 WINAPI EqualSid(LPSID,LPSID);
172 BOOL32 WINAPI EqualPrefixSid(LPSID,LPSID);
173 DWORD  WINAPI GetSidLengthRequired(BYTE);
174 BOOL32 WINAPI AllocateAndInitializeSid(LPSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,
175                                        DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,
176                                        DWORD,LPSID*);
177 VOID*  WINAPI FreeSid(LPSID);
178 BOOL32 WINAPI InitializeSecurityDescriptor(SECURITY_DESCRIPTOR*,DWORD);
179 BOOL32 WINAPI InitializeSid(LPSID,LPSID_IDENTIFIER_AUTHORITY,BYTE);
180 DWORD* WINAPI GetSidSubAuthority(LPSID,DWORD);
181 BYTE * WINAPI GetSidSubAuthorityCount(LPSID);
182 DWORD  WINAPI GetLengthSid(LPSID);
183 BOOL32 WINAPI CopySid(DWORD,LPSID,LPSID);
184 BOOL32 WINAPI LookupAccountSid32A(LPCSTR,PSID,LPCSTR,LPDWORD,LPCSTR,LPDWORD,
185                                   PSID_NAME_USE);
186 BOOL32 WINAPI LookupAccountSid32W(LPCWSTR,PSID,LPCWSTR,LPDWORD,LPCWSTR,LPDWORD,
187                                   PSID_NAME_USE);
188 LPSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority(LPSID);
189
190 #ifdef __cplusplus
191 }
192 #endif
193
194 #endif  /* __WINE_NTDLL_H */