5 * contains NT internal defines that don't show on the Win32 API level
7 * Copyright 1997 Marcus Meissner
10 /* assumes windows.h already included */
16 /* Security Ids of NT */
20 } SID_IDENTIFIER_AUTHORITY
,*LPSID_IDENTIFIER_AUTHORITY
;
24 BYTE SubAuthorityCount
;
25 SID_IDENTIFIER_AUTHORITY IdentifierAuthority
;
26 DWORD SubAuthority
[1]; /* more than one */
29 #define SID_REVISION (1) /* Current revision */
30 #define SID_MAX_SUB_AUTHORITIES (15) /* current max subauths */
31 #define SID_RECOMMENDED_SUB_AUTHORITIES (1) /* recommended subauths */
35 #define ACL_REVISION 2
37 #define ACL_REVISION1 1
38 #define ACL_REVISION2 2
48 /* ACEs, directly starting after an ACL */
49 typedef struct _ACE_HEADER
{
53 } ACE_HEADER
,*LPACE_HEADER
;
56 #define ACCESS_ALLOWED_ACE_TYPE 0
57 #define ACCESS_DENIED_ACE_TYPE 1
58 #define SYSTEM_AUDIT_ACE_TYPE 2
59 #define SYSTEM_ALARM_ACE_TYPE 3
61 /* inherit AceFlags */
62 #define OBJECT_INHERIT_ACE 0x01
63 #define CONTAINER_INHERIT_ACE 0x02
64 #define NO_PROPAGATE_INHERIT_ACE 0x04
65 #define INHERIT_ONLY_ACE 0x08
66 #define VALID_INHERIT_FLAGS 0x0F
68 /* AceFlags mask for what events we (should) audit */
69 #define SUCCESSFUL_ACCESS_ACE_FLAG 0x40
70 #define FAILED_ACCESS_ACE_FLAG 0x80
72 /* different ACEs depending on AceType
73 * SidStart marks the begin of a SID
74 * so the thing finally looks like this:
79 typedef struct _ACCESS_ALLOWED_ACE
{
83 } ACCESS_ALLOWED_ACE
,*LPACCESS_ALLOWED_ACE
;
85 typedef struct _ACCESS_DENIED_ACE
{
89 } ACCESS_DENIED_ACE
,*LPACCESS_DENIED_ACE
;
91 typedef struct _SYSTEM_AUDIT_ACE
{
95 } SYSTEM_AUDIT_ACE
,*LPSYSTEM_AUDIT_ACE
;
97 typedef struct _SYSTEM_ALARM_ACE
{
101 } SYSTEM_ALARM_ACE
,*LPSYSTEM_ALARM_ACE
;
103 #define SECURITY_DESCRIPTOR_REVISION 1
104 #define SECURITY_DESCRIPTOR_REVISION1 1
106 typedef WORD SECURITY_DESCRIPTOR_CONTROL
;
108 #define SE_OWNER_DEFAULTED 0x0001
109 #define SE_GROUP_DEFAULTED 0x0002
110 #define SE_DACL_PRESENT 0x0004
111 #define SE_DACL_DEFAULTED 0x0008
112 #define SE_SACL_PRESENT 0x0010
113 #define SE_SACL_DEFAULTED 0x0020
114 #define SE_SELF_RELATIVE 0x8000
119 SECURITY_DESCRIPTOR_CONTROL Control
;
124 } SECURITY_DESCRIPTOR
,*LPSECURITY_DESCRIPTOR
;
126 /* NT lowlevel Strings (handled by Rtl* functions in NTDLL)
127 * If they are zero terminated, Length does not include the terminating 0.
130 typedef struct _STRING
{
132 UINT16 MaximumLength
;
134 } STRING
,*LPSTRING
,ANSI_STRING
,*LPANSI_STRING
;
136 typedef struct _CSTRING
{
138 UINT16 MaximumLength
;
140 } CSTRING
,*LPCSTRING
;
142 typedef struct _UNICODE_STRING
{
143 UINT16 Length
; /* bytes */
144 UINT16 MaximumLength
; /* bytes */
146 } UNICODE_STRING
,*LPUNICODE_STRING
;
152 #endif /* __WINE_NTDLL_H */