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/obfuncs.h>
16 #include <ndk/rtlfuncs.h>
17 #include <ndk/umtypes.h>
18 #include <ddk/ntsam.h>
22 #include <samsrv/samsrv.h>
26 #include <wine/debug.h>
28 typedef enum _SAM_DB_OBJECT_TYPE
39 typedef struct _SAM_DB_OBJECT
42 SAM_DB_OBJECT_TYPE ObjectType
;
47 HANDLE MembersKeyHandle
; // only used by Aliases and Groups
48 struct _SAM_DB_OBJECT
*ParentObject
;
49 } SAM_DB_OBJECT
, *PSAM_DB_OBJECT
;
51 #define SAMP_DB_SIGNATURE 0x87654321
56 SampInitDatabase(VOID
);
59 SampCreateDbObject(IN PSAM_DB_OBJECT ParentObject
,
60 IN LPWSTR ContainerName
,
62 IN SAM_DB_OBJECT_TYPE ObjectType
,
63 IN ACCESS_MASK DesiredAccess
,
64 OUT PSAM_DB_OBJECT
*DbObject
);
67 SampOpenDbObject(IN PSAM_DB_OBJECT ParentObject
,
68 IN LPWSTR ContainerName
,
70 IN SAM_DB_OBJECT_TYPE ObjectType
,
71 IN ACCESS_MASK DesiredAccess
,
72 OUT PSAM_DB_OBJECT
*DbObject
);
75 SampValidateDbObject(SAMPR_HANDLE Handle
,
76 SAM_DB_OBJECT_TYPE ObjectType
,
77 ACCESS_MASK DesiredAccess
,
78 PSAM_DB_OBJECT
*DbObject
);
81 SampCloseDbObject(PSAM_DB_OBJECT DbObject
);
84 SampSetDbObjectNameAlias(IN PSAM_DB_OBJECT DomainObject
,
85 IN LPCWSTR lpContainerName
,
86 IN LPCWSTR lpAliasName
,
87 IN DWORD dwAliasValue
);
90 SampCheckDbObjectNameAlias(IN PSAM_DB_OBJECT DomainObject
,
91 IN LPCWSTR lpContainerName
,
92 IN LPCWSTR lpAliasName
,
93 OUT PBOOL bAliasExists
);
96 SampSetObjectAttribute(PSAM_DB_OBJECT DbObject
,
100 ULONG AttributeSize
);
103 SampGetObjectAttribute(PSAM_DB_OBJECT DbObject
,
104 LPWSTR AttributeName
,
105 PULONG AttributeType
,
106 LPVOID AttributeData
,
107 PULONG AttributeSize
);
111 SampRegCloseKey(IN HANDLE KeyHandle
);
114 SampRegCreateKey(IN HANDLE ParentKeyHandle
,
116 IN ACCESS_MASK DesiredAccess
,
117 OUT HANDLE KeyHandle
);
120 SampRegEnumerateSubKey(IN HANDLE KeyHandle
,
126 SampRegOpenKey(IN HANDLE ParentKeyHandle
,
128 IN ACCESS_MASK DesiredAccess
,
129 OUT HANDLE KeyHandle
);
132 SampRegQueryKeyInfo(IN HANDLE KeyHandle
,
133 OUT PULONG SubKeyCount
,
134 OUT PULONG ValueCount
);
137 SampRegEnumerateValue(IN HANDLE KeyHandle
,
140 IN OUT PULONG NameLength
,
141 OUT PULONG Type OPTIONAL
,
142 OUT PVOID Data OPTIONAL
,
143 IN OUT PULONG DataLength OPTIONAL
);
146 SampRegQueryValue(IN HANDLE KeyHandle
,
148 OUT PULONG Type OPTIONAL
,
149 OUT LPVOID Data OPTIONAL
,
150 IN OUT PULONG DataLength OPTIONAL
);
153 SampRegSetValue(IN HANDLE KeyHandle
,
157 IN ULONG DataLength
);
160 VOID
SampStartRpcServer(VOID
);
163 BOOL
SampIsSetupRunning(VOID
);
164 BOOL
SampInitializeSAM(VOID
);