* PROGRAMMERS: Eric Kohl
*/
+#ifndef _SAMSRV_PCH_
+#define _SAMSRV_PCH_
+
#include <stdio.h>
#include <stdlib.h>
+
#define WIN32_NO_STATUS
#define _INC_WINDOWS
#define COM_NO_WINDOWS_H
+
#include <windef.h>
#include <winbase.h>
#include <winreg.h>
-#include <winuser.h>
#define NTOS_MODE_USER
-#include <ndk/cmfuncs.h>
#include <ndk/kefuncs.h>
#include <ndk/obfuncs.h>
#include <ndk/rtlfuncs.h>
#include <ddk/ntsam.h>
-#include <ntsecapi.h>
#include <sddl.h>
-
-#include <samsrv/samsrv.h>
-
#include <sam_s.h>
#include <wine/debug.h>
-
-#include "resources.h"
+WINE_DEFAULT_DEBUG_CHANNEL(samsrv);
typedef enum _SAM_DB_OBJECT_TYPE
{
extern PGENERIC_MAPPING pServerMapping;
extern ENCRYPTED_NT_OWF_PASSWORD EmptyNtHash;
extern ENCRYPTED_LM_OWF_PASSWORD EmptyLmHash;
+extern RTL_RESOURCE SampResource;
/* alias.c */
SampRemoveMemberFromAlias(IN PSAM_DB_OBJECT AliasObject,
IN PRPC_SID MemberId);
+NTSTATUS
+SampGetMembersInAlias(IN PSAM_DB_OBJECT AliasObject,
+ OUT PULONG MemberCount,
+ OUT PSAMPR_SID_INFORMATION *MemberArray);
+
+NTSTATUS
+SampRemoveAllMembersFromAlias(IN PSAM_DB_OBJECT AliasObject);
+
/* database.c */
NTSTATUS
SampGetObjectAttributeString(PSAM_DB_OBJECT DbObject,
LPWSTR AttributeName,
- RPC_UNICODE_STRING *String);
+ PRPC_UNICODE_STRING String);
+NTSTATUS
+SampSetObjectAttributeString(PSAM_DB_OBJECT DbObject,
+ LPWSTR AttributeName,
+ PRPC_UNICODE_STRING String);
/* domain.c */
SampRemoveMemberFromAllAliases(IN PSAM_DB_OBJECT DomainObject,
IN PRPC_SID MemberSid);
+NTSTATUS
+SampCreateAccountSid(IN PSAM_DB_OBJECT DomainObject,
+ IN ULONG ulRelativeId,
+ IN OUT PSID *AccountSid);
/* group.h */
/* registry.h */
NTSTATUS
-SampRegCloseKey(IN HANDLE KeyHandle);
+SampRegCloseKey(IN OUT PHANDLE KeyHandle);
NTSTATUS
SampRegCreateKey(IN HANDLE ParentKeyHandle,
IN LPCWSTR KeyName,
IN ACCESS_MASK DesiredAccess,
- OUT HANDLE KeyHandle);
+ OUT PHANDLE KeyHandle);
NTSTATUS
SampRegDeleteKey(IN HANDLE ParentKeyHandle,
SampRegOpenKey(IN HANDLE ParentKeyHandle,
IN LPCWSTR KeyName,
IN ACCESS_MASK DesiredAccess,
- OUT HANDLE KeyHandle);
+ OUT PHANDLE KeyHandle);
NTSTATUS
SampRegQueryKeyInfo(IN HANDLE KeyHandle,
SampCreateServerSD(OUT PSECURITY_DESCRIPTOR *ServerSd,
OUT PULONG Size);
+NTSTATUS
+SampCreateBuiltinDomainSD(OUT PSECURITY_DESCRIPTOR *DomainSd,
+ OUT PULONG Size);
+
+NTSTATUS
+SampCreateAccountDomainSD(OUT PSECURITY_DESCRIPTOR *DomainSd,
+ OUT PULONG Size);
+
+NTSTATUS
+SampCreateAliasSD(OUT PSECURITY_DESCRIPTOR *AliasSd,
+ OUT PULONG Size);
+
+NTSTATUS
+SampCreateGroupSD(OUT PSECURITY_DESCRIPTOR *GroupSd,
+ OUT PULONG Size);
+
+NTSTATUS
+SampCreateUserSD(IN PSID UserSid,
+ OUT PSECURITY_DESCRIPTOR *UserSd,
+ OUT PULONG Size);
/* setup.c */
NTSTATUS
SampRemoveUserFromAllGroups(IN PSAM_DB_OBJECT UserObject);
+NTSTATUS
+SampRemoveUserFromAllAliases(IN PSAM_DB_OBJECT UserObject);
+
NTSTATUS
SampSetUserPassword(IN PSAM_DB_OBJECT UserObject,
IN PENCRYPTED_NT_OWF_PASSWORD NtPassword,
IN BOOLEAN LmPasswordPresent);
NTSTATUS
-SampGetLogonHoursAttrbute(IN PSAM_DB_OBJECT UserObject,
- IN OUT PSAMPR_LOGON_HOURS LogonHours);
+SampGetLogonHoursAttribute(IN PSAM_DB_OBJECT UserObject,
+ IN OUT PSAMPR_LOGON_HOURS LogonHours);
NTSTATUS
-SampSetLogonHoursAttrbute(IN PSAM_DB_OBJECT UserObject,
- IN PSAMPR_LOGON_HOURS LogonHours);
+SampSetLogonHoursAttribute(IN PSAM_DB_OBJECT UserObject,
+ IN PSAMPR_LOGON_HOURS LogonHours);
/* utils.c */
SampGetRidFromSid(IN PSID Sid,
OUT PULONG Rid);
+NTSTATUS
+SampCheckAccountName(IN PRPC_UNICODE_STRING AccountName,
+ IN USHORT MaxLength);
+
/* Undocumented advapi32 functions */
SystemFunction007(PUNICODE_STRING string,
LPBYTE hash);
-/* EOF */
+NTSTATUS
+WINAPI
+SystemFunction013(const BYTE *in,
+ const BYTE *key,
+ LPBYTE out);
+
+#endif /* _SAMSRV_PCH_ */