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