5 * contains NT internal defines that don't show on the Win32 API level
7 * Copyright 1997 Marcus Meissner
12 /* assumes windows.h already included */
18 typedef DWORD NTSTATUS
;
20 /* Security Ids of NT */
25 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY;
31 BYTE SubAuthorityCount;
32 SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
33 DWORD SubAuthority[1];
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 */
43 #define ACL_REVISION 2
45 #define ACL_REVISION1 1
46 #define ACL_REVISION2 2
58 /* ACEs, directly starting after an ACL */
59 typedef struct _ACE_HEADER
{
63 } ACE_HEADER
,*LPACE_HEADER
;
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
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
78 /* AceFlags mask for what events we (should) audit */
79 #define SUCCESSFUL_ACCESS_ACE_FLAG 0x40
80 #define FAILED_ACCESS_ACE_FLAG 0x80
82 /* different ACEs depending on AceType
83 * SidStart marks the begin of a SID
84 * so the thing finally looks like this:
89 typedef struct _ACCESS_ALLOWED_ACE
{
93 } ACCESS_ALLOWED_ACE
,*LPACCESS_ALLOWED_ACE
;
95 typedef struct _ACCESS_DENIED_ACE
{
99 } ACCESS_DENIED_ACE
,*LPACCESS_DENIED_ACE
;
101 typedef struct _SYSTEM_AUDIT_ACE
{
105 } SYSTEM_AUDIT_ACE
,*LPSYSTEM_AUDIT_ACE
;
107 typedef struct _SYSTEM_ALARM_ACE
{
111 } SYSTEM_ALARM_ACE
,*LPSYSTEM_ALARM_ACE
;
113 #define SECURITY_DESCRIPTOR_REVISION 1
114 #define SECURITY_DESCRIPTOR_REVISION1 1
117 typedef WORD SECURITY_DESCRIPTOR_CONTROL;
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
128 /* This was moved to windows.h
132 SECURITY_DESCRIPTOR_CONTROL Control;
137 } SECURITY_DESCRIPTOR,*PSECURITY_DESCRIPTOR,*LPSECURITY_DESCRIPTOR;
140 typedef enum tagSID_NAME_USE
{
145 SidTypeWellKnownGroup
,
146 SidTypeDeletedAccount
,
149 } SID_NAME_USE
,*PSID_NAME_USE
;
151 typedef struct _RTL_RWLOCK
{
152 CRITICAL_SECTION rtlCS
;
153 HANDLE32 hSharedReleaseSemaphore
;
154 UINT32 uSharedWaiters
;
155 HANDLE32 hExclusiveReleaseSemaphore
;
156 UINT32 uExclusiveWaiters
;
158 HANDLE32 hOwningThreadId
;
159 DWORD dwTimeoutBoost
;
161 } RTL_RWLOCK
, *LPRTL_RWLOCK
;
163 VOID WINAPI
RtlInitializeResource(LPRTL_RWLOCK
);
164 VOID WINAPI
RtlDeleteResource(LPRTL_RWLOCK
);
165 BYTE WINAPI
RtlAcquireResourceExclusive(LPRTL_RWLOCK
, BYTE fWait
);
166 BYTE WINAPI
RtlAcquireResourceShared(LPRTL_RWLOCK
, BYTE fWait
);
167 VOID WINAPI
RtlReleaseResource(LPRTL_RWLOCK
);
168 VOID WINAPI
RtlDumpResource(LPRTL_RWLOCK
);
170 BOOL32 WINAPI
IsValidSid(PSID
);
171 BOOL32 WINAPI
EqualSid(PSID
,PSID
);
172 BOOL32 WINAPI
EqualPrefixSid(PSID
,PSID
);
173 DWORD WINAPI
GetSidLengthRequired(BYTE
);
174 BOOL32 WINAPI
AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY
,BYTE
,DWORD
,
175 DWORD
,DWORD
,DWORD
,DWORD
,DWORD
,DWORD
,
177 VOID
* WINAPI
FreeSid(PSID
);
178 BOOL32 WINAPI
InitializeSecurityDescriptor(SECURITY_DESCRIPTOR
*,DWORD
);
179 BOOL32 WINAPI
InitializeSid(PSID
,PSID_IDENTIFIER_AUTHORITY
,BYTE
);
180 DWORD
* WINAPI
GetSidSubAuthority(PSID
,DWORD
);
181 BYTE
* WINAPI
GetSidSubAuthorityCount(PSID
);
182 DWORD WINAPI
GetLengthSid(PSID
);
183 BOOL32 WINAPI
CopySid(DWORD
,PSID
,PSID
);
184 BOOL32 WINAPI
LookupAccountSid32A(LPCSTR
,PSID
,LPCSTR
,LPDWORD
,LPCSTR
,LPDWORD
,
186 BOOL32 WINAPI
LookupAccountSid32W(LPCWSTR
,PSID
,LPCWSTR
,LPDWORD
,LPCWSTR
,LPDWORD
,
188 PSID_IDENTIFIER_AUTHORITY WINAPI
GetSidIdentifierAuthority(PSID
);
189 INT32 WINAPI
AccessResource32(HMODULE32
,HRSRC32
);
190 #define AccessResource WINELIB_NAME(AccessResource)
196 #endif /* __WINE_NTDLL_H */