2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: Security Account Manager (LSA) Server
4 * FILE: reactos/dll/win32/samsrv/samsrv.h
5 * PURPOSE: Common header file
7 * PROGRAMMERS: Eric Kohl
11 #define WIN32_NO_STATUS
13 #define NTOS_MODE_USER
14 #include <ndk/cmfuncs.h>
15 #include <ndk/kefuncs.h>
16 #include <ndk/obfuncs.h>
17 #include <ndk/rtlfuncs.h>
18 #include <ndk/umtypes.h>
19 #include <ddk/ntsam.h>
23 #include <samsrv/samsrv.h>
27 #include <wine/debug.h>
29 typedef enum _SAM_DB_OBJECT_TYPE
40 typedef struct _SAM_DB_OBJECT
43 SAM_DB_OBJECT_TYPE ObjectType
;
48 HANDLE MembersKeyHandle
; // only used by Aliases and Groups
49 struct _SAM_DB_OBJECT
*ParentObject
;
50 } SAM_DB_OBJECT
, *PSAM_DB_OBJECT
;
52 #define SAMP_DB_SIGNATURE 0x87654321
54 typedef struct _SAM_ALIAS_FIXED_DATA
59 } SAM_ALIAS_FIXED_DATA
, *PSAM_ALIAS_FIXED_DATA
;
61 typedef struct _SAM_DOMAIN_FIXED_DATA
65 LARGE_INTEGER CreationTime
;
66 LARGE_INTEGER DomainModifiedCount
;
67 LARGE_INTEGER MaxPasswordAge
;
68 LARGE_INTEGER MinPasswordAge
;
69 LARGE_INTEGER ForceLogoff
;
70 LARGE_INTEGER LockoutDuration
;
71 LARGE_INTEGER LockoutObservationWindow
;
72 LARGE_INTEGER ModifiedCountAtLastPromotion
;
74 ULONG PasswordProperties
;
75 USHORT MinPasswordLength
;
76 USHORT PasswordHistoryLength
;
77 USHORT LockoutThreshold
;
78 DOMAIN_SERVER_ENABLE_STATE DomainServerState
;
79 DOMAIN_SERVER_ROLE DomainServerRole
;
80 BOOLEAN UasCompatibilityRequired
;
81 } SAM_DOMAIN_FIXED_DATA
, *PSAM_DOMAIN_FIXED_DATA
;
83 typedef struct _SAM_GROUP_FIXED_DATA
89 } SAM_GROUP_FIXED_DATA
, *PSAM_GROUP_FIXED_DATA
;
91 typedef struct _SAM_USER_FIXED_DATA
95 LARGE_INTEGER LastLogon
;
96 LARGE_INTEGER LastLogoff
;
97 LARGE_INTEGER PasswordLastSet
;
98 LARGE_INTEGER AccountExpires
;
99 LARGE_INTEGER LastBadPasswordTime
;
101 ULONG PrimaryGroupId
;
102 ULONG UserAccountControl
;
105 USHORT BadPasswordCount
;
108 USHORT OperatorCount
;
109 } SAM_USER_FIXED_DATA
, *PSAM_USER_FIXED_DATA
;
114 SampInitDatabase(VOID
);
117 SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject
,
118 IN LPWSTR ContainerName
,
119 IN LPWSTR ObjectName
,
120 IN SAM_DB_OBJECT_TYPE ObjectType
,
121 IN ACCESS_MASK DesiredAccess
,
122 OUT PSAM_DB_OBJECT
*DbObject
);
125 SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject
,
126 IN LPWSTR ContainerName
,
127 IN LPWSTR ObjectName
,
128 IN SAM_DB_OBJECT_TYPE ObjectType
,
129 IN ACCESS_MASK DesiredAccess
,
130 OUT PSAM_DB_OBJECT
*DbObject
);
133 SampValidateDbObject(SAMPR_HANDLE Handle
,
134 SAM_DB_OBJECT_TYPE ObjectType
,
135 ACCESS_MASK DesiredAccess
,
136 PSAM_DB_OBJECT
*DbObject
);
139 SampCloseDbObject(PSAM_DB_OBJECT DbObject
);
142 SampCheckAccountNameInDomain(IN PSAM_DB_OBJECT DomainObject
,
143 IN LPWSTR lpAccountName
);
146 SampSetAccountNameInDomain(IN PSAM_DB_OBJECT DomainObject
,
147 IN LPCWSTR lpContainerName
,
148 IN LPCWSTR lpAccountName
,
149 IN ULONG ulRelativeId
);
152 SampSetObjectAttribute(PSAM_DB_OBJECT DbObject
,
153 LPWSTR AttributeName
,
155 LPVOID AttributeData
,
156 ULONG AttributeSize
);
159 SampGetObjectAttribute(PSAM_DB_OBJECT DbObject
,
160 LPWSTR AttributeName
,
161 PULONG AttributeType
,
162 LPVOID AttributeData
,
163 PULONG AttributeSize
);
166 SampGetObjectAttributeString(PSAM_DB_OBJECT DbObject
,
167 LPWSTR AttributeName
,
168 RPC_UNICODE_STRING
*String
);
172 SampRegCloseKey(IN HANDLE KeyHandle
);
175 SampRegCreateKey(IN HANDLE ParentKeyHandle
,
177 IN ACCESS_MASK DesiredAccess
,
178 OUT HANDLE KeyHandle
);
181 SampRegDeleteKey(IN HANDLE ParentKeyHandle
,
185 SampRegEnumerateSubKey(IN HANDLE KeyHandle
,
191 SampRegOpenKey(IN HANDLE ParentKeyHandle
,
193 IN ACCESS_MASK DesiredAccess
,
194 OUT HANDLE KeyHandle
);
197 SampRegQueryKeyInfo(IN HANDLE KeyHandle
,
198 OUT PULONG SubKeyCount
,
199 OUT PULONG ValueCount
);
202 SampRegDeleteValue(IN HANDLE KeyHandle
,
203 IN LPWSTR ValueName
);
206 SampRegEnumerateValue(IN HANDLE KeyHandle
,
209 IN OUT PULONG NameLength
,
210 OUT PULONG Type OPTIONAL
,
211 OUT PVOID Data OPTIONAL
,
212 IN OUT PULONG DataLength OPTIONAL
);
215 SampRegQueryValue(IN HANDLE KeyHandle
,
217 OUT PULONG Type OPTIONAL
,
218 OUT LPVOID Data OPTIONAL
,
219 IN OUT PULONG DataLength OPTIONAL
);
222 SampRegSetValue(IN HANDLE KeyHandle
,
226 IN ULONG DataLength
);
229 VOID
SampStartRpcServer(VOID
);
232 BOOL
SampIsSetupRunning(VOID
);
233 BOOL
SampInitializeSAM(VOID
);