source: trunk/src/NTDLL/ntdll.h@ 4

Last change on this file since 4 was 4, checked in by ktk, 26 years ago

Import

File size: 5.2 KB
Line 
1/* $Id: ntdll.h,v 1.1 1999-05-24 20:19:32 ktk Exp $ */
2
3/*
4 *
5 * Project Odin Software License can be found in LICENSE.TXT
6 *
7 */
8/*
9 * Win32 NT Runtime for OS/2
10 *
11 * 1998/05/20 Patrick Haller (haller@zebra.fh-weingarten.de)
12 *
13 * @(#) ntdll.cpp 1.0.0 1998/05/20 PH Start from WINE/NTDLL.C
14 *
15 * NT basis DLL
16 *
17 * Copyright 1996 Marcus Meissner
18 * Copyright 1988 Patrick Haller (adapted for win32os2)
19 */
20
21 /* Changes to the original NTDLL.C from the WINE project
22
23 - includes replaced by the win32os2 standard includes
24 - replaced WINAPI by WIN32API
25 - moved in some string functions
26 - replaced HANDLE32 by HANDLE
27 - lstrlen32A -> OS2lstrlenA
28 - lstrlen32W -> OS2lstrlenW
29*/
30
31#ifndef _WINNT_
32#define _WINNT_
33
34#ifdef __cplusplus
35extern "C" {
36#endif
37
38
39#include "win32type.h"
40
41typedef unsigned short int UINT16;
42typedef unsigned long int UINT32;
43typedef short int INT16;
44typedef long int INT32;
45
46
47/* Security Ids of NT */
48typedef struct {
49 BYTE Value[6];
50} SID_IDENTIFIER_AUTHORITY,*PSID_IDENTIFIER_AUTHORITY,*LPSID_IDENTIFIER_AUTHORITY;
51
52typedef struct _SID {
53 BYTE Revision;
54 BYTE SubAuthorityCount;
55 SID_IDENTIFIER_AUTHORITY IdentifierAuthority;
56 DWORD SubAuthority[1];
57} SID,*PSID,*LPSID;
58
59#define SID_REVISION (1) /* Current revision */
60#define SID_MAX_SUB_AUTHORITIES (15) /* current max subauths */
61#define SID_RECOMMENDED_SUB_AUTHORITIES (1) /* recommended subauths */
62
63/* ACLs of NT */
64
65#define ACL_REVISION 2
66
67#define ACL_REVISION1 1
68#define ACL_REVISION2 2
69
70typedef struct _ACL {
71 BYTE AclRevision;
72 BYTE Sbz1;
73 WORD AclSize;
74 WORD AceCount;
75 WORD Sbz2;
76} ACL,*LPACL;
77
78/* ACEs, directly starting after an ACL */
79typedef struct _ACE_HEADER {
80 BYTE AceType;
81 BYTE AceFlags;
82 WORD AceSize;
83} ACE_HEADER,*LPACE_HEADER;
84
85/* AceType */
86#define ACCESS_ALLOWED_ACE_TYPE 0
87#define ACCESS_DENIED_ACE_TYPE 1
88#define SYSTEM_AUDIT_ACE_TYPE 2
89#define SYSTEM_ALARM_ACE_TYPE 3
90
91/* inherit AceFlags */
92#define OBJECT_INHERIT_ACE 0x01
93#define CONTAINER_INHERIT_ACE 0x02
94#define NO_PROPAGATE_INHERIT_ACE 0x04
95#define INHERIT_ONLY_ACE 0x08
96#define VALID_INHERIT_FLAGS 0x0F
97
98/* AceFlags mask for what events we (should) audit */
99#define SUCCESSFUL_ACCESS_ACE_FLAG 0x40
100#define FAILED_ACCESS_ACE_FLAG 0x80
101
102/* different ACEs depending on AceType
103 * SidStart marks the begin of a SID
104 * so the thing finally looks like this:
105 * 0: ACE_HEADER
106 * 4: ACCESS_MASK
107 * 8... : SID
108 */
109typedef struct _ACCESS_ALLOWED_ACE {
110 ACE_HEADER Header;
111 DWORD Mask;
112 DWORD SidStart;
113} ACCESS_ALLOWED_ACE,*LPACCESS_ALLOWED_ACE;
114
115typedef struct _ACCESS_DENIED_ACE {
116 ACE_HEADER Header;
117 DWORD Mask;
118 DWORD SidStart;
119} ACCESS_DENIED_ACE,*LPACCESS_DENIED_ACE;
120
121typedef struct _SYSTEM_AUDIT_ACE {
122 ACE_HEADER Header;
123 DWORD Mask;
124 DWORD SidStart;
125} SYSTEM_AUDIT_ACE,*LPSYSTEM_AUDIT_ACE;
126
127typedef struct _SYSTEM_ALARM_ACE {
128 ACE_HEADER Header;
129 DWORD Mask;
130 DWORD SidStart;
131} SYSTEM_ALARM_ACE,*LPSYSTEM_ALARM_ACE;
132
133#define SECURITY_DESCRIPTOR_REVISION 1
134#define SECURITY_DESCRIPTOR_REVISION1 1
135
136typedef WORD SECURITY_DESCRIPTOR_CONTROL;
137
138#define SE_OWNER_DEFAULTED 0x0001
139#define SE_GROUP_DEFAULTED 0x0002
140#define SE_DACL_PRESENT 0x0004
141#define SE_DACL_DEFAULTED 0x0008
142#define SE_SACL_PRESENT 0x0010
143#define SE_SACL_DEFAULTED 0x0020
144#define SE_SELF_RELATIVE 0x8000
145
146typedef struct {
147 BYTE Revision;
148 BYTE Sbz1;
149 SECURITY_DESCRIPTOR_CONTROL Control;
150 LPSID Owner;
151 LPSID Group;
152 LPACL Sacl;
153 LPACL Dacl;
154} SECURITY_DESCRIPTOR,*PSECURITY_DESCRIPTOR,*LPSECURITY_DESCRIPTOR;
155
156
157typedef enum tagSID_NAME_USE {
158 SidTypeUser = 1,
159 SidTypeGroup,
160 SidTypeDomain,
161 SidTypeAlias,
162 SidTypeWellKnownGroup,
163 SidTypeDeletedAccount,
164 SidTypeInvalid,
165 SidTypeUnknown
166} SID_NAME_USE,*PSID_NAME_USE,*LPSID_NAME_USE;
167
168/* NT lowlevel Strings (handled by Rtl* functions in NTDLL)
169 * If they are zero terminated, Length does not include the terminating 0.
170 */
171
172typedef struct _STRING {
173 UINT16 Length;
174 UINT16 MaximumLength;
175 LPSTR Buffer;
176} STRING,*LPSTRING,ANSI_STRING,*LPANSI_STRING;
177
178typedef struct _CSTRING {
179 UINT16 Length;
180 UINT16 MaximumLength;
181 LPCSTR Buffer;
182} CSTRING,*LPCSTRING;
183
184typedef struct _UNICODE_STRING {
185 UINT16 Length; /* bytes */
186 UINT16 MaximumLength; /* bytes */
187 LPWSTR Buffer;
188} UNICODE_STRING,*LPUNICODE_STRING;
189
190
191BOOL32 WIN32API IsValidSid(LPSID);
192BOOL32 WIN32API EqualSid(LPSID,LPSID);
193BOOL32 WIN32API EqualPrefixSid(LPSID,LPSID);
194DWORD WIN32API GetSidLengthRequired(BYTE);
195BOOL32 WIN32API AllocateAndInitializeSid(LPSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,
196 DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,
197 DWORD,LPSID*);
198VOID* WIN32API FreeSid(LPSID);
199BOOL32 WIN32API InitializeSecurityDescriptor(SECURITY_DESCRIPTOR*,DWORD);
200BOOL32 WIN32API InitializeSid(LPSID,LPSID_IDENTIFIER_AUTHORITY,BYTE);
201DWORD* WIN32API GetSidSubAuthority(LPSID,DWORD);
202BYTE * WIN32API GetSidSubAuthorityCount(LPSID);
203DWORD WIN32API GetLengthSid(LPSID);
204BOOL32 WIN32API CopySid(DWORD,LPSID,LPSID);
205BOOL32 WIN32API LookupAccountSid32A(LPCSTR,PSID,LPCSTR,LPDWORD,LPCSTR,LPDWORD,
206 PSID_NAME_USE);
207BOOL32 WIN32API LookupAccountSid32W(LPCWSTR,PSID,LPCWSTR,LPDWORD,LPCWSTR,LPDWORD,
208 PSID_NAME_USE);
209LPSID_IDENTIFIER_AUTHORITY WIN32API GetSidIdentifierAuthority(LPSID);
210
211
212
213#ifdef __cplusplus
214}
215#endif
216
217#endif /* _WINNT_ */
Note: See TracBrowser for help on using the repository browser.