ReactOS  0.4.15-dev-3173-g40ee59d
samlib.c File Reference
#include "precomp.h"
#include <ndk/rtlfuncs.h>
#include <ntsam.h>
#include <sam_c.h>
#include <wine/debug.h>
Include dependency graph for samlib.c:

Go to the source code of this file.

Macros

#define NTOS_MODE_USER
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (samlib)
 
NTSTATUS WINAPI SystemFunction006 (LPCSTR password, LPSTR hash)
 
NTSTATUS WINAPI SystemFunction007 (PUNICODE_STRING string, LPBYTE hash)
 
NTSTATUS WINAPI SystemFunction012 (const BYTE *in, const BYTE *key, LPBYTE out)
 
void __RPC_FAR *__RPC_USER midl_user_allocate (SIZE_T len)
 
void __RPC_USER midl_user_free (void __RPC_FAR *ptr)
 
handle_t __RPC_USER PSAMPR_SERVER_NAME_bind (PSAMPR_SERVER_NAME pszSystemName)
 
void __RPC_USER PSAMPR_SERVER_NAME_unbind (PSAMPR_SERVER_NAME pszSystemName, handle_t hBinding)
 
NTSTATUS SampCheckPassword (IN SAMPR_HANDLE UserHandle, IN PUNICODE_STRING Password)
 
NTSTATUS NTAPI SamAddMemberToAlias (IN SAM_HANDLE AliasHandle, IN PSID MemberId)
 
NTSTATUS NTAPI SamAddMemberToGroup (IN SAM_HANDLE GroupHandle, IN ULONG MemberId, IN ULONG Attributes)
 
NTSTATUS NTAPI SamAddMultipleMembersToAlias (IN SAM_HANDLE AliasHandle, IN PSID *MemberIds, IN ULONG MemberCount)
 
NTSTATUS NTAPI SamChangePasswordUser (IN SAM_HANDLE UserHandle, IN PUNICODE_STRING OldPassword, IN PUNICODE_STRING NewPassword)
 
NTSTATUS NTAPI SamChangePasswordUser2 (IN PUNICODE_STRING ServerName, IN PUNICODE_STRING UserName, IN PUNICODE_STRING OldPassword, IN PUNICODE_STRING NewPassword)
 
NTSTATUS NTAPI SamChangePasswordUser3 (IN PUNICODE_STRING ServerName, IN PUNICODE_STRING UserName, IN PUNICODE_STRING OldPassword, IN PUNICODE_STRING NewPassword, OUT PDOMAIN_PASSWORD_INFORMATION *EffectivePasswordPolicy, OUT PUSER_PWD_CHANGE_FAILURE_INFORMATION *PasswordChangeFailureInfo)
 
NTSTATUS NTAPI SamCloseHandle (IN SAM_HANDLE SamHandle)
 
NTSTATUS NTAPI SamConnect (IN OUT PUNICODE_STRING ServerName OPTIONAL, OUT PSAM_HANDLE ServerHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
 
NTSTATUS NTAPI SamCreateAliasInDomain (IN SAM_HANDLE DomainHandle, IN PUNICODE_STRING AccountName, IN ACCESS_MASK DesiredAccess, OUT PSAM_HANDLE AliasHandle, OUT PULONG RelativeId)
 
NTSTATUS NTAPI SamCreateGroupInDomain (IN SAM_HANDLE DomainHandle, IN PUNICODE_STRING AccountName, IN ACCESS_MASK DesiredAccess, OUT PSAM_HANDLE GroupHandle, OUT PULONG RelativeId)
 
NTSTATUS NTAPI SamCreateUser2InDomain (IN SAM_HANDLE DomainHandle, IN PUNICODE_STRING AccountName, IN ULONG AccountType, IN ACCESS_MASK DesiredAccess, OUT PSAM_HANDLE UserHandle, OUT PULONG GrantedAccess, OUT PULONG RelativeId)
 
NTSTATUS NTAPI SamCreateUserInDomain (IN SAM_HANDLE DomainHandle, IN PUNICODE_STRING AccountName, IN ACCESS_MASK DesiredAccess, OUT PSAM_HANDLE UserHandle, OUT PULONG RelativeId)
 
NTSTATUS NTAPI SamDeleteAlias (IN SAM_HANDLE AliasHandle)
 
NTSTATUS NTAPI SamDeleteGroup (IN SAM_HANDLE GroupHandle)
 
NTSTATUS NTAPI SamDeleteUser (IN SAM_HANDLE UserHandle)
 
NTSTATUS NTAPI SamEnumerateAliasesInDomain (IN SAM_HANDLE DomainHandle, IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext, OUT PVOID *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned)
 
NTSTATUS NTAPI SamEnumerateDomainsInSamServer (IN SAM_HANDLE ServerHandle, IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext, OUT PVOID *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned)
 
NTSTATUS NTAPI SamEnumerateGroupsInDomain (IN SAM_HANDLE DomainHandle, IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext, IN PVOID *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned)
 
NTSTATUS NTAPI SamEnumerateUsersInDomain (IN SAM_HANDLE DomainHandle, IN OUT PSAM_ENUMERATE_HANDLE EnumerationContext, IN ULONG UserAccountControl, OUT PVOID *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned)
 
NTSTATUS NTAPI SamFreeMemory (IN PVOID Buffer)
 
NTSTATUS NTAPI SamGetAliasMembership (IN SAM_HANDLE DomainHandle, IN ULONG PassedCount, IN PSID *Sids, OUT PULONG MembershipCount, OUT PULONG *Aliases)
 
NTSTATUS NTAPI SamGetCompatibilityMode (IN SAM_HANDLE ObjectHandle, OUT PULONG Mode)
 
NTSTATUS NTAPI SamGetDisplayEnumerationIndex (IN SAM_HANDLE DomainHandle, IN DOMAIN_DISPLAY_INFORMATION DisplayInformation, IN PUNICODE_STRING Prefix, OUT PULONG Index)
 
NTSTATUS NTAPI SamGetGroupsForUser (IN SAM_HANDLE UserHandle, OUT PGROUP_MEMBERSHIP *Groups, OUT PULONG MembershipCount)
 
NTSTATUS NTAPI SamGetMembersInAlias (IN SAM_HANDLE AliasHandle, OUT PSID **MemberIds, OUT PULONG MemberCount)
 
NTSTATUS NTAPI SamGetMembersInGroup (IN SAM_HANDLE GroupHandle, OUT PULONG *MemberIds, OUT PULONG *Attributes, OUT PULONG MemberCount)
 
NTSTATUS NTAPI SamLookupDomainInSamServer (IN SAM_HANDLE ServerHandle, IN PUNICODE_STRING Name, OUT PSID *DomainId)
 
NTSTATUS NTAPI SamLookupIdsInDomain (IN SAM_HANDLE DomainHandle, IN ULONG Count, IN PULONG RelativeIds, OUT PUNICODE_STRING *Names, OUT PSID_NAME_USE *Use OPTIONAL)
 
NTSTATUS NTAPI SamLookupNamesInDomain (IN SAM_HANDLE DomainHandle, IN ULONG Count, IN PUNICODE_STRING Names, OUT PULONG *RelativeIds, OUT PSID_NAME_USE *Use)
 
NTSTATUS NTAPI SamOpenAlias (IN SAM_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG AliasId, OUT PSAM_HANDLE AliasHandle)
 
NTSTATUS NTAPI SamOpenDomain (IN SAM_HANDLE ServerHandle, IN ACCESS_MASK DesiredAccess, IN PSID DomainId, OUT PSAM_HANDLE DomainHandle)
 
NTSTATUS NTAPI SamOpenGroup (IN SAM_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG GroupId, OUT PSAM_HANDLE GroupHandle)
 
NTSTATUS NTAPI SamOpenUser (IN SAM_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG UserId, OUT PSAM_HANDLE UserHandle)
 
NTSTATUS NTAPI SamQueryDisplayInformation (IN SAM_HANDLE DomainHandle, IN DOMAIN_DISPLAY_INFORMATION DisplayInformation, IN ULONG Index, IN ULONG EntryCount, IN ULONG PreferredMaximumLength, OUT PULONG TotalAvailable, OUT PULONG TotalReturned, OUT PULONG ReturnedEntryCount, OUT PVOID *SortedBuffer)
 
NTSTATUS NTAPI SamQueryInformationAlias (IN SAM_HANDLE AliasHandle, IN ALIAS_INFORMATION_CLASS AliasInformationClass, OUT PVOID *Buffer)
 
NTSTATUS NTAPI SamQueryInformationDomain (IN SAM_HANDLE DomainHandle, IN DOMAIN_INFORMATION_CLASS DomainInformationClass, OUT PVOID *Buffer)
 
NTSTATUS NTAPI SamQueryInformationGroup (IN SAM_HANDLE GroupHandle, IN GROUP_INFORMATION_CLASS GroupInformationClass, OUT PVOID *Buffer)
 
NTSTATUS NTAPI SamQueryInformationUser (IN SAM_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, OUT PVOID *Buffer)
 
NTSTATUS NTAPI SamQuerySecurityObject (IN SAM_HANDLE ObjectHandle, IN SECURITY_INFORMATION SecurityInformation, OUT PSECURITY_DESCRIPTOR *SecurityDescriptor)
 
NTSTATUS NTAPI SamRemoveMemberFromAlias (IN SAM_HANDLE AliasHandle, IN PSID MemberId)
 
NTSTATUS NTAPI SamRemoveMemberFromForeignDomain (IN SAM_HANDLE DomainHandle, IN PSID MemberId)
 
NTSTATUS NTAPI SamRemoveMemberFromGroup (IN SAM_HANDLE GroupHandle, IN ULONG MemberId)
 
NTSTATUS NTAPI SamRemoveMultipleMembersFromAlias (IN SAM_HANDLE AliasHandle, IN PSID *MemberIds, IN ULONG MemberCount)
 
NTSTATUS NTAPI SamRidToSid (IN SAM_HANDLE ObjectHandle, IN ULONG Rid, OUT PSID *Sid)
 
NTSTATUS NTAPI SamSetInformationAlias (IN SAM_HANDLE AliasHandle, IN ALIAS_INFORMATION_CLASS AliasInformationClass, IN PVOID Buffer)
 
NTSTATUS NTAPI SamSetInformationDomain (IN SAM_HANDLE DomainHandle, IN DOMAIN_INFORMATION_CLASS DomainInformationClass, IN PVOID Buffer)
 
NTSTATUS NTAPI SamSetInformationGroup (IN SAM_HANDLE GroupHandle, IN GROUP_INFORMATION_CLASS GroupInformationClass, IN PVOID Buffer)
 
NTSTATUS NTAPI SamSetInformationUser (IN SAM_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, IN PVOID Buffer)
 
NTSTATUS NTAPI SamSetMemberAttributesOfGroup (IN SAM_HANDLE GroupHandle, IN ULONG MemberId, IN ULONG Attributes)
 
NTSTATUS NTAPI SamSetSecurityObject (IN SAM_HANDLE ObjectHandle, IN SECURITY_INFORMATION SecurityInformation, IN PSECURITY_DESCRIPTOR SecurityDescriptor)
 
NTSTATUS NTAPI SamShutdownSamServer (IN SAM_HANDLE ServerHandle)
 
NTSTATUS NTAPI SamTestPrivateFunctionsDomain (_In_ SAM_HANDLE DomainHandle)
 
NTSTATUS NTAPI SamTestPrivateFunctionsUser (_In_ SAM_HANDLE UserHandle)
 

Macro Definition Documentation

◆ NTOS_MODE_USER

#define NTOS_MODE_USER

Definition at line 29 of file samlib.c.

Function Documentation

◆ midl_user_allocate()

void __RPC_FAR* __RPC_USER midl_user_allocate ( SIZE_T  len)

Definition at line 59 of file samlib.c.

60 {
62 }
#define GetProcessHeap()
Definition: compat.h:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
GLenum GLsizei len
Definition: glext.h:6722
#define HEAP_ZERO_MEMORY
Definition: compat.h:134

Referenced by SamConnect(), SamLookupIdsInDomain(), SamLookupNamesInDomain(), and SampCheckPassword().

◆ midl_user_free()

◆ PSAMPR_SERVER_NAME_bind()

handle_t __RPC_USER PSAMPR_SERVER_NAME_bind ( PSAMPR_SERVER_NAME  pszSystemName)

Definition at line 72 of file samlib.c.

73 {
75  LPWSTR pszStringBinding;
77 
78  TRACE("PSAMPR_SERVER_NAME_bind(%S)\n", pszSystemName);
79 
80  /* Check the server name prefix and server name length */
81  if (pszSystemName != NULL)
82  {
83  int nLength = wcslen(pszSystemName);
84  int nNameLength = nLength;
85 
86  if (nLength >= 1 && pszSystemName[0] == L'\\')
87  nNameLength--;
88 
89  if (nLength >= 2 && pszSystemName[1] == L'\\')
90  nNameLength--;
91 
92  if (((nLength - nNameLength != 0) &&
93  (nLength - nNameLength != 2)) ||
94  (nNameLength == 0))
95  {
96  WARN("Invalid server name %S", pszSystemName);
98  }
99  }
100 
102  L"ncacn_np",
103  pszSystemName,
104  L"\\pipe\\samr",
105  NULL,
106  &pszStringBinding);
107  if (status)
108  {
109  TRACE("RpcStringBindingCompose returned 0x%x\n", status);
110  return NULL;
111  }
112 
113  /* Set the binding handle that will be used to bind to the server. */
114  status = RpcBindingFromStringBindingW(pszStringBinding,
115  &hBinding);
116  if (status)
117  {
118  TRACE("RpcBindingFromStringBinding returned 0x%x\n", status);
119  }
120 
121  status = RpcStringFreeW(&pszStringBinding);
122  if (status)
123  {
124 // TRACE("RpcStringFree returned 0x%x\n", status);
125  }
126 
127  return hBinding;
128 }
RPC_STATUS WINAPI RpcBindingFromStringBindingW(RPC_WSTR StringBinding, RPC_BINDING_HANDLE *Binding)
Definition: rpc_binding.c:876
handle_t hBinding
Definition: ctx_c.c:54
RPC_STATUS WINAPI RpcStringFreeW(RPC_WSTR *String)
Definition: rpcrt4_main.c:174
void DECLSPEC_NORETURN WINAPI RpcRaiseException(RPC_STATUS exception)
Definition: rpcrt4_main.c:186
#define WARN(fmt,...)
Definition: debug.h:112
_In_ DWORD nLength
Definition: wincon.h:473
RPC_STATUS WINAPI RpcStringBindingComposeW(RPC_WSTR ObjUuid, RPC_WSTR Protseq, RPC_WSTR NetworkAddr, RPC_WSTR Endpoint, RPC_WSTR Options, RPC_WSTR *StringBinding)
Definition: rpc_binding.c:510
long RPC_STATUS
Definition: rpc.h:52
#define TRACE(s)
Definition: solgame.cpp:4
static const WCHAR L[]
Definition: oid.c:1250
#define STATUS_OBJECT_NAME_INVALID
Definition: udferr_usr.h:148
#define NULL
Definition: types.h:112
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
WCHAR * LPWSTR
Definition: xmlstorage.h:184
static SERVICE_STATUS status
Definition: service.c:31
Definition: ps.c:97

◆ PSAMPR_SERVER_NAME_unbind()

void __RPC_USER PSAMPR_SERVER_NAME_unbind ( PSAMPR_SERVER_NAME  pszSystemName,
handle_t  hBinding 
)

Definition at line 132 of file samlib.c.

134 {
136 
137  TRACE("PSAMPR_SERVER_NAME_unbind(%S)\n", pszSystemName);
138 
140  if (status)
141  {
142  TRACE("RpcBindingFree returned 0x%x\n", status);
143  }
144 }
RPC_STATUS WINAPI RpcBindingFree(RPC_BINDING_HANDLE *Binding)
Definition: rpc_binding.c:783
handle_t hBinding
Definition: ctx_c.c:54
long RPC_STATUS
Definition: rpc.h:52
#define TRACE(s)
Definition: solgame.cpp:4
static SERVICE_STATUS status
Definition: service.c:31
Definition: ps.c:97

◆ SamAddMemberToAlias()

NTSTATUS NTAPI SamAddMemberToAlias ( IN SAM_HANDLE  AliasHandle,
IN PSID  MemberId 
)

Definition at line 235 of file samlib.c.

237 {
239 
240  TRACE("SamAddMemberToAlias(%p %p)\n",
241  AliasHandle, MemberId);
242 
244  {
246  (PRPC_SID)MemberId);
247  }
249  {
251  }
252  RpcEndExcept;
253 
254  return Status;
255 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
NTSTATUS NTAPI SamrAddMemberToAlias(IN SAMPR_HANDLE AliasHandle, IN PRPC_SID MemberId)
Definition: samrpc.c:5280
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetLocalGroupAddMembers().

◆ SamAddMemberToGroup()

NTSTATUS NTAPI SamAddMemberToGroup ( IN SAM_HANDLE  GroupHandle,
IN ULONG  MemberId,
IN ULONG  Attributes 
)

Definition at line 260 of file samlib.c.

263 {
265 
266  TRACE("SamAddMemberToGroup(%p %lu %lx)\n",
267  GroupHandle, MemberId, Attributes);
268 
270  {
272  MemberId,
273  Attributes);
274  }
276  {
278  }
279  RpcEndExcept;
280 
281  return Status;
282 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
NTSTATUS NTAPI SamrAddMemberToGroup(IN SAMPR_HANDLE GroupHandle, IN unsigned long MemberId, IN unsigned long Attributes)
Definition: samrpc.c:4470
#define RpcExcept(expr)
Definition: rpc.h:127
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetGroupAddUser(), and NetGroupSetUsers().

◆ SamAddMultipleMembersToAlias()

NTSTATUS NTAPI SamAddMultipleMembersToAlias ( IN SAM_HANDLE  AliasHandle,
IN PSID MemberIds,
IN ULONG  MemberCount 
)

Definition at line 287 of file samlib.c.

290 {
293 
294  TRACE("SamAddMultipleMembersToAlias(%p %p %lu)\n",
295  AliasHandle, MemberIds, MemberCount);
296 
297  if (MemberIds == NULL)
299 
300  Buffer.Count = MemberCount;
301  Buffer.Sids = (PSAMPR_SID_INFORMATION)MemberIds;
302 
304  {
306  &Buffer);
307  }
309  {
311  }
312  RpcEndExcept;
313 
314  return Status;
315 }
#define RpcEndExcept
Definition: rpc.h:128
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI SamrAddMultipleMembersToAlias(IN SAMPR_HANDLE AliasHandle, IN PSAMPR_PSID_ARRAY MembersBuffer)
Definition: samrpc.c:9292
#define RpcTryExcept
Definition: rpc.h:126
#define STATUS_INVALID_PARAMETER_2
Definition: ntstatus.h:476
Definition: bufpool.h:45
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define NULL
Definition: types.h:112
struct _SAMPR_SID_INFORMATION * PSAMPR_SID_INFORMATION
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

◆ SamChangePasswordUser()

NTSTATUS NTAPI SamChangePasswordUser ( IN SAM_HANDLE  UserHandle,
IN PUNICODE_STRING  OldPassword,
IN PUNICODE_STRING  NewPassword 
)

Definition at line 320 of file samlib.c.

323 {
324  NT_OWF_PASSWORD OldNtPassword;
325  NT_OWF_PASSWORD NewNtPassword;
326  LM_OWF_PASSWORD OldLmPassword;
327  LM_OWF_PASSWORD NewLmPassword;
328  OEM_STRING LmPwdString;
329  CHAR LmPwdBuffer[15];
330  BOOLEAN OldLmPasswordPresent = FALSE;
331  BOOLEAN NewLmPasswordPresent = FALSE;
333 
334  ENCRYPTED_LM_OWF_PASSWORD OldLmEncryptedWithNewLm;
335  ENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithOldLm;
336  ENCRYPTED_NT_OWF_PASSWORD OldNtEncryptedWithNewNt;
337  ENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithOldNt;
338  PENCRYPTED_LM_OWF_PASSWORD pOldLmEncryptedWithNewLm = NULL;
339  PENCRYPTED_LM_OWF_PASSWORD pNewLmEncryptedWithOldLm = NULL;
340 
341  /* Calculate the NT hash for the old password */
342  Status = SystemFunction007(OldPassword,
343  (LPBYTE)&OldNtPassword);
344  if (!NT_SUCCESS(Status))
345  {
346  TRACE("SystemFunction007 failed (Status 0x%08lx)\n", Status);
347  return Status;
348  }
349 
350  /* Calculate the NT hash for the new password */
351  Status = SystemFunction007(NewPassword,
352  (LPBYTE)&NewNtPassword);
353  if (!NT_SUCCESS(Status))
354  {
355  TRACE("SystemFunction007 failed (Status 0x%08lx)\n", Status);
356  return Status;
357  }
358 
359  /* Calculate the LM password and hash for the old password */
360  LmPwdString.Length = 15;
361  LmPwdString.MaximumLength = 15;
362  LmPwdString.Buffer = LmPwdBuffer;
363  ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
364 
366  OldPassword,
367  FALSE);
368  if (NT_SUCCESS(Status))
369  {
370  /* Calculate the LM hash value of the password */
371  Status = SystemFunction006(LmPwdString.Buffer,
372  (LPSTR)&OldLmPassword);
373  if (NT_SUCCESS(Status))
374  {
375  OldLmPasswordPresent = TRUE;
376  }
377  }
378 
379  /* Calculate the LM password and hash for the new password */
380  LmPwdString.Length = 15;
381  LmPwdString.MaximumLength = 15;
382  LmPwdString.Buffer = LmPwdBuffer;
383  ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
384 
386  NewPassword,
387  FALSE);
388  if (NT_SUCCESS(Status))
389  {
390  /* Calculate the LM hash value of the password */
391  Status = SystemFunction006(LmPwdString.Buffer,
392  (LPSTR)&NewLmPassword);
393  if (NT_SUCCESS(Status))
394  {
395  NewLmPasswordPresent = TRUE;
396  }
397  }
398 
399  if (OldLmPasswordPresent && NewLmPasswordPresent)
400  {
401  /* Encrypt the old LM hash with the new LM hash */
402  Status = SystemFunction012((const BYTE *)&OldLmPassword,
403  (const BYTE *)&NewLmPassword,
404  (LPBYTE)&OldLmEncryptedWithNewLm);
405  if (!NT_SUCCESS(Status))
406  {
407  TRACE("SystemFunction012 failed (Status 0x%08lx)\n", Status);
408  return Status;
409  }
410 
411  /* Encrypt the new LM hash with the old LM hash */
412  Status = SystemFunction012((const BYTE *)&NewLmPassword,
413  (const BYTE *)&OldLmPassword,
414  (LPBYTE)&NewLmEncryptedWithOldLm);
415  if (!NT_SUCCESS(Status))
416  {
417  TRACE("SystemFunction012 failed (Status 0x%08lx)\n", Status);
418  return Status;
419  }
420 
421  pOldLmEncryptedWithNewLm = &OldLmEncryptedWithNewLm;
422  pNewLmEncryptedWithOldLm = &NewLmEncryptedWithOldLm;
423  }
424 
425  /* Encrypt the old NT hash with the new NT hash */
426  Status = SystemFunction012((const BYTE *)&OldNtPassword,
427  (const BYTE *)&NewNtPassword,
428  (LPBYTE)&OldNtEncryptedWithNewNt);
429  if (!NT_SUCCESS(Status))
430  {
431  TRACE("SystemFunction012 failed (Status 0x%08lx)\n", Status);
432  return Status;
433  }
434 
435  /* Encrypt the new NT hash with the old NT hash */
436  Status = SystemFunction012((const BYTE *)&NewNtPassword,
437  (const BYTE *)&OldNtPassword,
438  (LPBYTE)&NewNtEncryptedWithOldNt);
439  if (!NT_SUCCESS(Status))
440  {
441  TRACE("SystemFunction012 failed (Status 0x%08lx)\n", Status);
442  return Status;
443  }
444 
446  {
448  OldLmPasswordPresent && NewLmPasswordPresent,
449  pOldLmEncryptedWithNewLm,
450  pNewLmEncryptedWithOldLm,
451  TRUE,
452  &OldNtEncryptedWithNewNt,
453  &NewNtEncryptedWithOldNt,
454  FALSE,
455  NULL,
456  FALSE,
457  NULL);
458  }
460  {
462  }
463  RpcEndExcept;
464 
465  return Status;
466 }
#define RpcEndExcept
Definition: rpc.h:128
#define TRUE
Definition: types.h:120
char CHAR
Definition: xmlstorage.h:175
LONG NTSTATUS
Definition: precomp.h:26
#define ZeroMemory
Definition: winbase.h:1664
NTSTATUS NTAPI SamrChangePasswordUser(IN SAMPR_HANDLE UserHandle, IN unsigned char LmPresent, IN PENCRYPTED_LM_OWF_PASSWORD OldLmEncryptedWithNewLm, IN PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithOldLm, IN unsigned char NtPresent, IN PENCRYPTED_NT_OWF_PASSWORD OldNtEncryptedWithNewNt, IN PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithOldNt, IN unsigned char NtCrossEncryptionPresent, IN PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithNewLm, IN unsigned char LmCrossEncryptionPresent, IN PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithNewNt)
Definition: samrpc.c:7864
NTSTATUS WINAPI SystemFunction006(LPCSTR password, LPSTR hash)
Definition: crypt_lmhash.c:53
NTSTATUS WINAPI SystemFunction007(PUNICODE_STRING string, LPBYTE hash)
STRING OEM_STRING
Definition: umtypes.h:203
char * LPSTR
Definition: xmlstorage.h:182
unsigned char * LPBYTE
Definition: typedefs.h:53
#define FALSE
Definition: types.h:117
NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeStringToOemString(POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
#define RpcTryExcept
Definition: rpc.h:126
unsigned char BOOLEAN
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
unsigned char BYTE
Definition: xxhash.c:193
NTSTATUS WINAPI SystemFunction012(const BYTE *in, const BYTE *key, LPBYTE out)
Definition: sysfunc.c:353
#define NULL
Definition: types.h:112
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

◆ SamChangePasswordUser2()

NTSTATUS NTAPI SamChangePasswordUser2 ( IN PUNICODE_STRING  ServerName,
IN PUNICODE_STRING  UserName,
IN PUNICODE_STRING  OldPassword,
IN PUNICODE_STRING  NewPassword 
)

Definition at line 471 of file samlib.c.

475 {
477  return STATUS_NOT_IMPLEMENTED;
478 }
return STATUS_NOT_IMPLEMENTED
#define UNIMPLEMENTED
Definition: debug.h:115

◆ SamChangePasswordUser3()

NTSTATUS NTAPI SamChangePasswordUser3 ( IN PUNICODE_STRING  ServerName,
IN PUNICODE_STRING  UserName,
IN PUNICODE_STRING  OldPassword,
IN PUNICODE_STRING  NewPassword,
OUT PDOMAIN_PASSWORD_INFORMATION EffectivePasswordPolicy,
OUT PUSER_PWD_CHANGE_FAILURE_INFORMATION PasswordChangeFailureInfo 
)

Definition at line 483 of file samlib.c.

489 {
491  return STATUS_NOT_IMPLEMENTED;
492 }
return STATUS_NOT_IMPLEMENTED
#define UNIMPLEMENTED
Definition: debug.h:115

◆ SamCloseHandle()

NTSTATUS NTAPI SamCloseHandle ( IN SAM_HANDLE  SamHandle)

Definition at line 497 of file samlib.c.

498 {
500 
501  TRACE("SamCloseHandle(%p)\n", SamHandle);
502 
504  {
505  Status = SamrCloseHandle((SAMPR_HANDLE *)&SamHandle);
506  }
508  {
510  }
511  RpcEndExcept;
512 
513  return Status;
514 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
NTSTATUS __stdcall SamrCloseHandle(SAMPR_HANDLE *SamHandle)
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by ApplyAccountSettings(), ApplyLockoutSettings(), ApplyPasswordSettings(), EnableAccount(), NetGetDisplayInformationIndex(), NetGroupAdd(), NetGroupAddUser(), NetGroupDel(), NetGroupDelUser(), NetGroupEnum(), NetGroupGetInfo(), NetGroupGetUsers(), NetGroupSetInfo(), NetGroupSetUsers(), NetLocalGroupAdd(), NetLocalGroupAddMembers(), NetLocalGroupDel(), NetLocalGroupDelMembers(), NetLocalGroupEnum(), NetLocalGroupGetInfo(), NetLocalGroupGetMembers(), NetLocalGroupSetInfo(), NetQueryDisplayInformation(), NetUserAdd(), NetUserDel(), NetUserEnum(), NetUserGetGroups(), NetUserGetInfo(), NetUserGetLocalGroups(), NetUserModalsGet(), NetUserSetInfo(), SetAccountsDomainSid(), SetAdministratorPassword(), and SetNewAccountName().

◆ SamConnect()

NTSTATUS NTAPI SamConnect ( IN OUT PUNICODE_STRING ServerName  OPTIONAL,
OUT PSAM_HANDLE  ServerHandle,
IN ACCESS_MASK  DesiredAccess,
IN POBJECT_ATTRIBUTES  ObjectAttributes 
)

Definition at line 519 of file samlib.c.

523 {
524  PSAMPR_SERVER_NAME pServerName = NULL;
526 
527  TRACE("SamConnect(%p %p 0x%08x %p)\n",
528  ServerName, ServerHandle, DesiredAccess, ObjectAttributes);
529 
530  if (ServerName != NULL && ServerName->Length > 0 && ServerName->Buffer != NULL)
531  {
532  /* Create a zero-terminated server name */
533  pServerName = midl_user_allocate(ServerName->Length + sizeof(WCHAR));
534  if (pServerName == NULL)
536 
537  CopyMemory(pServerName, ServerName->Buffer, ServerName->Length);
538  pServerName[ServerName->Length / sizeof(WCHAR)] = UNICODE_NULL;
539  }
540 
542  {
543  Status = SamrConnect(pServerName,
544  (SAMPR_HANDLE *)ServerHandle,
545  DesiredAccess);
546  }
548  {
550  }
551  RpcEndExcept;
552 
553  if (pServerName)
554  midl_user_free(pServerName);
555 
556  return Status;
557 }
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
#define RpcEndExcept
Definition: rpc.h:128
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2654
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
wchar_t * PSAMPR_SERVER_NAME
Definition: authpackage.c:112
LONG NTSTATUS
Definition: precomp.h:26
#define UNICODE_NULL
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
void __RPC_FAR *__RPC_USER midl_user_allocate(SIZE_T len)
Definition: samlib.c:59
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
void __RPC_USER midl_user_free(void __RPC_FAR *ptr)
Definition: samlib.c:65
#define CopyMemory
Definition: winbase.h:1662
NTSTATUS NTAPI SamrConnect(IN PSAMPR_SERVER_NAME ServerName, OUT SAMPR_HANDLE *ServerHandle, IN ACCESS_MASK DesiredAccess)
Definition: samrpc.c:135
#define NULL
Definition: types.h:112
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by ApplyAccountSettings(), ApplyLockoutSettings(), ApplyPasswordSettings(), NetGetDisplayInformationIndex(), NetGroupAdd(), NetGroupAddUser(), NetGroupDel(), NetGroupDelUser(), NetGroupEnum(), NetGroupGetInfo(), NetGroupGetUsers(), NetGroupSetInfo(), NetGroupSetUsers(), NetLocalGroupAdd(), NetLocalGroupAddMembers(), NetLocalGroupDel(), NetLocalGroupDelMembers(), NetLocalGroupEnum(), NetLocalGroupGetInfo(), NetLocalGroupGetMembers(), NetLocalGroupSetInfo(), NetQueryDisplayInformation(), NetUserAdd(), NetUserDel(), NetUserEnum(), NetUserGetGroups(), NetUserGetInfo(), NetUserGetLocalGroups(), NetUserModalsGet(), NetUserSetInfo(), SetAccountsDomainSid(), and SetAdministratorPassword().

◆ SamCreateAliasInDomain()

NTSTATUS NTAPI SamCreateAliasInDomain ( IN SAM_HANDLE  DomainHandle,
IN PUNICODE_STRING  AccountName,
IN ACCESS_MASK  DesiredAccess,
OUT PSAM_HANDLE  AliasHandle,
OUT PULONG  RelativeId 
)

Definition at line 562 of file samlib.c.

567 {
569 
570  TRACE("SamCreateAliasInDomain(%p %p 0x%08x %p %p)\n",
571  DomainHandle, AccountName, DesiredAccess, AliasHandle, RelativeId);
572 
573  *AliasHandle = NULL;
574  *RelativeId = 0;
575 
577  {
579  (PRPC_UNICODE_STRING)AccountName,
581  (SAMPR_HANDLE *)AliasHandle,
582  RelativeId);
583  }
585  {
587  }
588  RpcEndExcept;
589 
590  return Status;
591 }
#define RpcEndExcept
Definition: rpc.h:128
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2654
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define NULL
Definition: types.h:112
NTSTATUS NTAPI SamrCreateAliasInDomain(IN SAMPR_HANDLE DomainHandle, IN PRPC_UNICODE_STRING AccountName, IN ACCESS_MASK DesiredAccess, OUT SAMPR_HANDLE *AliasHandle, OUT unsigned long *RelativeId)
Definition: samrpc.c:2909
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetLocalGroupAdd().

◆ SamCreateGroupInDomain()

NTSTATUS NTAPI SamCreateGroupInDomain ( IN SAM_HANDLE  DomainHandle,
IN PUNICODE_STRING  AccountName,
IN ACCESS_MASK  DesiredAccess,
OUT PSAM_HANDLE  GroupHandle,
OUT PULONG  RelativeId 
)

Definition at line 596 of file samlib.c.

601 {
603 
604  TRACE("SamCreateGroupInDomain(%p %p 0x%08x %p %p)\n",
605  DomainHandle, AccountName, DesiredAccess, GroupHandle, RelativeId);
606 
607  *GroupHandle = NULL;
608  *RelativeId = 0;
609 
611  {
613  (PRPC_UNICODE_STRING)AccountName,
615  (SAMPR_HANDLE *)GroupHandle,
616  RelativeId);
617  }
619  {
621  }
622  RpcEndExcept;
623 
624  return Status;
625 }
#define RpcEndExcept
Definition: rpc.h:128
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2654
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI SamrCreateGroupInDomain(IN SAMPR_HANDLE DomainHandle, IN PRPC_UNICODE_STRING Name, IN ACCESS_MASK DesiredAccess, OUT SAMPR_HANDLE *GroupHandle, OUT unsigned long *RelativeId)
Definition: samrpc.c:1894
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define NULL
Definition: types.h:112
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetGroupAdd().

◆ SamCreateUser2InDomain()

NTSTATUS NTAPI SamCreateUser2InDomain ( IN SAM_HANDLE  DomainHandle,
IN PUNICODE_STRING  AccountName,
IN ULONG  AccountType,
IN ACCESS_MASK  DesiredAccess,
OUT PSAM_HANDLE  UserHandle,
OUT PULONG  GrantedAccess,
OUT PULONG  RelativeId 
)

Definition at line 630 of file samlib.c.

637 {
639 
640  TRACE("SamCreateUser2InDomain(%p %p %lu 0x%08x %p %p %p)\n",
641  DomainHandle, AccountName, AccountType, DesiredAccess,
642  UserHandle, GrantedAccess, RelativeId);
643 
644  *UserHandle = NULL;
645  *RelativeId = 0;
646 
648  {
650  (PRPC_UNICODE_STRING)AccountName,
651  AccountType,
653  (SAMPR_HANDLE *)UserHandle,
655  RelativeId);
656 
657  }
659  {
661  }
662  RpcEndExcept;
663 
664  return Status;
665 }
#define RpcEndExcept
Definition: rpc.h:128
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2654
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define NULL
Definition: types.h:112
NTSTATUS NTAPI SamrCreateUser2InDomain(IN SAMPR_HANDLE DomainHandle, IN PRPC_UNICODE_STRING Name, IN unsigned long AccountType, IN ACCESS_MASK DesiredAccess, OUT SAMPR_HANDLE *UserHandle, OUT unsigned long *GrantedAccess, OUT unsigned long *RelativeId)
Definition: samrpc.c:8825
_In_ PSECURITY_SUBJECT_CONTEXT _In_ BOOLEAN _In_ ACCESS_MASK _In_ ACCESS_MASK _Outptr_opt_ PPRIVILEGE_SET _In_ PGENERIC_MAPPING _In_ KPROCESSOR_MODE _Out_ PACCESS_MASK GrantedAccess
Definition: sefuncs.h:13
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetUserAdd().

◆ SamCreateUserInDomain()

NTSTATUS NTAPI SamCreateUserInDomain ( IN SAM_HANDLE  DomainHandle,
IN PUNICODE_STRING  AccountName,
IN ACCESS_MASK  DesiredAccess,
OUT PSAM_HANDLE  UserHandle,
OUT PULONG  RelativeId 
)

Definition at line 670 of file samlib.c.

675 {
677 
678  TRACE("SamCreateUserInDomain(%p %p 0x%08x %p %p)\n",
679  DomainHandle, AccountName, DesiredAccess, UserHandle, RelativeId);
680 
681  *UserHandle = NULL;
682  *RelativeId = 0;
683 
685  {
687  (PRPC_UNICODE_STRING)AccountName,
689  (SAMPR_HANDLE *)UserHandle,
690  RelativeId);
691  }
693  {
695  }
696  RpcEndExcept;
697 
698  return Status;
699 }
#define RpcEndExcept
Definition: rpc.h:128
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2654
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
NTSTATUS NTAPI SamrCreateUserInDomain(IN SAMPR_HANDLE DomainHandle, IN PRPC_UNICODE_STRING Name, IN ACCESS_MASK DesiredAccess, OUT SAMPR_HANDLE *UserHandle, OUT unsigned long *RelativeId)
Definition: samrpc.c:2296
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define NULL
Definition: types.h:112
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

◆ SamDeleteAlias()

NTSTATUS NTAPI SamDeleteAlias ( IN SAM_HANDLE  AliasHandle)

Definition at line 704 of file samlib.c.

705 {
706  SAMPR_HANDLE LocalAliasHandle;
708 
709  TRACE("SamDeleteAlias(%p)\n", AliasHandle);
710 
711  LocalAliasHandle = (SAMPR_HANDLE)AliasHandle;
712 
713  if (LocalAliasHandle == NULL)
714  return STATUS_INVALID_HANDLE;
715 
717  {
718  Status = SamrDeleteAlias(&LocalAliasHandle);
719  }
721  {
723  }
724  RpcEndExcept;
725 
726  return Status;
727 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
#define STATUS_INVALID_HANDLE
Definition: ntstatus.h:245
#define RpcTryExcept
Definition: rpc.h:126
NTSTATUS NTAPI SamrDeleteAlias(IN OUT SAMPR_HANDLE *AliasHandle)
Definition: samrpc.c:5222
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define NULL
Definition: types.h:112
#define RpcExcept(expr)
Definition: rpc.h:127
void * SAMPR_HANDLE
Definition: authpackage.c:113
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetLocalGroupAdd(), and NetLocalGroupDel().

◆ SamDeleteGroup()

NTSTATUS NTAPI SamDeleteGroup ( IN SAM_HANDLE  GroupHandle)

Definition at line 732 of file samlib.c.

733 {
734  SAMPR_HANDLE LocalGroupHandle;
736 
737  TRACE("SamDeleteGroup(%p)\n", GroupHandle);
738 
739  LocalGroupHandle = (SAMPR_HANDLE)GroupHandle;
740 
741  if (LocalGroupHandle == NULL)
742  return STATUS_INVALID_HANDLE;
743 
745  {
746  Status = SamrDeleteGroup(&LocalGroupHandle);
747  }
749  {
751  }
752  RpcEndExcept;
753 
754  return Status;
755 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
#define STATUS_INVALID_HANDLE
Definition: ntstatus.h:245
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
NTSTATUS NTAPI SamrDeleteGroup(IN OUT SAMPR_HANDLE *GroupHandle)
Definition: samrpc.c:4534
#define NULL
Definition: types.h:112
#define RpcExcept(expr)
Definition: rpc.h:127
void * SAMPR_HANDLE
Definition: authpackage.c:113
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetGroupAdd(), and NetGroupDel().

◆ SamDeleteUser()

NTSTATUS NTAPI SamDeleteUser ( IN SAM_HANDLE  UserHandle)

Definition at line 760 of file samlib.c.

761 {
762  SAMPR_HANDLE LocalUserHandle;
764 
765  TRACE("SamDeleteUser(%p)\n", UserHandle);
766 
767  LocalUserHandle = (SAMPR_HANDLE)UserHandle;
768 
769  if (LocalUserHandle == NULL)
770  return STATUS_INVALID_HANDLE;
771 
773  {
774  Status = SamrDeleteUser(&LocalUserHandle);
775  }
777  {
779  }
780  RpcEndExcept;
781 
782  return Status;
783 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
#define STATUS_INVALID_HANDLE
Definition: ntstatus.h:245
NTSTATUS NTAPI SamrDeleteUser(IN OUT SAMPR_HANDLE *UserHandle)
Definition: samrpc.c:5482
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define NULL
Definition: types.h:112
#define RpcExcept(expr)
Definition: rpc.h:127
void * SAMPR_HANDLE
Definition: authpackage.c:113
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetUserAdd(), and NetUserDel().

◆ SamEnumerateAliasesInDomain()

NTSTATUS NTAPI SamEnumerateAliasesInDomain ( IN SAM_HANDLE  DomainHandle,
IN OUT PSAM_ENUMERATE_HANDLE  EnumerationContext,
OUT PVOID Buffer,
IN ULONG  PreferedMaximumLength,
OUT PULONG  CountReturned 
)

Definition at line 788 of file samlib.c.

793 {
794  PSAMPR_ENUMERATION_BUFFER EnumBuffer = NULL;
796 
797  TRACE("SamEnumerateAliasesInDomain(%p %p %p %lu %p)\n",
798  DomainHandle, EnumerationContext, Buffer, PreferedMaximumLength,
799  CountReturned);
800 
801  if ((EnumerationContext == NULL) ||
802  (Buffer == NULL) ||
803  (CountReturned == NULL))
805 
806  *Buffer = NULL;
807 
809  {
811  EnumerationContext,
812  &EnumBuffer,
813  PreferedMaximumLength,
814  CountReturned);
815 
816  if (EnumBuffer != NULL)
817  {
818  if (EnumBuffer->Buffer != NULL)
819  {
820  *Buffer = EnumBuffer->Buffer;
821  }
822 
823  midl_user_free(EnumBuffer);
824  }
825  }
827  {
829  }
830  RpcEndExcept;
831 
832  return Status;
833 }
#define RpcEndExcept
Definition: rpc.h:128
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
PSAMPR_RID_ENUMERATION Buffer
Definition: sam.idl:96
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Definition: bufpool.h:45
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
NTSTATUS NTAPI SamrEnumerateAliasesInDomain(IN SAMPR_HANDLE DomainHandle, IN OUT unsigned long *EnumerationContext, OUT PSAMPR_ENUMERATION_BUFFER *Buffer, IN unsigned long PreferedMaximumLength, OUT unsigned long *CountReturned)
Definition: samrpc.c:3085
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
void __RPC_USER midl_user_free(void __RPC_FAR *ptr)
Definition: samlib.c:65
#define NULL
Definition: types.h:112
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetLocalGroupEnum().

◆ SamEnumerateDomainsInSamServer()

NTSTATUS NTAPI SamEnumerateDomainsInSamServer ( IN SAM_HANDLE  ServerHandle,
IN OUT PSAM_ENUMERATE_HANDLE  EnumerationContext,
OUT PVOID Buffer,
IN ULONG  PreferedMaximumLength,
OUT PULONG  CountReturned 
)

Definition at line 838 of file samlib.c.

843 {
844  PSAMPR_ENUMERATION_BUFFER EnumBuffer = NULL;
846 
847  TRACE("SamEnumerateDomainsInSamServer(%p %p %p %lu %p)\n",
848  ServerHandle, EnumerationContext, Buffer, PreferedMaximumLength,
849  CountReturned);
850 
851  if ((EnumerationContext == NULL) ||
852  (Buffer == NULL) ||
853  (CountReturned == NULL))
855 
856  *Buffer = NULL;
857 
859  {
861  EnumerationContext,
862  &EnumBuffer,
863  PreferedMaximumLength,
864  CountReturned);
865 
866  if (EnumBuffer != NULL)
867  {
868  if (EnumBuffer->Buffer != NULL)
869  {
870  *Buffer = EnumBuffer->Buffer;
871  }
872 
873  midl_user_free(EnumBuffer);
874  }
875  }
877  {
879  }
880  RpcEndExcept;
881 
882  return Status;
883 }
#define RpcEndExcept
Definition: rpc.h:128
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
PSAMPR_RID_ENUMERATION Buffer
Definition: sam.idl:96
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Definition: bufpool.h:45
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
NTSTATUS NTAPI SamrEnumerateDomainsInSamServer(IN SAMPR_HANDLE ServerHandle, IN OUT unsigned long *EnumerationContext, OUT PSAMPR_ENUMERATION_BUFFER *Buffer, IN ULONG PreferedMaximumLength, OUT PULONG CountReturned)
Definition: samrpc.c:621
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
void __RPC_USER midl_user_free(void __RPC_FAR *ptr)
Definition: samlib.c:65
#define NULL
Definition: types.h:112
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

◆ SamEnumerateGroupsInDomain()

NTSTATUS NTAPI SamEnumerateGroupsInDomain ( IN SAM_HANDLE  DomainHandle,
IN OUT PSAM_ENUMERATE_HANDLE  EnumerationContext,
IN PVOID Buffer,
IN ULONG  PreferedMaximumLength,
OUT PULONG  CountReturned 
)

Definition at line 888 of file samlib.c.

893 {
894  PSAMPR_ENUMERATION_BUFFER EnumBuffer = NULL;
896 
897  TRACE("SamEnumerateGroupsInDomain(%p %p %p %lu %p)\n",
898  DomainHandle, EnumerationContext, Buffer,
899  PreferedMaximumLength, CountReturned);
900 
901  if (EnumerationContext == NULL || Buffer == NULL || CountReturned == NULL)
903 
904  *Buffer = NULL;
905 
907  {
909  EnumerationContext,
910  &EnumBuffer,
911  PreferedMaximumLength,
912  CountReturned);
913  if (EnumBuffer != NULL)
914  {
915  if (EnumBuffer->Buffer != NULL)
916  *Buffer = EnumBuffer->Buffer;
917 
918  midl_user_free(EnumBuffer);
919  }
920  }
922  {
924  }
925  RpcEndExcept;
926 
927  return Status;
928 }
#define RpcEndExcept
Definition: rpc.h:128
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
NTSTATUS NTAPI SamrEnumerateGroupsInDomain(IN SAMPR_HANDLE DomainHandle, IN OUT unsigned long *EnumerationContext, OUT PSAMPR_ENUMERATION_BUFFER *Buffer, IN unsigned long PreferedMaximumLength, OUT unsigned long *CountReturned)
Definition: samrpc.c:2088
PSAMPR_RID_ENUMERATION Buffer
Definition: sam.idl:96
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Definition: bufpool.h:45
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
void __RPC_USER midl_user_free(void __RPC_FAR *ptr)
Definition: samlib.c:65
#define NULL
Definition: types.h:112
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetGroupEnum().

◆ SamEnumerateUsersInDomain()

NTSTATUS NTAPI SamEnumerateUsersInDomain ( IN SAM_HANDLE  DomainHandle,
IN OUT PSAM_ENUMERATE_HANDLE  EnumerationContext,
IN ULONG  UserAccountControl,
OUT PVOID Buffer,
IN ULONG  PreferedMaximumLength,
OUT PULONG  CountReturned 
)

Definition at line 933 of file samlib.c.

939 {
940  PSAMPR_ENUMERATION_BUFFER EnumBuffer = NULL;
942 
943  TRACE("SamEnumerateUsersInDomain(%p %p %lx %p %lu %p)\n",
944  DomainHandle, EnumerationContext, UserAccountControl, Buffer,
945  PreferedMaximumLength, CountReturned);
946 
947  if (EnumerationContext == NULL || Buffer == NULL || CountReturned == NULL)
949 
950  *Buffer = NULL;
951 
953  {
955  EnumerationContext,
956  UserAccountControl,
957  &EnumBuffer,
958  PreferedMaximumLength,
959  CountReturned);
960  if (EnumBuffer != NULL)
961  {
962  if (EnumBuffer->Buffer != NULL)
963  {
964  *Buffer = EnumBuffer->Buffer;
965  }
966 
967  midl_user_free(EnumBuffer);
968  }
969 
970  }
972  {
974  }
975  RpcEndExcept;
976 
977  return Status;
978 }
#define RpcEndExcept
Definition: rpc.h:128
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
PSAMPR_RID_ENUMERATION Buffer
Definition: sam.idl:96
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Definition: bufpool.h:45
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
void __RPC_USER midl_user_free(void __RPC_FAR *ptr)
Definition: samlib.c:65
#define NULL
Definition: types.h:112
#define RpcExcept(expr)
Definition: rpc.h:127
NTSTATUS NTAPI SamrEnumerateUsersInDomain(IN SAMPR_HANDLE DomainHandle, IN OUT unsigned long *EnumerationContext, IN unsigned long UserAccountControl, OUT PSAMPR_ENUMERATION_BUFFER *Buffer, IN unsigned long PreferedMaximumLength, OUT unsigned long *CountReturned)
Definition: samrpc.c:2700
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetUserEnum().

◆ SamFreeMemory()

◆ SamGetAliasMembership()

NTSTATUS NTAPI SamGetAliasMembership ( IN SAM_HANDLE  DomainHandle,
IN ULONG  PassedCount,
IN PSID Sids,
OUT PULONG  MembershipCount,
OUT PULONG Aliases 
)

Definition at line 994 of file samlib.c.

999 {
1000  SAMPR_PSID_ARRAY SidArray;
1001  SAMPR_ULONG_ARRAY Membership;
1002  NTSTATUS Status;
1003 
1004  TRACE("SamAliasMembership(%p %lu %p %p %p)\n",
1005  DomainHandle, PassedCount, Sids, MembershipCount, Aliases);
1006 
1007  if (Sids == NULL ||
1008  MembershipCount == NULL ||
1009  Aliases == NULL)
1010  return STATUS_INVALID_PARAMETER;
1011 
1012  Membership.Element = NULL;
1013 
1014  RpcTryExcept
1015  {
1016  SidArray.Count = PassedCount;
1017  SidArray.Sids = (PSAMPR_SID_INFORMATION)Sids;
1018 
1019  Status = SamrGetAliasMembership((SAMPR_HANDLE)DomainHandle,
1020  &SidArray,
1021  &Membership);
1022  if (NT_SUCCESS(Status))
1023  {
1024  *MembershipCount = Membership.Count;
1025  *Aliases = Membership.Element;
1026  }
1027  else
1028  {
1029  if (Membership.Element != NULL)
1030  midl_user_free(Membership.Element);
1031  }
1032  }
1034  {
1036  }
1037  RpcEndExcept;
1038 
1039  return Status;
1040 }
unsigned long * Element
Definition: lsasrv.h:88
#define RpcEndExcept
Definition: rpc.h:128
NTSTATUS __stdcall SamrGetAliasMembership(SAMPR_HANDLE DomainHandle, PSAMPR_PSID_ARRAY SidArray, PSAMPR_ULONG_ARRAY Membership)
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
unsigned long Count
Definition: lsasrv.h:87
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
void __RPC_USER midl_user_free(void __RPC_FAR *ptr)
Definition: samlib.c:65
PSAMPR_SID_INFORMATION Sids
Definition: authpackage.c:123
unsigned long Count
Definition: authpackage.c:122
#define NULL
Definition: types.h:112
struct _SAMPR_SID_INFORMATION * PSAMPR_SID_INFORMATION
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by GetUserPrivileges(), and NetUserGetLocalGroups().

◆ SamGetCompatibilityMode()

NTSTATUS NTAPI SamGetCompatibilityMode ( IN SAM_HANDLE  ObjectHandle,
OUT PULONG  Mode 
)

Definition at line 1045 of file samlib.c.

1047 {
1048  TRACE("SamGetCompatibilityMode(%p %p)\n", ObjectHandle, Mode);
1049 
1050  if (Mode == NULL)
1051  return STATUS_INVALID_PARAMETER;
1052 
1054 
1055  return STATUS_SUCCESS;
1056 }
_In_ ULONG Mode
Definition: hubbusif.h:303
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
#define SAM_SID_COMPATIBILITY_ALL
Definition: ntsam.h:728
#define TRACE(s)
Definition: solgame.cpp:4
#define NULL
Definition: types.h:112
#define STATUS_SUCCESS
Definition: shellext.h:65

◆ SamGetDisplayEnumerationIndex()

NTSTATUS NTAPI SamGetDisplayEnumerationIndex ( IN SAM_HANDLE  DomainHandle,
IN DOMAIN_DISPLAY_INFORMATION  DisplayInformation,
IN PUNICODE_STRING  Prefix,
OUT PULONG  Index 
)

Definition at line 1061 of file samlib.c.

1065 {
1066  NTSTATUS Status;
1067 
1068  TRACE("SamGetDisplayEnumerationIndex(%p %lu %wZ %p)\n",
1069  DomainHandle, DisplayInformation, Prefix, Index);
1070 
1071  if ((Prefix == NULL) ||
1072  (Index == NULL))
1073  return STATUS_INVALID_PARAMETER;
1074 
1075  RpcTryExcept
1076  {
1078  DisplayInformation,
1080  Index);
1081  }
1083  {
1085  }
1086  RpcEndExcept;
1087 
1088  return Status;
1089 }
NTSTATUS NTAPI SamrGetDisplayEnumerationIndex2(IN SAMPR_HANDLE DomainHandle, IN DOMAIN_DISPLAY_INFORMATION DisplayInformationClass, IN PRPC_UNICODE_STRING Prefix, OUT unsigned long *Index)
Definition: samrpc.c:8809
#define RpcEndExcept
Definition: rpc.h:128
_In_ __drv_aliasesMem PSTRING Prefix
Definition: rtlfuncs.h:1630
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
_In_ WDFCOLLECTION _In_ ULONG Index
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define NULL
Definition: types.h:112
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetGetDisplayInformationIndex().

◆ SamGetGroupsForUser()

NTSTATUS NTAPI SamGetGroupsForUser ( IN SAM_HANDLE  UserHandle,
OUT PGROUP_MEMBERSHIP Groups,
OUT PULONG  MembershipCount 
)

Definition at line 1094 of file samlib.c.

1097 {
1098  PSAMPR_GET_GROUPS_BUFFER GroupsBuffer = NULL;
1099  NTSTATUS Status;
1100 
1101  TRACE("SamGetGroupsForUser(%p %p %p)\n",
1102  UserHandle, Groups, MembershipCount);
1103 
1104  RpcTryExcept
1105  {
1107  &GroupsBuffer);
1108  if (NT_SUCCESS(Status))
1109  {
1110  *Groups = GroupsBuffer->Groups;
1111  *MembershipCount = GroupsBuffer->MembershipCount;
1112 
1113  MIDL_user_free(GroupsBuffer);
1114  }
1115  else
1116  {
1117  if (GroupsBuffer != NULL)
1118  {
1119  if (GroupsBuffer->Groups != NULL)
1120  MIDL_user_free(GroupsBuffer->Groups);
1121 
1122  MIDL_user_free(GroupsBuffer);
1123  }
1124  }
1125  }
1127  {
1129  }
1130  RpcEndExcept;
1131 
1132  return Status;
1133 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI SamrGetGroupsForUser(IN SAMPR_HANDLE UserHandle, OUT PSAMPR_GET_GROUPS_BUFFER *Groups)
Definition: samrpc.c:8145
TOpcodeData Groups[17][8]
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
PGROUP_MEMBERSHIP Groups
Definition: sam.idl:116
#define NULL
Definition: types.h:112
unsigned long MembershipCount
Definition: sam.idl:115
void __RPC_USER MIDL_user_free(void *p)
Definition: irotp.c:376
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by GetUserPrivileges(), and NetUserGetGroups().

◆ SamGetMembersInAlias()

NTSTATUS NTAPI SamGetMembersInAlias ( IN SAM_HANDLE  AliasHandle,
OUT PSID **  MemberIds,
OUT PULONG  MemberCount 
)

Definition at line 1138 of file samlib.c.

1141 {
1142  SAMPR_PSID_ARRAY_OUT SidArray;
1143  NTSTATUS Status;
1144 
1145  TRACE("SamGetMembersInAlias(%p %p %p)\n",
1146  AliasHandle, MemberIds, MemberCount);
1147 
1148  if ((MemberIds == NULL) ||
1149  (MemberCount == NULL))
1150  return STATUS_INVALID_PARAMETER;
1151 
1152  *MemberIds = NULL;
1153  *MemberCount = 0;
1154 
1155  SidArray.Sids = NULL;
1156 
1157  RpcTryExcept
1158  {
1159  Status = SamrGetMembersInAlias((SAMPR_HANDLE)AliasHandle,
1160  &SidArray);
1161  if (NT_SUCCESS(Status))
1162  {
1163  *MemberCount = SidArray.Count;
1164  *MemberIds = (PSID *)SidArray.Sids;
1165  }
1166 
1167  }
1169  {
1171  }
1172  RpcEndExcept;
1173 
1174  return Status;
1175 }
#define RpcEndExcept
Definition: rpc.h:128
NTSTATUS NTAPI SamrGetMembersInAlias(IN SAMPR_HANDLE AliasHandle, OUT PSAMPR_PSID_ARRAY_OUT Members)
Definition: samrpc.c:5360
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
unsigned long Count
Definition: sam.idl:55
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
PSAMPR_SID_INFORMATION Sids
Definition: sam.idl:56
#define NULL
Definition: types.h:112
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetLocalGroupGetMembers().

◆ SamGetMembersInGroup()

NTSTATUS NTAPI SamGetMembersInGroup ( IN SAM_HANDLE  GroupHandle,
OUT PULONG MemberIds,
OUT PULONG Attributes,
OUT PULONG  MemberCount 
)

Definition at line 1180 of file samlib.c.

1184 {
1185  PSAMPR_GET_MEMBERS_BUFFER MembersBuffer = NULL;
1186  NTSTATUS Status;
1187 
1188  TRACE("SamGetMembersInGroup(%p %p %p %p)\n",
1189  GroupHandle, MemberIds, Attributes, MemberCount);
1190 
1191  RpcTryExcept
1192  {
1193  Status = SamrGetMembersInGroup((SAMPR_HANDLE)GroupHandle,
1194  &MembersBuffer);
1195  if (NT_SUCCESS(Status))
1196  {
1197  *MemberIds = MembersBuffer->Members;
1198  *Attributes = MembersBuffer->Attributes;
1199  *MemberCount = MembersBuffer->MemberCount;
1200 
1201  MIDL_user_free(MembersBuffer);
1202  }
1203  else
1204  {
1205  if (MembersBuffer != NULL)
1206  {
1207  if (MembersBuffer->Members != NULL)
1208  MIDL_user_free(MembersBuffer->Members);
1209 
1210  if (MembersBuffer->Attributes != NULL)
1211  MIDL_user_free(MembersBuffer->Attributes);
1212 
1213  MIDL_user_free(MembersBuffer);
1214  }
1215  }
1216  }
1218  {
1220  }
1221  RpcEndExcept;
1222 
1223  return Status;
1224 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI SamrGetMembersInGroup(IN SAMPR_HANDLE GroupHandle, OUT PSAMPR_GET_MEMBERS_BUFFER *Members)
Definition: samrpc.c:4664
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
unsigned long * Members
Definition: sam.idl:122
#define NULL
Definition: types.h:112
unsigned long * Attributes
Definition: sam.idl:123
unsigned long MemberCount
Definition: sam.idl:121
void __RPC_USER MIDL_user_free(void *p)
Definition: irotp.c:376
#define RpcExcept(expr)
Definition: rpc.h:127
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetGroupGetUsers(), and NetGroupSetUsers().

◆ SamLookupDomainInSamServer()

NTSTATUS NTAPI SamLookupDomainInSamServer ( IN SAM_HANDLE  ServerHandle,
IN PUNICODE_STRING  Name,
OUT PSID DomainId 
)

Definition at line 1229 of file samlib.c.

1232 {
1233  NTSTATUS Status;
1234 
1235  TRACE("SamLookupDomainInSamServer(%p %p %p)\n",
1236  ServerHandle, Name, DomainId);
1237 
1238  RpcTryExcept
1239  {
1242  (PRPC_SID *)DomainId);
1243  }
1245  {
1247  }
1248  RpcEndExcept;
1249 
1250  return Status;
1251 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI SamrLookupDomainInSamServer(IN SAMPR_HANDLE ServerHandle, IN PRPC_UNICODE_STRING Name, OUT PRPC_SID *DomainId)
Definition: samrpc.c:504
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

◆ SamLookupIdsInDomain()

NTSTATUS NTAPI SamLookupIdsInDomain ( IN SAM_HANDLE  DomainHandle,
IN ULONG  Count,
IN PULONG  RelativeIds,
OUT PUNICODE_STRING Names,
OUT PSID_NAME_USE *Use  OPTIONAL 
)

Definition at line 1256 of file samlib.c.

1261 {
1262  SAMPR_RETURNED_USTRING_ARRAY NamesBuffer = {0, NULL};
1263  SAMPR_ULONG_ARRAY UseBuffer = {0, NULL};
1264  ULONG i;
1265  NTSTATUS Status;
1266 
1267  TRACE("SamLookupIdsInDomain(%p %lu %p %p %p)\n",
1268  DomainHandle, Count, RelativeIds, Names, Use);
1269 
1270  *Names = NULL;
1271 
1272  if (Use != NULL)
1273  *Use = NULL;
1274 
1275  RpcTryExcept
1276  {
1277  Status = SamrLookupIdsInDomain((SAMPR_HANDLE)DomainHandle,
1278  Count,
1279  RelativeIds,
1280  &NamesBuffer,
1281  &UseBuffer);
1282  }
1284  {
1286  }
1287  RpcEndExcept;
1288 
1289  if (NT_SUCCESS(Status))
1290  {
1292  if (*Names == NULL)
1293  {
1295  goto done;
1296  }
1297 
1298  for (i = 0; i < Count; i++)
1299  {
1300  (*Names)[i].Buffer = midl_user_allocate(NamesBuffer.Element[i].MaximumLength);
1301  if ((*Names)[i].Buffer == NULL)
1302  {
1304  goto done;
1305  }
1306  }
1307 
1308  for (i = 0; i < Count; i++)
1309  {
1310  (*Names)[i].Length = NamesBuffer.Element[i].Length;
1311  (*Names)[i].MaximumLength = NamesBuffer.Element[i].MaximumLength;
1312 
1314  NamesBuffer.Element[i].Buffer,
1315  NamesBuffer.Element[i].Length);
1316  }
1317 
1318  if (Use != NULL)
1319  {
1320  *Use = midl_user_allocate(Count * sizeof(SID_NAME_USE));
1321  if (*Use == NULL)
1322  {
1324  goto done;
1325  }
1326 
1327  RtlCopyMemory(*Use,
1328  UseBuffer.Element,
1329  Count * sizeof(SID_NAME_USE));
1330  }
1331  }
1332 
1333 done:
1334  if (!NT_SUCCESS(Status))
1335  {
1336  if (*Names != NULL)
1337  {
1338  for (i = 0; i < Count; i++)
1339  {
1340  if ((*Names)[i].Buffer != NULL)
1342  }
1343 
1345  }
1346 
1347  if (Use != NULL && *Use != NULL)
1348  midl_user_free(*Use);
1349  }
1350 
1351  if (NamesBuffer.Element != NULL)
1352  {
1353  for (i = 0; i < NamesBuffer.Count; i++)
1354  {
1355  if (NamesBuffer.Element[i].Buffer != NULL)
1356  midl_user_free(NamesBuffer.Element[i].Buffer);
1357  }
1358 
1359  midl_user_free(NamesBuffer.Element);
1360  }
1361 
1362  if (UseBuffer.Element != NULL)
1363  midl_user_free(UseBuffer.Element);
1364 
1365  return 0;
1366 }
unsigned long * Element
Definition: lsasrv.h:88
#define RpcEndExcept
Definition: rpc.h:128
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
enum _SID_NAME_USE SID_NAME_USE
PWSTR Names[]
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI SamrLookupIdsInDomain(IN SAMPR_HANDLE DomainHandle, IN ULONG Count, IN ULONG *RelativeIds, OUT PSAMPR_RETURNED_USTRING_ARRAY Names, OUT PSAMPR_ULONG_ARRAY Use)
Definition: samrpc.c:3693
#define RpcTryExcept
Definition: rpc.h:126
PRPC_UNICODE_STRING Element
Definition: lookup.c:22
Definition: bufpool.h:45
Status
Definition: gdiplustypes.h:24
int Count
Definition: noreturn.cpp:7
void __RPC_FAR *__RPC_USER midl_user_allocate(SIZE_T len)
Definition: samlib.c:59
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
void __RPC_USER midl_user_free(void __RPC_FAR *ptr)
Definition: samlib.c:65
unsigned short Length
Definition: msv1_0.h:22
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define NULL
Definition: types.h:112
unsigned int ULONG
Definition: retypes.h:1
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
unsigned short MaximumLength
Definition: msv1_0.h:23
#define RpcExcept(expr)
Definition: rpc.h:127
wchar_t * Buffer
Definition: msv1_0.h:24
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetGroupGetUsers(), and NetUserGetLocalGroups().

◆ SamLookupNamesInDomain()

NTSTATUS NTAPI SamLookupNamesInDomain ( IN SAM_HANDLE  DomainHandle,
IN ULONG  Count,
IN PUNICODE_STRING  Names,
OUT PULONG RelativeIds,
OUT PSID_NAME_USE Use 
)

Definition at line 1371 of file samlib.c.

1376 {
1377  SAMPR_ULONG_ARRAY RidBuffer = {0, NULL};
1378  SAMPR_ULONG_ARRAY UseBuffer = {0, NULL};
1379  NTSTATUS Status;
1380 
1381  TRACE("SamLookupNamesInDomain(%p %lu %p %p %p)\n",
1382  DomainHandle, Count, Names, RelativeIds, Use);
1383 
1384  *RelativeIds = NULL;
1385  *Use = NULL;
1386 
1387  RpcTryExcept
1388  {
1390  Count,
1392  &RidBuffer,
1393  &UseBuffer);
1394  }
1396  {
1398  }
1399  RpcEndExcept;
1400 
1401  if (NT_SUCCESS(Status))
1402  {
1403  *RelativeIds = midl_user_allocate(Count * sizeof(ULONG));
1404  if (*RelativeIds == NULL)
1405  {
1407  goto done;
1408  }
1409 
1410  *Use = midl_user_allocate(Count * sizeof(SID_NAME_USE));
1411  if (*Use == NULL)
1412  {
1414  goto done;
1415  }
1416 
1417  RtlCopyMemory(*RelativeIds,
1418  RidBuffer.Element,
1419  Count * sizeof(ULONG));
1420 
1421  RtlCopyMemory(*Use,
1422  UseBuffer.Element,
1423  Count * sizeof(SID_NAME_USE));
1424  }
1425 
1426 done:
1427  if (!NT_SUCCESS(Status))
1428  {
1429  if (*RelativeIds != NULL)
1430  midl_user_free(*RelativeIds);
1431 
1432  if (*Use != NULL)
1433  midl_user_free(*Use);
1434  }
1435 
1436  if (RidBuffer.Element != NULL)
1437  midl_user_free(RidBuffer.Element);
1438 
1439  if (UseBuffer.Element != NULL)
1440  midl_user_free(UseBuffer.Element);
1441 
1442  return Status;
1443 }
unsigned long * Element
Definition: lsasrv.h:88
#define RpcEndExcept
Definition: rpc.h:128
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
enum _SID_NAME_USE SID_NAME_USE
PWSTR Names[]
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI SamrLookupNamesInDomain(IN SAMPR_HANDLE DomainHandle, IN ULONG Count, IN RPC_UNICODE_STRING Names[], OUT PSAMPR_ULONG_ARRAY RelativeIds, OUT PSAMPR_ULONG_ARRAY Use)
Definition: samrpc.c:3464
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
int Count
Definition: noreturn.cpp:7
void __RPC_FAR *__RPC_USER midl_user_allocate(SIZE_T len)
Definition: samlib.c:59
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
void __RPC_USER midl_user_free(void __RPC_FAR *ptr)
Definition: samlib.c:65
#define NULL
Definition: types.h:112
unsigned int ULONG
Definition: retypes.h:1
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetGroupAddUser(), NetGroupDelUser(), NetGroupSetUsers(), NetUserGetGroups(), NetUserGetInfo(), NetUserGetLocalGroups(), OpenAliasByName(), OpenGroupByName(), and OpenUserByName().

◆ SamOpenAlias()

NTSTATUS NTAPI SamOpenAlias ( IN SAM_HANDLE  DomainHandle,
IN ACCESS_MASK  DesiredAccess,
IN ULONG  AliasId,
OUT PSAM_HANDLE  AliasHandle 
)

Definition at line 1448 of file samlib.c.

1452 {
1453  NTSTATUS Status;
1454 
1455  TRACE("SamOpenAlias(%p 0x%08x %lx %p)\n",
1456  DomainHandle, DesiredAccess, AliasId, AliasHandle);
1457 
1458  RpcTryExcept
1459  {
1460  Status = SamrOpenAlias((SAMPR_HANDLE)DomainHandle,
1461  DesiredAccess,
1462  AliasId,
1463  (SAMPR_HANDLE *)AliasHandle);
1464  }
1466  {
1468  }
1469  RpcEndExcept;
1470 
1471  return Status;
1472 }
#define RpcEndExcept
Definition: rpc.h:128
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2654
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
NTSTATUS NTAPI SamrOpenAlias(IN SAMPR_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG AliasId, OUT SAMPR_HANDLE *AliasHandle)
Definition: samrpc.c:4821
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetLocalGroupEnum(), and OpenAliasByName().

◆ SamOpenDomain()

NTSTATUS NTAPI SamOpenDomain ( IN SAM_HANDLE  ServerHandle,
IN ACCESS_MASK  DesiredAccess,
IN PSID  DomainId,
OUT PSAM_HANDLE  DomainHandle 
)

Definition at line 1477 of file samlib.c.

1481 {
1482  NTSTATUS Status;
1483 
1484  TRACE("SamOpenDomain(%p 0x%08x %p %p)\n",
1485  ServerHandle, DesiredAccess, DomainId, DomainHandle);
1486 
1487  RpcTryExcept
1488  {
1489  Status = SamrOpenDomain((SAMPR_HANDLE)ServerHandle,
1490  DesiredAccess,
1491  (PRPC_SID)DomainId,
1492  (SAMPR_HANDLE *)DomainHandle);
1493  }
1495  {
1497  }
1498  RpcEndExcept;
1499 
1500  return Status;
1501 }
#define RpcEndExcept
Definition: rpc.h:128
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2654
NTSTATUS __stdcall SamrOpenDomain(SAMPR_HANDLE ServerHandle, ACCESS_MASK DesiredAccess, PRPC_SID DomainId, SAMPR_HANDLE *DomainHandle)
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by ApplyAccountSettings(), ApplyLockoutSettings(), ApplyPasswordSettings(), NetUserEnum(), NetUserGetGroups(), NetUserGetInfo(), NetUserGetLocalGroups(), NetUserModalsGet(), OpenAccountDomain(), OpenBuiltinDomain(), SetAccountsDomainSid(), and SetAdministratorPassword().

◆ SamOpenGroup()

NTSTATUS NTAPI SamOpenGroup ( IN SAM_HANDLE  DomainHandle,
IN ACCESS_MASK  DesiredAccess,
IN ULONG  GroupId,
OUT PSAM_HANDLE  GroupHandle 
)

Definition at line 1506 of file samlib.c.

1510 {
1511  NTSTATUS Status;
1512 
1513  TRACE("SamOpenGroup(%p 0x%08x %p %p)\n",
1514  DomainHandle, DesiredAccess, GroupId, GroupHandle);
1515 
1516  RpcTryExcept
1517  {
1518  Status = SamrOpenGroup((SAMPR_HANDLE)DomainHandle,
1519  DesiredAccess,
1520  GroupId,
1521  (SAMPR_HANDLE *)GroupHandle);
1522  }
1524  {
1526  }
1527  RpcEndExcept;
1528 
1529  return Status;
1530 }
#define RpcEndExcept
Definition: rpc.h:128
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2654
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
NTSTATUS NTAPI SamrOpenGroup(IN SAMPR_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN unsigned long GroupId, OUT SAMPR_HANDLE *GroupHandle)
Definition: samrpc.c:3978
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetGroupEnum(), and OpenGroupByName().

◆ SamOpenUser()

NTSTATUS NTAPI SamOpenUser ( IN SAM_HANDLE  DomainHandle,
IN ACCESS_MASK  DesiredAccess,
IN ULONG  UserId,
OUT PSAM_HANDLE  UserHandle 
)

Definition at line 1535 of file samlib.c.

1539 {
1540  NTSTATUS Status;
1541 
1542  TRACE("SamOpenUser(%p 0x%08x %lx %p)\n",
1543  DomainHandle, DesiredAccess, UserId, UserHandle);
1544 
1545  RpcTryExcept
1546  {
1547  Status = SamrOpenUser((SAMPR_HANDLE)DomainHandle,
1548  DesiredAccess,
1549  UserId,
1550  (SAMPR_HANDLE *)UserHandle);
1551  }
1553  {
1555  }
1556  RpcEndExcept;
1557 
1558  return Status;
1559 }
#define RpcEndExcept
Definition: rpc.h:128
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK DesiredAccess
Definition: wdfdevice.h:2654
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
NTSTATUS NTAPI SamrOpenUser(IN SAMPR_HANDLE DomainHandle, IN ACCESS_MASK DesiredAccess, IN ULONG UserId, OUT SAMPR_HANDLE *UserHandle)
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by EnableAccount(), NetUserEnum(), NetUserGetGroups(), NetUserGetInfo(), OpenUserByName(), SetAdministratorPassword(), and SetNewAccountName().

◆ SampCheckPassword()

NTSTATUS SampCheckPassword ( IN SAMPR_HANDLE  UserHandle,
IN PUNICODE_STRING  Password 
)

Definition at line 148 of file samlib.c.

150 {
152  LPWORD CharTypeBuffer = NULL;
153  ULONG PasswordLength;
154  ULONG i;
155  ULONG Upper = 0, Lower = 0, Digit = 0, Punct = 0, Alpha = 0;
157 
158  TRACE("SampCheckPassword(%p %p)\n", UserHandle, Password);
159 
160  /* Get the domain password information */
163  if (!NT_SUCCESS(Status))
164  {
165  TRACE("SamrGetUserDomainPasswordInformation failed (Status 0x%08lx)\n", Status);
166  return Status;
167  }
168 
169  PasswordLength = (ULONG)(Password->Length / sizeof(WCHAR));
170 
171  /* Fail if the password is too short or too long */
172  if ((PasswordLength < DomainPasswordInformation.MinPasswordLength) ||
173  (PasswordLength > 256))
175 
176  /* Check the password complexity */
177  if (DomainPasswordInformation.PasswordProperties & DOMAIN_PASSWORD_COMPLEX)
178  {
179  CharTypeBuffer = midl_user_allocate(PasswordLength * sizeof(WORD));
180  if (CharTypeBuffer == NULL)
182 
184  Password->Buffer,
185  PasswordLength,
186  CharTypeBuffer);
187 
188  for (i = 0; i < PasswordLength; i++)
189  {
190  TRACE("%lu: %C %s %s %s %s\n", i, Password->Buffer[i],
191  (CharTypeBuffer[i] & C1_UPPER) ? "C1_UPPER" : " ",
192  (CharTypeBuffer[i] & C1_LOWER) ? "C1_LOWER" : " ",
193  (CharTypeBuffer[i] & C1_DIGIT) ? "C1_DIGIT" : " ",
194  (CharTypeBuffer[i] & C1_PUNCT) ? "C1_PUNCT" : " ",
195  (CharTypeBuffer[i] & C1_ALPHA) ? "C1_ALPHA" : " ");
196 
197  if (CharTypeBuffer[i] & C1_UPPER)
198  Upper = 1;
199 
200  if (CharTypeBuffer[i] & C1_LOWER)
201  Lower = 1;
202 
203  if (CharTypeBuffer[i] & C1_DIGIT)
204  Digit = 1;
205 
206  if (CharTypeBuffer[i] & C1_PUNCT)
207  Punct = 1;
208 
209  if ((CharTypeBuffer[i] & C1_ALPHA) &&
210  !(CharTypeBuffer[i] & C1_UPPER) &&
211  !(CharTypeBuffer[i] & C1_LOWER))
212  Alpha = 1;
213  }
214 
215  TRACE("Upper: %lu\n", Upper);
216  TRACE("Lower: %lu\n", Lower);
217  TRACE("Digit: %lu\n", Digit);
218  TRACE("Punct: %lu\n", Punct);
219  TRACE("Alpha: %lu\n", Alpha);
220 
221  TRACE("Total: %lu\n", Upper + Lower + Digit + Punct + Alpha);
222  if (Upper + Lower + Digit + Punct + Alpha < 3)
224  }
225 
226  if (CharTypeBuffer != NULL)
227  midl_user_free(CharTypeBuffer);
228 
229  return Status;
230 }
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
LONG NTSTATUS
Definition: precomp.h:26
#define C1_LOWER
Definition: unicode.h:32
#define STATUS_PASSWORD_RESTRICTION
Definition: ntstatus.h:344
#define DOMAIN_PASSWORD_COMPLEX
Definition: ntsam.h:254
NTSTATUS NTAPI SamrGetUserDomainPasswordInformation(IN SAMPR_HANDLE UserHandle, OUT PUSER_DOMAIN_PASSWORD_INFORMATION PasswordInformation)
Definition: samrpc.c:8314
Status
Definition: gdiplustypes.h:24
void __RPC_FAR *__RPC_USER midl_user_allocate(SIZE_T len)
Definition: samlib.c:59
#define TRACE(s)
Definition: solgame.cpp:4
#define C1_ALPHA
Definition: unicode.h:39
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
BOOL WINAPI GetStringTypeW(DWORD type, LPCWSTR src, INT count, LPWORD chartype)
Definition: lang.c:1699
#define C1_DIGIT
Definition: unicode.h:33
void __RPC_USER midl_user_free(void __RPC_FAR *ptr)
Definition: samlib.c:65
unsigned short WORD
Definition: ntddk_ex.h:93
#define CT_CTYPE1
Definition: winnls.h:237
#define C1_PUNCT
Definition: unicode.h:35
#define C1_UPPER
Definition: unicode.h:31
uint16_t * LPWORD
Definition: typedefs.h:56
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define NULL
Definition: types.h:112
unsigned int ULONG
Definition: retypes.h:1
#define STATUS_SUCCESS
Definition: shellext.h:65

Referenced by SamSetInformationUser().

◆ SamQueryDisplayInformation()

NTSTATUS NTAPI SamQueryDisplayInformation ( IN SAM_HANDLE  DomainHandle,
IN DOMAIN_DISPLAY_INFORMATION  DisplayInformation,
IN ULONG  Index,
IN ULONG  EntryCount,
IN ULONG  PreferredMaximumLength,
OUT PULONG  TotalAvailable,
OUT PULONG  TotalReturned,
OUT PULONG  ReturnedEntryCount,
OUT PVOID SortedBuffer 
)

Definition at line 1564 of file samlib.c.

1573 {
1574  SAMPR_DISPLAY_INFO_BUFFER LocalBuffer;
1575  NTSTATUS Status;
1576 
1577  TRACE("SamQueryDisplayInformation(%p %lu %lu %lu %lu %p %p %p %p)\n",
1578  DomainHandle, DisplayInformation, Index, EntryCount,
1579  PreferredMaximumLength, TotalAvailable, TotalReturned,
1580  ReturnedEntryCount, SortedBuffer);
1581 
1582  if ((TotalAvailable == NULL) ||
1583  (TotalReturned == NULL) ||
1584  (ReturnedEntryCount == NULL) ||
1585  (SortedBuffer == NULL))
1586  return STATUS_INVALID_PARAMETER;
1587 
1588  RpcTryExcept
1589  {
1591  DisplayInformation,
1592  Index,
1593  EntryCount,
1594  PreferredMaximumLength,
1595  TotalAvailable,
1596  TotalReturned,
1597  &LocalBuffer);
1598  if (NT_SUCCESS(Status))
1599  {
1600  switch (DisplayInformation)
1601  {
1602  case DomainDisplayUser:
1603  *ReturnedEntryCount = LocalBuffer.UserInformation.EntriesRead;
1604  *SortedBuffer = LocalBuffer.UserInformation.Buffer;
1605  break;
1606 
1607  case DomainDisplayMachine:
1608  *ReturnedEntryCount = LocalBuffer.MachineInformation.EntriesRead;
1609  *SortedBuffer = LocalBuffer.MachineInformation.Buffer;
1610  break;
1611 
1612  case DomainDisplayGroup:
1613  *ReturnedEntryCount = LocalBuffer.GroupInformation.EntriesRead;
1614  *SortedBuffer = LocalBuffer.GroupInformation.Buffer;
1615  break;
1616 
1617  case DomainDisplayOemUser:
1618  *ReturnedEntryCount = LocalBuffer.OemUserInformation.EntriesRead;
1619  *SortedBuffer = LocalBuffer.OemUserInformation.Buffer;
1620  break;
1621 
1622  case DomainDisplayOemGroup:
1623  *ReturnedEntryCount = LocalBuffer.OemGroupInformation.EntriesRead;
1624  *SortedBuffer = LocalBuffer.OemGroupInformation.Buffer;
1625  break;
1626 
1627  case DomainDisplayServer:
1628  /* FIXME */
1629  break;
1630  }
1631  }
1632  else
1633  {
1634  *ReturnedEntryCount = 0;
1635  *SortedBuffer = NULL;
1636  }
1637  }
1639  {
1641  }
1642  RpcEndExcept;
1643 
1644  return Status;
1645 }
#define RpcEndExcept
Definition: rpc.h:128
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
SAMPR_DOMAIN_DISPLAY_MACHINE_BUFFER MachineInformation
Definition: sam.idl:366
LONG NTSTATUS
Definition: precomp.h:26
PSAMPR_DOMAIN_DISPLAY_OEM_USER Buffer
Definition: sam.idl:354
SAMPR_DOMAIN_DISPLAY_GROUP_BUFFER GroupInformation
Definition: sam.idl:367
SAMPR_DOMAIN_DISPLAY_OEM_GROUP_BUFFER OemGroupInformation
Definition: sam.idl:369
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
PSAMPR_DOMAIN_DISPLAY_OEM_GROUP Buffer
Definition: sam.idl:360
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
_In_ WDFCOLLECTION _In_ ULONG Index
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
SAMPR_DOMAIN_DISPLAY_OEM_USER_BUFFER OemUserInformation
Definition: sam.idl:368
PSAMPR_DOMAIN_DISPLAY_GROUP Buffer
Definition: sam.idl:348
SAMPR_DOMAIN_DISPLAY_USER_BUFFER UserInformation
Definition: sam.idl:365
PSAMPR_DOMAIN_DISPLAY_MACHINE Buffer
Definition: sam.idl:342
#define NULL
Definition: types.h:112
PSAMPR_DOMAIN_DISPLAY_USER Buffer
Definition: sam.idl:336
NTSTATUS NTAPI SamrQueryDisplayInformation3(IN SAMPR_HANDLE DomainHandle, IN DOMAIN_DISPLAY_INFORMATION DisplayInformationClass, IN unsigned long Index, IN unsigned long EntryCount, IN unsigned long PreferredMaximumLength, OUT unsigned long *TotalAvailable, OUT unsigned long *TotalReturned, OUT PSAMPR_DISPLAY_INFO_BUFFER Buffer)
Definition: samrpc.c:9240
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetQueryDisplayInformation().

◆ SamQueryInformationAlias()

NTSTATUS NTAPI SamQueryInformationAlias ( IN SAM_HANDLE  AliasHandle,
IN ALIAS_INFORMATION_CLASS  AliasInformationClass,
OUT PVOID Buffer 
)

Definition at line 1650 of file samlib.c.

1653 {
1654  NTSTATUS Status;
1655 
1656  TRACE("SamQueryInformationAlias(%p %lu %p)\n",
1657  AliasHandle, AliasInformationClass, Buffer);
1658 
1659  RpcTryExcept
1660  {
1662  AliasInformationClass,
1664  }
1666  {
1668  }
1669  RpcEndExcept;
1670 
1671  return Status;
1672 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Definition: bufpool.h:45
NTSTATUS NTAPI SamrQueryInformationAlias(IN SAMPR_HANDLE AliasHandle, IN ALIAS_INFORMATION_CLASS AliasInformationClass, OUT PSAMPR_ALIAS_INFO_BUFFER *Buffer)
Definition: samrpc.c:5044
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetLocalGroupEnum(), and NetLocalGroupGetInfo().

◆ SamQueryInformationDomain()

NTSTATUS NTAPI SamQueryInformationDomain ( IN SAM_HANDLE  DomainHandle,
IN DOMAIN_INFORMATION_CLASS  DomainInformationClass,
OUT PVOID Buffer 
)

Definition at line 1677 of file samlib.c.

1680 {
1681  NTSTATUS Status;
1682 
1683  TRACE("SamQueryInformationDomain(%p %lu %p)\n",
1684  DomainHandle, DomainInformationClass, Buffer);
1685 
1686  RpcTryExcept
1687  {
1689  DomainInformationClass,
1691  }
1693  {
1695  }
1696  RpcEndExcept;
1697 
1698  return Status;
1699 }
#define RpcEndExcept
Definition: rpc.h:128
NTSTATUS NTAPI SamrQueryInformationDomain(IN SAMPR_HANDLE DomainHandle, IN DOMAIN_INFORMATION_CLASS DomainInformationClass, OUT PSAMPR_DOMAIN_INFO_BUFFER *Buffer)
Definition: samrpc.c:1615
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Definition: bufpool.h:45
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by ApplyLockoutSettings(), ApplyPasswordSettings(), and NetUserModalsGet().

◆ SamQueryInformationGroup()

NTSTATUS NTAPI SamQueryInformationGroup ( IN SAM_HANDLE  GroupHandle,
IN GROUP_INFORMATION_CLASS  GroupInformationClass,
OUT PVOID Buffer 
)

Definition at line 1704 of file samlib.c.

1707 {
1708  NTSTATUS Status;
1709 
1710  TRACE("SamQueryInformationGroup(%p %lu %p)\n",
1711  GroupHandle, GroupInformationClass, Buffer);
1712 
1713  RpcTryExcept
1714  {
1716  GroupInformationClass,
1718  }
1720  {
1722  }
1723  RpcEndExcept;
1724 
1725  return Status;
1726 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI SamrQueryInformationGroup(IN SAMPR_HANDLE GroupHandle, IN GROUP_INFORMATION_CLASS GroupInformationClass, OUT PSAMPR_GROUP_INFO_BUFFER *Buffer)
Definition: samrpc.c:4252
#define RpcTryExcept
Definition: rpc.h:126
Definition: bufpool.h:45
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetGroupEnum(), and NetGroupGetInfo().

◆ SamQueryInformationUser()

NTSTATUS NTAPI SamQueryInformationUser ( IN SAM_HANDLE  UserHandle,
IN USER_INFORMATION_CLASS  UserInformationClass,
OUT PVOID Buffer 
)

Definition at line 1731 of file samlib.c.

1734 {
1735  NTSTATUS Status;
1736 
1737  TRACE("SamQueryInformationUser(%p %lu %p)\n",
1738  UserHandle, UserInformationClass, Buffer);
1739 
1740  RpcTryExcept
1741  {
1743  UserInformationClass,
1745  }
1747  {
1749  }
1750  RpcEndExcept;
1751 
1752  return Status;
1753 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Definition: bufpool.h:45
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
NTSTATUS NTAPI SamrQueryInformationUser(IN SAMPR_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, OUT PSAMPR_USER_INFO_BUFFER *Buffer)
Definition: samrpc.c:7234
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by BuildUserInfoBuffer(), EnableAccount(), and SetAdministratorPassword().

◆ SamQuerySecurityObject()

NTSTATUS NTAPI SamQuerySecurityObject ( IN SAM_HANDLE  ObjectHandle,
IN SECURITY_INFORMATION  SecurityInformation,
OUT PSECURITY_DESCRIPTOR SecurityDescriptor 
)

Definition at line 1758 of file samlib.c.

1761 {
1762  PSAMPR_SR_SECURITY_DESCRIPTOR SamSecurityDescriptor = NULL;
1763  NTSTATUS Status;
1764 
1765  TRACE("SamQuerySecurityObject(%p %lu %p)\n",
1766  ObjectHandle, SecurityInformation, SecurityDescriptor);
1767 
1769 
1770  RpcTryExcept
1771  {
1774  &SamSecurityDescriptor);
1775  }
1777  {
1779  }
1780  RpcEndExcept;
1781 
1782  TRACE("SamSecurityDescriptor: %p\n", SamSecurityDescriptor);
1783 
1784  if (SamSecurityDescriptor != NULL)
1785  {
1786  TRACE("SamSecurityDescriptor->Length: %lu\n", SamSecurityDescriptor->Length);
1787  TRACE("SamSecurityDescriptor->SecurityDescriptor: %p\n", SamSecurityDescriptor->SecurityDescriptor);
1788 
1789  *SecurityDescriptor = SamSecurityDescriptor->SecurityDescriptor;
1790 
1791  midl_user_free(SamSecurityDescriptor);
1792  }
1793 
1794  return Status;
1795 }
#define RpcEndExcept
Definition: rpc.h:128
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: wsk.h:182
LONG NTSTATUS
Definition: precomp.h:26
unsigned long Length
Definition: msv1_0.h:45
#define RpcTryExcept
Definition: rpc.h:126
unsigned char * SecurityDescriptor
Definition: msv1_0.h:46
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
Definition: fltkernel.h:1339
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
void __RPC_USER midl_user_free(void __RPC_FAR *ptr)
Definition: samlib.c:65
#define NULL
Definition: types.h:112
NTSTATUS NTAPI SamrQuerySecurityObject(IN SAMPR_HANDLE ObjectHandle, IN SECURITY_INFORMATION SecurityInformation, OUT PSAMPR_SR_SECURITY_DESCRIPTOR *SecurityDescriptor)
Definition: samrpc.c:329
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by GetUserDacl().

◆ SamRemoveMemberFromAlias()

NTSTATUS NTAPI SamRemoveMemberFromAlias ( IN SAM_HANDLE  AliasHandle,
IN PSID  MemberId 
)

Definition at line 1800 of file samlib.c.

1802 {
1803  NTSTATUS Status;
1804 
1805  TRACE("SamRemoveMemberFromAlias(%p %ul)\n",
1806  AliasHandle, MemberId);
1807 
1808  RpcTryExcept
1809  {
1811  MemberId);
1812  }
1814  {
1816  }
1817  RpcEndExcept;
1818 
1819  return Status;
1820 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
NTSTATUS NTAPI SamrRemoveMemberFromAlias(IN SAMPR_HANDLE AliasHandle, IN PRPC_SID MemberId)
Definition: samrpc.c:5320
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetLocalGroupDelMembers().

◆ SamRemoveMemberFromForeignDomain()

NTSTATUS NTAPI SamRemoveMemberFromForeignDomain ( IN SAM_HANDLE  DomainHandle,
IN PSID  MemberId 
)

Definition at line 1825 of file samlib.c.

1827 {
1828  NTSTATUS Status;
1829 
1830  TRACE("SamRemoveMemberFromForeignDomain(%p %ul)\n",
1831  DomainHandle, MemberId);
1832 
1833  RpcTryExcept
1834  {
1836  MemberId);
1837  }
1839  {
1841  }
1842  RpcEndExcept;
1843 
1844  return Status;
1845 }
NTSTATUS NTAPI SamrRemoveMemberFromForeignDomain(IN SAMPR_HANDLE DomainHandle, IN PRPC_SID MemberSid)
Definition: samrpc.c:8402
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

◆ SamRemoveMemberFromGroup()

NTSTATUS NTAPI SamRemoveMemberFromGroup ( IN SAM_HANDLE  GroupHandle,
IN ULONG  MemberId 
)

Definition at line 1850 of file samlib.c.

1852 {
1853  NTSTATUS Status;
1854 
1855  TRACE("SamRemoveMemberFromGroup(%p %ul)\n",
1856  GroupHandle, MemberId);
1857 
1858  RpcTryExcept
1859  {
1861  MemberId);
1862  }
1864  {
1866  }
1867  RpcEndExcept;
1868 
1869  return Status;
1870 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
NTSTATUS NTAPI SamrRemoveMemberFromGroup(IN SAMPR_HANDLE GroupHandle, IN unsigned long MemberId)
Definition: samrpc.c:4602
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetGroupDelUser(), and NetGroupSetUsers().

◆ SamRemoveMultipleMembersFromAlias()

NTSTATUS NTAPI SamRemoveMultipleMembersFromAlias ( IN SAM_HANDLE  AliasHandle,
IN PSID MemberIds,
IN ULONG  MemberCount 
)

Definition at line 1875 of file samlib.c.

1878 {
1880  NTSTATUS Status;
1881 
1882  TRACE("SamRemoveMultipleMembersFromAlias(%p %p %lu)\n",
1883  AliasHandle, MemberIds, MemberCount);
1884 
1885  if (MemberIds == NULL)
1887 
1888  Buffer.Count = MemberCount;
1889  Buffer.Sids = (PSAMPR_SID_INFORMATION)MemberIds;
1890 
1891  RpcTryExcept
1892  {
1894  &Buffer);
1895  }
1897  {
1899  }
1900  RpcEndExcept;
1901 
1902  return Status;
1903 }
#define RpcEndExcept
Definition: rpc.h:128
IN BOOLEAN OUT PSTR Buffer
Definition: progress.h:34
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
#define STATUS_INVALID_PARAMETER_2
Definition: ntstatus.h:476
Definition: bufpool.h:45
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
NTSTATUS NTAPI SamrRemoveMultipleMembersFromAlias(IN SAMPR_HANDLE AliasHandle, IN PSAMPR_PSID_ARRAY MembersBuffer)
Definition: samrpc.c:9320
#define NULL
Definition: types.h:112
struct _SAMPR_SID_INFORMATION * PSAMPR_SID_INFORMATION
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

◆ SamRidToSid()

NTSTATUS NTAPI SamRidToSid ( IN SAM_HANDLE  ObjectHandle,
IN ULONG  Rid,
OUT PSID Sid 
)

Definition at line 1908 of file samlib.c.

1911 {
1912  UNIMPLEMENTED;
1913  return STATUS_NOT_IMPLEMENTED;
1914 }
return STATUS_NOT_IMPLEMENTED
#define UNIMPLEMENTED
Definition: debug.h:115

◆ SamSetInformationAlias()

NTSTATUS NTAPI SamSetInformationAlias ( IN SAM_HANDLE  AliasHandle,
IN ALIAS_INFORMATION_CLASS  AliasInformationClass,
IN PVOID  Buffer 
)

Definition at line 1919 of file samlib.c.

1922 {
1923  NTSTATUS Status;
1924 
1925  TRACE("SamSetInformationAlias(%p %lu %p)\n",
1926  AliasHandle, AliasInformationClass, Buffer);
1927 
1928  RpcTryExcept
1929  {
1931  AliasInformationClass,
1932  Buffer);
1933  }
1935  {
1937  }
1938  RpcEndExcept;
1939 
1940  return Status;
1941 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Definition: bufpool.h:45
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
NTSTATUS NTAPI SamrSetInformationAlias(IN SAMPR_HANDLE AliasHandle, IN ALIAS_INFORMATION_CLASS AliasInformationClass, IN PSAMPR_ALIAS_INFO_BUFFER Buffer)
Definition: samrpc.c:5173
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetLocalGroupAdd(), and NetLocalGroupSetInfo().

◆ SamSetInformationDomain()

NTSTATUS NTAPI SamSetInformationDomain ( IN SAM_HANDLE  DomainHandle,
IN DOMAIN_INFORMATION_CLASS  DomainInformationClass,
IN PVOID  Buffer 
)

Definition at line 1946 of file samlib.c.

1949 {
1950  NTSTATUS Status;
1951 
1952  TRACE("SamSetInformationDomain(%p %lu %p)\n",
1953  DomainHandle, DomainInformationClass, Buffer);
1954 
1955  RpcTryExcept
1956  {
1958  DomainInformationClass,
1959  Buffer);
1960  }
1962  {
1964  }
1965  RpcEndExcept;
1966 
1967  return Status;
1968 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Definition: bufpool.h:45
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
NTSTATUS NTAPI SamrSetInformationDomain(IN SAMPR_HANDLE DomainHandle, IN DOMAIN_INFORMATION_CLASS DomainInformationClass, IN PSAMPR_DOMAIN_INFO_BUFFER DomainInformation)
Definition: samrpc.c:1790
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by ApplyLockoutSettings(), ApplyPasswordSettings(), and SetAccountsDomainSid().

◆ SamSetInformationGroup()

NTSTATUS NTAPI SamSetInformationGroup ( IN SAM_HANDLE  GroupHandle,
IN GROUP_INFORMATION_CLASS  GroupInformationClass,
IN PVOID  Buffer 
)

Definition at line 1973 of file samlib.c.

1976 {
1977  NTSTATUS Status;
1978 
1979  TRACE("SamSetInformationGroup(%p %lu %p)\n",
1980  GroupHandle, GroupInformationClass, Buffer);
1981 
1982  RpcTryExcept
1983  {
1985  GroupInformationClass,
1986  Buffer);
1987  }
1989  {
1991  }
1992  RpcEndExcept;
1993 
1994  return Status;
1995 }
#define RpcEndExcept
Definition: rpc.h:128
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI SamrSetInformationGroup(IN SAMPR_HANDLE GroupHandle, IN GROUP_INFORMATION_CLASS GroupInformationClass, IN PSAMPR_GROUP_INFO_BUFFER Buffer)
Definition: samrpc.c:4416
#define RpcTryExcept
Definition: rpc.h:126
Definition: bufpool.h:45
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetGroupAdd(), and NetGroupSetInfo().

◆ SamSetInformationUser()

NTSTATUS NTAPI SamSetInformationUser ( IN SAM_HANDLE  UserHandle,
IN USER_INFORMATION_CLASS  UserInformationClass,
IN PVOID  Buffer 
)

Definition at line 2000 of file samlib.c.

2003 {
2004  PSAMPR_USER_SET_PASSWORD_INFORMATION PasswordBuffer;
2005  SAMPR_USER_INTERNAL1_INFORMATION Internal1Buffer;
2006  USER_ALL_INFORMATION InternalAllBuffer;
2007  OEM_STRING LmPwdString;
2008  CHAR LmPwdBuffer[15];
2009  NTSTATUS Status;
2010 
2011  TRACE("SamSetInformationUser(%p %lu %p)\n",
2012  UserHandle, UserInformationClass, Buffer);
2013 
2014  if (UserInformationClass == UserSetPasswordInformation)
2015  {
2016  PasswordBuffer = (PSAMPR_USER_SET_PASSWORD_INFORMATION)Buffer;
2017 
2018  Status = SampCheckPassword(UserHandle,
2019  (PUNICODE_STRING)&PasswordBuffer->Password);
2020  if (!NT_SUCCESS(Status))
2021  {
2022  TRACE("SampCheckPassword failed (Status 0x%08lx)\n", Status);
2023  return Status;
2024  }
2025 
2026  /* Calculate the NT hash value of the password */
2027  Status = SystemFunction007((PUNICODE_STRING)&PasswordBuffer->Password,
2028  (LPBYTE)&Internal1Buffer.EncryptedNtOwfPassword);
2029  if (!NT_SUCCESS(Status))
2030  {
2031  TRACE("SystemFunction007 failed (Status 0x%08lx)\n", Status);
2032  return Status;
2033  }
2034 
2035  Internal1Buffer.NtPasswordPresent = TRUE;
2036  Internal1Buffer.LmPasswordPresent = FALSE;
2037 
2038  /* Build the LM password */
2039  LmPwdString.Length = 15;
2040  LmPwdString.MaximumLength = 15;
2041  LmPwdString.Buffer = LmPwdBuffer;
2042  ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
2043 
2045  (PUNICODE_STRING)&PasswordBuffer->Password,
2046  FALSE);
2047  if (NT_SUCCESS(Status))
2048  {
2049  /* Calculate the LM hash value of the password */
2050  Status = SystemFunction006(LmPwdString.Buffer,
2051  (LPSTR)&Internal1Buffer.EncryptedLmOwfPassword);
2052  if (NT_SUCCESS(Status))
2053  Internal1Buffer.LmPasswordPresent = TRUE;
2054  }
2055 
2056  Internal1Buffer.PasswordExpired = PasswordBuffer->PasswordExpired;
2057 
2058  RpcTryExcept
2059  {
2062  (PVOID)&Internal1Buffer);
2063  }
2065  {
2067  }
2068  RpcEndExcept;
2069 
2070  if (!NT_SUCCESS(Status))
2071  {
2072  TRACE("SamrSetInformation() failed (Status 0x%08lx)\n", Status);
2073  }
2074 
2075  return Status;
2076  }
2077  else if (UserInformationClass == UserAllInformation)
2078  {
2079  RtlCopyMemory(&InternalAllBuffer,
2080  Buffer,
2081  sizeof(USER_ALL_INFORMATION));
2082 
2084  {
2085  if (InternalAllBuffer.WhichFields & USER_ALL_OWFPASSWORD)
2086  {
2087  /* Check NT password hash */
2088  if (InternalAllBuffer.WhichFields & USER_ALL_NTPASSWORDPRESENT)
2089  {
2090  if (InternalAllBuffer.NtPassword.Length != sizeof(ENCRYPTED_NT_OWF_PASSWORD))
2091  return STATUS_INVALID_PARAMETER;
2092  }
2093 
2094  /* Check LM password hash */
2095  if (InternalAllBuffer.WhichFields & USER_ALL_LMPASSWORDPRESENT)
2096  {
2097  if (InternalAllBuffer.LmPassword.Length != sizeof(ENCRYPTED_LM_OWF_PASSWORD))
2098  return STATUS_INVALID_PARAMETER;
2099  }
2100  }
2101  else
2102  {
2103  /*
2104  * Only allow the NT password to be set.
2105  * The LM password will be created here.
2106  */
2107  if (InternalAllBuffer.WhichFields & USER_ALL_LMPASSWORDPRESENT)
2108  {
2109  TRACE("Do not try to set a clear text LM password!\n");
2110  return STATUS_INVALID_PARAMETER;
2111  }
2112 
2113  if (InternalAllBuffer.WhichFields & USER_ALL_NTPASSWORDPRESENT)
2114  {
2115  Status = SampCheckPassword(UserHandle,
2116  &InternalAllBuffer.NtPassword);
2117  if (!NT_SUCCESS(Status))
2118  {
2119  TRACE("SampCheckPassword failed (Status 0x%08lx)\n", Status);
2120  return Status;
2121  }
2122 
2123  /* Calculate the NT password hash */
2124  Status = SystemFunction007((PUNICODE_STRING)&InternalAllBuffer.NtPassword,
2125  (LPBYTE)&Internal1Buffer.EncryptedNtOwfPassword);
2126  if (!NT_SUCCESS(Status))
2127  {
2128  TRACE("SystemFunction007 failed (Status 0x%08lx)\n", Status);
2129  return Status;
2130  }
2131 
2132  InternalAllBuffer.NtPasswordPresent = TRUE;
2133  InternalAllBuffer.LmPasswordPresent = FALSE;
2134 
2135  InternalAllBuffer.NtPassword.Length = sizeof(ENCRYPTED_NT_OWF_PASSWORD);
2136  InternalAllBuffer.NtPassword.MaximumLength = sizeof(ENCRYPTED_NT_OWF_PASSWORD);
2137  InternalAllBuffer.NtPassword.Buffer = (LPWSTR)&Internal1Buffer.EncryptedNtOwfPassword;
2138 
2139  /* Build the LM password */
2140  LmPwdString.Length = 15;
2141  LmPwdString.MaximumLength = 15;
2142  LmPwdString.Buffer = LmPwdBuffer;
2143  ZeroMemory(LmPwdString.Buffer, LmPwdString.MaximumLength);
2144 
2146  (PUNICODE_STRING)&InternalAllBuffer.NtPassword,
2147  FALSE);
2148  if (NT_SUCCESS(Status))
2149  {
2150  /* Calculate the LM password hash */
2151  Status = SystemFunction006(LmPwdString.Buffer,
2152  (LPSTR)&Internal1Buffer.EncryptedLmOwfPassword);
2153  if (NT_SUCCESS(Status))
2154  {
2155  InternalAllBuffer.WhichFields |= USER_ALL_LMPASSWORDPRESENT;
2156  InternalAllBuffer.LmPasswordPresent = TRUE;
2157 
2158  InternalAllBuffer.LmPassword.Length = sizeof(ENCRYPTED_LM_OWF_PASSWORD);
2159  InternalAllBuffer.LmPassword.MaximumLength = sizeof(ENCRYPTED_LM_OWF_PASSWORD);
2160  InternalAllBuffer.LmPassword.Buffer = (LPWSTR)&Internal1Buffer.EncryptedLmOwfPassword;
2161  }
2162  }
2163  }
2164  }
2165  }
2166 
2167  RpcTryExcept
2168  {
2171  (PVOID)&InternalAllBuffer);
2172  }
2174  {
2176  }
2177  RpcEndExcept;
2178 
2179  if (!NT_SUCCESS(Status))
2180  {
2181  TRACE("SamrSetInformation() failed (Status 0x%08lx)\n", Status);
2182  }
2183 
2184  return Status;
2185  }
2186 
2187  RpcTryExcept
2188  {
2190  UserInformationClass,
2191  Buffer);
2192  }
2194  {
2196  }
2197  RpcEndExcept;
2198 
2199  return Status;
2200 }
#define RpcEndExcept
Definition: rpc.h:128
USHORT MaximumLength
Definition: env_spec_w32.h:370
#define TRUE
Definition: types.h:120
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
char CHAR
Definition: xmlstorage.h:175
LONG NTSTATUS
Definition: precomp.h:26
BOOLEAN LmPasswordPresent
Definition: ntsam.h:715
#define ZeroMemory
Definition: winbase.h:1664
NTSTATUS WINAPI SystemFunction006(LPCSTR password, LPSTR hash)
Definition: crypt_lmhash.c:53
NTSTATUS WINAPI SystemFunction007(PUNICODE_STRING string, LPBYTE hash)
STRING OEM_STRING
Definition: umtypes.h:203
char * LPSTR
Definition: xmlstorage.h:182
UNICODE_STRING LmPassword
Definition: ntsam.h:702
#define USER_ALL_OWFPASSWORD
Definition: ntsam.h:225
struct _ENCRYPTED_LM_OWF_PASSWORD ENCRYPTED_LM_OWF_PASSWORD
unsigned char * LPBYTE
Definition: typedefs.h:53
#define FALSE
Definition: types.h:117
NTSYSAPI NTSTATUS NTAPI RtlUpcaseUnicodeStringToOemString(POEM_STRING DestinationString, PCUNICODE_STRING SourceString, BOOLEAN AllocateDestinationString)
#define RpcTryExcept
Definition: rpc.h:126
Definition: bufpool.h:45
Status
Definition: gdiplustypes.h:24
RPC_UNICODE_STRING Password
Definition: sam.idl:629
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
ENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword
Definition: sam.idl:640
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define USER_ALL_NTPASSWORDPRESENT
Definition: ntsam.h:220
BOOLEAN NtPasswordPresent
Definition: ntsam.h:716
struct _SAMPR_USER_SET_PASSWORD_INFORMATION * PSAMPR_USER_SET_PASSWORD_INFORMATION
ENCRYPTED_LM_OWF_PASSWORD EncryptedLmOwfPassword
Definition: sam.idl:641
NTSTATUS NTAPI SamrSetInformationUser(IN SAMPR_HANDLE UserHandle, IN USER_INFORMATION_CLASS UserInformationClass, IN PSAMPR_USER_INFO_BUFFER Buffer)
Definition: samrpc.c:7848
#define USER_ALL_LMPASSWORDPRESENT
Definition: ntsam.h:221
struct _ENCRYPTED_LM_OWF_PASSWORD ENCRYPTED_NT_OWF_PASSWORD
NTSTATUS SampCheckPassword(IN SAMPR_HANDLE UserHandle, IN PUNICODE_STRING Password)
Definition: samlib.c:148
#define RtlCopyMemory(Destination, Source, Length)
Definition: typedefs.h:263
WCHAR * LPWSTR
Definition: xmlstorage.h:184
UNICODE_STRING NtPassword
Definition: ntsam.h:703
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by EnableAccount(), SetAdministratorPassword(), SetNewAccountName(), and SetUserInfo().

◆ SamSetMemberAttributesOfGroup()

NTSTATUS NTAPI SamSetMemberAttributesOfGroup ( IN SAM_HANDLE  GroupHandle,
IN ULONG  MemberId,
IN ULONG  Attributes 
)

Definition at line 2205 of file samlib.c.

2208 {
2209  NTSTATUS Status;
2210 
2211  TRACE("SamSetMemberAttributesOfGroup(%p %lu 0x%lx)\n",
2212  GroupHandle, MemberId, Attributes);
2213 
2214  RpcTryExcept
2215  {
2217  MemberId,
2218  Attributes);
2219  }
2221  {
2223  }
2224  RpcEndExcept;
2225 
2226  return Status;
2227 }
#define RpcEndExcept
Definition: rpc.h:128
NTSTATUS NTAPI SamrSetMemberAttributesOfGroup(IN SAMPR_HANDLE GroupHandle, IN unsigned long MemberId, IN unsigned long Attributes)
Definition: samrpc.c:4778
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define RpcExcept(expr)
Definition: rpc.h:127
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

Referenced by NetGroupSetUsers().

◆ SamSetSecurityObject()

NTSTATUS NTAPI SamSetSecurityObject ( IN SAM_HANDLE  ObjectHandle,
IN SECURITY_INFORMATION  SecurityInformation,
IN PSECURITY_DESCRIPTOR  SecurityDescriptor 
)

Definition at line 2232 of file samlib.c.

2235 {
2236  SAMPR_SR_SECURITY_DESCRIPTOR DescriptorToPass;
2237  ULONG Length;
2238  NTSTATUS Status;
2239 
2240  TRACE("SamSetSecurityObject(%p %lu %p)\n",
2241  ObjectHandle, SecurityInformation, SecurityDescriptor);
2242 
2243  /* Retrieve the length of the relative security descriptor */
2244  Length = 0;
2246  NULL,
2247  &Length);
2249  return STATUS_INVALID_PARAMETER;
2250 
2251 
2252  /* Allocate a buffer for the security descriptor */
2253  DescriptorToPass.Length = Length;
2254  DescriptorToPass.SecurityDescriptor = MIDL_user_allocate(Length);
2255  if (DescriptorToPass.SecurityDescriptor == NULL)
2257 
2258  /* Convert the given security descriptor to a relative security descriptor */
2260  (PSECURITY_DESCRIPTOR)DescriptorToPass.SecurityDescriptor,
2261  &Length);
2262  if (!NT_SUCCESS(Status))
2263  goto done;
2264 
2265  RpcTryExcept
2266  {
2267  Status = SamrSetSecurityObject((SAMPR_HANDLE)ObjectHandle,
2269  &DescriptorToPass);
2270  }
2272  {
2274  }
2275  RpcEndExcept;
2276 
2277 done:
2278  if (DescriptorToPass.SecurityDescriptor != NULL)
2279  MIDL_user_free(DescriptorToPass.SecurityDescriptor);
2280 
2281  return Status;
2282 }
#define RpcEndExcept
Definition: rpc.h:128
#define STATUS_INSUFFICIENT_RESOURCES
Definition: udferr_usr.h:158
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:101
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: wsk.h:182
#define STATUS_INVALID_PARAMETER
Definition: udferr_usr.h:135
LONG NTSTATUS
Definition: precomp.h:26
#define STATUS_BUFFER_TOO_SMALL
Definition: shellext.h:69
unsigned long Length
Definition: msv1_0.h:45
#define RpcTryExcept
Definition: rpc.h:126
unsigned char * SecurityDescriptor
Definition: msv1_0.h:46
_Must_inspect_result_ _In_ PFILE_OBJECT _In_ SECURITY_INFORMATION SecurityInformation
Definition: fltkernel.h:1339
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
NTSTATUS NTAPI SamrSetSecurityObject(IN SAMPR_HANDLE ObjectHandle, IN SECURITY_INFORMATION SecurityInformation, IN PSAMPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor)
Definition: samrpc.c:192
#define NULL
Definition: types.h:112
unsigned int ULONG
Definition: retypes.h:1
void *__RPC_USER MIDL_user_allocate(SIZE_T size)
Definition: irotp.c:371
void __RPC_USER MIDL_user_free(void *p)
Definition: irotp.c:376
NTSYSAPI NTSTATUS NTAPI RtlMakeSelfRelativeSD(_In_ PSECURITY_DESCRIPTOR AbsoluteSD, _Out_ PSECURITY_DESCRIPTOR SelfRelativeSD, _Inout_ PULONG BufferLength)
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

◆ SamShutdownSamServer()

NTSTATUS NTAPI SamShutdownSamServer ( IN SAM_HANDLE  ServerHandle)

Definition at line 2287 of file samlib.c.

2288 {
2289  NTSTATUS Status;
2290 
2291  TRACE("SamShutdownSamServer(%p)\n", ServerHandle);
2292 
2293  RpcTryExcept
2294  {
2295  Status = SamrShutdownSamServer((SAMPR_HANDLE)ServerHandle);
2296  }
2298  {
2300  }
2301  RpcEndExcept;
2302 
2303  return Status;
2304 }
#define RpcEndExcept
Definition: rpc.h:128
NTSTATUS NTAPI SamrShutdownSamServer(IN SAMPR_HANDLE ServerHandle)
Definition: samrpc.c:466
LONG NTSTATUS
Definition: precomp.h:26
#define RpcTryExcept
Definition: rpc.h:126
Status
Definition: gdiplustypes.h:24
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
#define RpcExcept(expr)
Definition: rpc.h:127
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:738

◆ SamTestPrivateFunctionsDomain()

NTSTATUS NTAPI SamTestPrivateFunctionsDomain ( _In_ SAM_HANDLE  DomainHandle)

Definition at line 2309 of file samlib.c.

2311 {
2312  TRACE("SamTestPrivateFunctionsDomain(%p)\n",
2313  DomainHandle);
2314  return STATUS_NOT_IMPLEMENTED;
2315 }
return STATUS_NOT_IMPLEMENTED
#define TRACE(s)
Definition: solgame.cpp:4

◆ SamTestPrivateFunctionsUser()

NTSTATUS NTAPI SamTestPrivateFunctionsUser ( _In_ SAM_HANDLE  UserHandle)

Definition at line 2320 of file samlib.c.

2322 {
2323  TRACE("SamTestPrivateFunctionsUser(%p)\n",
2324  UserHandle);
2325  return STATUS_NOT_IMPLEMENTED;
2326 }
return STATUS_NOT_IMPLEMENTED
#define TRACE(s)
Definition: solgame.cpp:4

◆ SystemFunction006()

NTSTATUS WINAPI SystemFunction006 ( LPCSTR  password,
LPSTR  hash 
)

Definition at line 53 of file crypt_lmhash.c.

54 {
55  CRYPT_LMhash( (unsigned char*)hash, (const unsigned char*)password, strlen(password) );
56 
57  return STATUS_SUCCESS;
58 }
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
static void CRYPT_LMhash(unsigned char *dst, const unsigned char *pwd, const int len)
Definition: crypt_lmhash.c:39
T1_FIELD_DICT_PRIVATE password
Definition: t1tokens.h:64
#define STATUS_SUCCESS
Definition: shellext.h:65
Definition: _hash_fun.h:40

Referenced by SamChangePasswordUser(), and SamSetInformationUser().

◆ SystemFunction007()

NTSTATUS WINAPI SystemFunction007 ( PUNICODE_STRING  string,
LPBYTE  hash 
)

◆ SystemFunction012()

NTSTATUS WINAPI SystemFunction012 ( const BYTE in,
const BYTE key,
LPBYTE  out 
)

Definition at line 353 of file sysfunc.c.

354 {
355  if (!in || !out)
356  return STATUS_UNSUCCESSFUL;
357 
358  CRYPT_DEShash(out, key, in);
359  CRYPT_DEShash(out+8, key+7, in+8);
360  return STATUS_SUCCESS;
361 }
static FILE * out
Definition: regtests2xml.c:44
#define STATUS_UNSUCCESSFUL
Definition: udferr_usr.h:132
GLuint in
Definition: glext.h:9616
unsigned char * CRYPT_DEShash(unsigned char *dst, const unsigned char *key, const unsigned char *src) DECLSPEC_HIDDEN
Definition: crypt_des.c:259
#define STATUS_SUCCESS
Definition: shellext.h:65
Definition: path.c:41

Referenced by MsvpChangePassword(), and SamChangePasswordUser().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( samlib  )