5 * contains NT internal defines that don't show on the Win32 API level
7 * Copyright 1997 Marcus Meissner
16 typedef DWORD NTSTATUS;
18 /* Security Ids of NT */
23 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY;
29 BYTE SubAuthorityCount;
30 SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
31 DWORD SubAuthority[1];
35 #define SID_REVISION (1) /* Current revision */
36 #define SID_MAX_SUB_AUTHORITIES (15) /* current max subauths */
37 #define SID_RECOMMENDED_SUB_AUTHORITIES (1) /* recommended subauths */
41 #define ACL_REVISION 2
43 #define ACL_REVISION1 1
44 #define ACL_REVISION2 2
56 /* ACEs, directly starting after an ACL */
57 typedef struct _ACE_HEADER {
61 } ACE_HEADER,*LPACE_HEADER;
64 #define ACCESS_ALLOWED_ACE_TYPE 0
65 #define ACCESS_DENIED_ACE_TYPE 1
66 #define SYSTEM_AUDIT_ACE_TYPE 2
67 #define SYSTEM_ALARM_ACE_TYPE 3
69 /* inherit AceFlags */
70 #define OBJECT_INHERIT_ACE 0x01
71 #define CONTAINER_INHERIT_ACE 0x02
72 #define NO_PROPAGATE_INHERIT_ACE 0x04
73 #define INHERIT_ONLY_ACE 0x08
74 #define VALID_INHERIT_FLAGS 0x0F
76 /* AceFlags mask for what events we (should) audit */
77 #define SUCCESSFUL_ACCESS_ACE_FLAG 0x40
78 #define FAILED_ACCESS_ACE_FLAG 0x80
80 /* different ACEs depending on AceType
81 * SidStart marks the begin of a SID
82 * so the thing finally looks like this:
87 typedef struct _ACCESS_ALLOWED_ACE {
91 } ACCESS_ALLOWED_ACE,*LPACCESS_ALLOWED_ACE;
93 typedef struct _ACCESS_DENIED_ACE {
97 } ACCESS_DENIED_ACE,*LPACCESS_DENIED_ACE;
99 typedef struct _SYSTEM_AUDIT_ACE {
103 } SYSTEM_AUDIT_ACE,*LPSYSTEM_AUDIT_ACE;
105 typedef struct _SYSTEM_ALARM_ACE {
109 } SYSTEM_ALARM_ACE,*LPSYSTEM_ALARM_ACE;
111 #define SECURITY_DESCRIPTOR_REVISION 1
112 #define SECURITY_DESCRIPTOR_REVISION1 1
115 typedef WORD SECURITY_DESCRIPTOR_CONTROL;
118 #define SE_OWNER_DEFAULTED 0x0001
119 #define SE_GROUP_DEFAULTED 0x0002
120 #define SE_DACL_PRESENT 0x0004
121 #define SE_DACL_DEFAULTED 0x0008
122 #define SE_SACL_PRESENT 0x0010
123 #define SE_SACL_DEFAULTED 0x0020
124 #define SE_SELF_RELATIVE 0x8000
126 /* This was moved to windows.h
130 SECURITY_DESCRIPTOR_CONTROL Control;
135 } SECURITY_DESCRIPTOR,*PSECURITY_DESCRIPTOR,*LPSECURITY_DESCRIPTOR;
138 typedef enum tagSID_NAME_USE {
143 SidTypeWellKnownGroup,
144 SidTypeDeletedAccount,
147 } SID_NAME_USE,*PSID_NAME_USE;
149 typedef struct _RTL_RWLOCK {
150 CRITICAL_SECTION rtlCS;
151 HANDLE32 hSharedReleaseSemaphore;
152 UINT32 uSharedWaiters;
153 HANDLE32 hExclusiveReleaseSemaphore;
154 UINT32 uExclusiveWaiters;
156 HANDLE32 hOwningThreadId;
157 DWORD dwTimeoutBoost;
159 } RTL_RWLOCK, *LPRTL_RWLOCK;
161 VOID WINAPI RtlInitializeResource(LPRTL_RWLOCK);
162 VOID WINAPI RtlDeleteResource(LPRTL_RWLOCK);
163 BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK, BYTE fWait);
164 BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK, BYTE fWait);
165 VOID WINAPI RtlReleaseResource(LPRTL_RWLOCK);
166 VOID WINAPI RtlDumpResource(LPRTL_RWLOCK);
168 BOOL32 WINAPI IsValidSid(PSID);
169 BOOL32 WINAPI EqualSid(PSID,PSID);
170 BOOL32 WINAPI EqualPrefixSid(PSID,PSID);
171 DWORD WINAPI GetSidLengthRequired(BYTE);
172 BOOL32 WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,
173 DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,
175 VOID* WINAPI FreeSid(PSID);
176 BOOL32 WINAPI InitializeSecurityDescriptor(SECURITY_DESCRIPTOR*,DWORD);
177 BOOL32 WINAPI InitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
178 DWORD* WINAPI GetSidSubAuthority(PSID,DWORD);
179 BYTE * WINAPI GetSidSubAuthorityCount(PSID);
180 DWORD WINAPI GetLengthSid(PSID);
181 BOOL32 WINAPI CopySid(DWORD,PSID,PSID);
182 BOOL32 WINAPI LookupAccountSid32A(LPCSTR,PSID,LPCSTR,LPDWORD,LPCSTR,LPDWORD,
184 BOOL32 WINAPI LookupAccountSid32W(LPCWSTR,PSID,LPCWSTR,LPDWORD,LPCWSTR,LPDWORD,
186 PSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority(PSID);
187 INT32 WINAPI AccessResource32(HMODULE32,HRSRC32);
188 #define AccessResource WINELIB_NAME(AccessResource)
194 #endif /* __WINE_NTDLL_H */