Release 980329
[wine/multimedia.git] / include / ntdll.h
blob28f35837ddb5774fe81a51cec66504e6ff97de66
1 #ifndef __WINE_NTDLL_H
2 #define __WINE_NTDLL_H
3 /* ntdll.h
5 * contains NT internal defines that don't show on the Win32 API level
7 * Copyright 1997 Marcus Meissner
8 */
10 /* assumes windows.h already included */
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
16 /* Security Ids of NT */
18 typedef struct {
19 BYTE Value[6];
20 } SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
22 typedef struct _SID {
23 BYTE Revision;
24 BYTE SubAuthorityCount;
25 SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
26 DWORD SubAuthority[1]; /* more than one */
27 } SID,*PSID,*LPSID;
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 */
33 /* ACLs of NT */
35 #define ACL_REVISION 2
37 #define ACL_REVISION1 1
38 #define ACL_REVISION2 2
40 typedef struct _ACL {
41 BYTE AclRevision;
42 BYTE Sbz1;
43 WORD AclSize;
44 WORD AceCount;
45 WORD Sbz2;
46 } ACL,*LPACL;
48 /* ACEs, directly starting after an ACL */
49 typedef struct _ACE_HEADER {
50 BYTE AceType;
51 BYTE AceFlags;
52 WORD AceSize;
53 } ACE_HEADER,*LPACE_HEADER;
55 /* AceType */
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:
75 * 0: ACE_HEADER
76 * 4: ACCESS_MASK
77 * 8... : SID
79 typedef struct _ACCESS_ALLOWED_ACE {
80 ACE_HEADER Header;
81 DWORD Mask;
82 DWORD SidStart;
83 } ACCESS_ALLOWED_ACE,*LPACCESS_ALLOWED_ACE;
85 typedef struct _ACCESS_DENIED_ACE {
86 ACE_HEADER Header;
87 DWORD Mask;
88 DWORD SidStart;
89 } ACCESS_DENIED_ACE,*LPACCESS_DENIED_ACE;
91 typedef struct _SYSTEM_AUDIT_ACE {
92 ACE_HEADER Header;
93 DWORD Mask;
94 DWORD SidStart;
95 } SYSTEM_AUDIT_ACE,*LPSYSTEM_AUDIT_ACE;
97 typedef struct _SYSTEM_ALARM_ACE {
98 ACE_HEADER Header;
99 DWORD Mask;
100 DWORD SidStart;
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
116 typedef struct {
117 BYTE Revision;
118 BYTE Sbz1;
119 SECURITY_DESCRIPTOR_CONTROL Control;
120 LPSID Owner;
121 LPSID Group;
122 LPACL Sacl;
123 LPACL Dacl;
124 } SECURITY_DESCRIPTOR,*PSECURITY_DESCRIPTOR,*LPSECURITY_DESCRIPTOR;
126 typedef enum tagSID_NAME_USE {
127 SidTypeUser = 1,
128 SidTypeGroup,
129 SidTypeDomain,
130 SidTypeAlias,
131 SidTypeWellKnownGroup,
132 SidTypeDeletedAccount,
133 SidTypeInvalid,
134 SidTypeUnknown
135 } SID_NAME_USE,*PSID_NAME_USE,*LPSID_NAME_USE;
137 /* NT lowlevel Strings (handled by Rtl* functions in NTDLL)
138 * If they are zero terminated, Length does not include the terminating 0.
141 typedef struct _STRING {
142 UINT16 Length;
143 UINT16 MaximumLength;
144 LPSTR Buffer;
145 } STRING,*LPSTRING,ANSI_STRING,*LPANSI_STRING;
147 typedef struct _CSTRING {
148 UINT16 Length;
149 UINT16 MaximumLength;
150 LPCSTR Buffer;
151 } CSTRING,*LPCSTRING;
153 typedef struct _UNICODE_STRING {
154 UINT16 Length; /* bytes */
155 UINT16 MaximumLength; /* bytes */
156 LPWSTR Buffer;
157 } UNICODE_STRING,*LPUNICODE_STRING;
160 BOOL32 WINAPI IsValidSid(LPSID);
161 BOOL32 WINAPI EqualSid(LPSID,LPSID);
162 BOOL32 WINAPI EqualPrefixSid(LPSID,LPSID);
163 DWORD WINAPI GetSidLengthRequired(BYTE);
164 BOOL32 WINAPI AllocateAndInitializeSid(LPSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,
165 DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,
166 DWORD,LPSID*);
167 VOID* WINAPI FreeSid(LPSID);
168 BOOL32 WINAPI InitializeSecurityDescriptor(SECURITY_DESCRIPTOR*,DWORD);
169 BOOL32 WINAPI InitializeSid(LPSID,LPSID_IDENTIFIER_AUTHORITY,BYTE);
170 DWORD* WINAPI GetSidSubAuthority(LPSID,DWORD);
171 BYTE * WINAPI GetSidSubAuthorityCount(LPSID);
172 DWORD WINAPI GetLengthSid(LPSID);
173 BOOL32 WINAPI CopySid(DWORD,LPSID,LPSID);
174 BOOL32 WINAPI LookupAccountSid32A(LPCSTR,PSID,LPCSTR,LPDWORD,LPCSTR,LPDWORD,
175 PSID_NAME_USE);
176 BOOL32 WINAPI LookupAccountSid32W(LPCWSTR,PSID,LPCWSTR,LPDWORD,LPCWSTR,LPDWORD,
177 PSID_NAME_USE);
178 LPSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority(LPSID);
180 #ifdef __cplusplus
182 #endif
184 #endif /* __WINE_NTDLL_H */