2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: Security Account Manager (SAM) Server
4 * FILE: reactos/dll/win32/samsrv/samrpc.c
5 * PURPOSE: RPC interface functions
7 * PROGRAMMERS: Eric Kohl
10 /* INCLUDES ****************************************************************/
14 WINE_DEFAULT_DEBUG_CHANNEL(samsrv
);
16 /* GLOBALS ********************************************************************/
18 static SID_IDENTIFIER_AUTHORITY NtSidAuthority
= {SECURITY_NT_AUTHORITY
};
20 /* FUNCTIONS ***************************************************************/
23 SampStartRpcServer(VOID
)
27 TRACE("SampStartRpcServer() called\n");
29 Status
= RpcServerUseProtseqEpW(L
"ncacn_np",
33 if (Status
!= RPC_S_OK
)
35 WARN("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status
);
39 Status
= RpcServerRegisterIf(samr_v1_0_s_ifspec
,
42 if (Status
!= RPC_S_OK
)
44 WARN("RpcServerRegisterIf() failed (Status %lx)\n", Status
);
48 Status
= RpcServerListen(1, 20, TRUE
);
49 if (Status
!= RPC_S_OK
)
51 WARN("RpcServerListen() failed (Status %lx)\n", Status
);
55 TRACE("SampStartRpcServer() done\n");
59 void __RPC_FAR
* __RPC_USER
midl_user_allocate(SIZE_T len
)
61 return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, len
);
65 void __RPC_USER
midl_user_free(void __RPC_FAR
* ptr
)
67 HeapFree(GetProcessHeap(), 0, ptr
);
70 void __RPC_USER
SAMPR_HANDLE_rundown(SAMPR_HANDLE hHandle
)
77 SamrConnect(IN PSAMPR_SERVER_NAME ServerName
,
78 OUT SAMPR_HANDLE
*ServerHandle
,
79 IN ACCESS_MASK DesiredAccess
)
81 PSAM_DB_OBJECT ServerObject
;
84 TRACE("SamrConnect(%p %p %lx)\n",
85 ServerName
, ServerHandle
, DesiredAccess
);
87 Status
= SampOpenDbObject(NULL
,
93 if (NT_SUCCESS(Status
))
94 *ServerHandle
= (SAMPR_HANDLE
)ServerObject
;
96 TRACE("SamrConnect done (Status 0x%08lx)\n", Status
);
104 SamrCloseHandle(IN OUT SAMPR_HANDLE
*SamHandle
)
106 PSAM_DB_OBJECT DbObject
;
107 NTSTATUS Status
= STATUS_SUCCESS
;
109 TRACE("SamrCloseHandle(%p)\n", SamHandle
);
111 Status
= SampValidateDbObject(*SamHandle
,
115 if (Status
== STATUS_SUCCESS
)
117 Status
= SampCloseDbObject(DbObject
);
121 TRACE("SamrCloseHandle done (Status 0x%08lx)\n", Status
);
129 SamrSetSecurityObject(IN SAMPR_HANDLE ObjectHandle
,
130 IN SECURITY_INFORMATION SecurityInformation
,
131 IN PSAMPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor
)
134 return STATUS_NOT_IMPLEMENTED
;
140 SamrQuerySecurityObject(IN SAMPR_HANDLE ObjectHandle
,
141 IN SECURITY_INFORMATION SecurityInformation
,
142 OUT PSAMPR_SR_SECURITY_DESCRIPTOR
* SecurityDescriptor
)
145 return STATUS_NOT_IMPLEMENTED
;
151 SamrShutdownSamServer(IN SAMPR_HANDLE ServerHandle
)
154 return STATUS_NOT_IMPLEMENTED
;
160 SamrLookupDomainInSamServer(IN SAMPR_HANDLE ServerHandle
,
161 IN PRPC_UNICODE_STRING Name
,
162 OUT PRPC_SID
*DomainId
)
165 return STATUS_NOT_IMPLEMENTED
;
171 SamrEnumerateDomainsInSamServer(IN SAMPR_HANDLE ServerHandle
,
172 IN OUT
unsigned long *EnumerationContext
,
173 OUT PSAMPR_ENUMERATION_BUFFER
*Buffer
,
174 IN
unsigned long PreferedMaximumLength
,
175 OUT
unsigned long *CountReturned
)
178 return STATUS_NOT_IMPLEMENTED
;
184 SamrOpenDomain(IN SAMPR_HANDLE ServerHandle
,
185 IN ACCESS_MASK DesiredAccess
,
186 IN PRPC_SID DomainId
,
187 OUT SAMPR_HANDLE
*DomainHandle
)
189 PSAM_DB_OBJECT ServerObject
;
190 PSAM_DB_OBJECT DomainObject
;
193 TRACE("SamrOpenDomain(%p %lx %p %p)\n",
194 ServerHandle
, DesiredAccess
, DomainId
, DomainHandle
);
196 /* Validate the server handle */
197 Status
= SampValidateDbObject(ServerHandle
,
199 SAM_SERVER_LOOKUP_DOMAIN
,
201 if (!NT_SUCCESS(Status
))
204 /* Validate the Domain SID */
205 if ((DomainId
->Revision
!= SID_REVISION
) ||
206 (DomainId
->SubAuthorityCount
> SID_MAX_SUB_AUTHORITIES
) ||
207 (memcmp(&DomainId
->IdentifierAuthority
, &NtSidAuthority
, sizeof(SID_IDENTIFIER_AUTHORITY
)) != 0))
208 return STATUS_INVALID_PARAMETER
;
210 /* Open the domain object */
211 if ((DomainId
->SubAuthorityCount
== 1) &&
212 (DomainId
->SubAuthority
[0] == SECURITY_BUILTIN_DOMAIN_RID
))
214 /* Builtin domain object */
215 TRACE("Opening the builtin domain object.\n");
217 Status
= SampOpenDbObject(ServerObject
,
224 else if ((DomainId
->SubAuthorityCount
== 4) &&
225 (DomainId
->SubAuthority
[0] == SECURITY_NT_NON_UNIQUE
))
227 /* Account domain object */
228 TRACE("Opening the account domain object.\n");
230 /* FIXME: Check the account domain sub authorities!!! */
232 Status
= SampOpenDbObject(ServerObject
,
241 /* No vaild domain SID */
242 Status
= STATUS_INVALID_PARAMETER
;
245 if (NT_SUCCESS(Status
))
246 *DomainHandle
= (SAMPR_HANDLE
)DomainObject
;
248 TRACE("SamrOpenDomain done (Status 0x%08lx)\n", Status
);
256 SamrQueryInformationDomain(IN SAMPR_HANDLE DomainHandle
,
257 IN DOMAIN_INFORMATION_CLASS DomainInformationClass
,
258 OUT PSAMPR_DOMAIN_INFO_BUFFER
*Buffer
)
261 return STATUS_NOT_IMPLEMENTED
;
267 SamrSetInformationDomain(IN SAMPR_HANDLE DomainHandle
,
268 IN DOMAIN_INFORMATION_CLASS DomainInformationClass
,
269 IN PSAMPR_DOMAIN_INFO_BUFFER DomainInformation
)
272 return STATUS_NOT_IMPLEMENTED
;
278 SamrCreateGroupInDomain(IN SAMPR_HANDLE DomainHandle
,
279 IN PRPC_UNICODE_STRING Name
,
280 IN ACCESS_MASK DesiredAccess
,
281 OUT SAMPR_HANDLE
*GroupHandle
,
282 OUT
unsigned long *RelativeId
)
285 return STATUS_NOT_IMPLEMENTED
;
291 SamrEnumerateGroupsInDomain(IN SAMPR_HANDLE DomainHandle
,
292 IN OUT
unsigned long *EnumerationContext
,
293 OUT PSAMPR_ENUMERATION_BUFFER
*Buffer
,
294 IN
unsigned long PreferedMaximumLength
,
295 OUT
unsigned long *CountReturned
)
298 return STATUS_NOT_IMPLEMENTED
;
304 SamrCreateUserInDomain(IN SAMPR_HANDLE DomainHandle
,
305 IN PRPC_UNICODE_STRING Name
,
306 IN ACCESS_MASK DesiredAccess
,
307 OUT SAMPR_HANDLE
*UserHandle
,
308 OUT
unsigned long *RelativeId
)
310 PSAM_DB_OBJECT DomainObject
;
311 PSAM_DB_OBJECT UserObject
;
315 BOOL bAliasExists
= FALSE
;
318 TRACE("SamrCreateUserInDomain(%p %p %lx %p %p)\n",
319 DomainHandle
, Name
, DesiredAccess
, UserHandle
, RelativeId
);
321 /* Validate the domain handle */
322 Status
= SampValidateDbObject(DomainHandle
,
326 if (!NT_SUCCESS(Status
))
328 TRACE("failed with status 0x%08lx\n", Status
);
332 /* Get the NextRID attribute */
333 ulSize
= sizeof(ULONG
);
334 Status
= SampGetObjectAttribute(DomainObject
,
339 if (!NT_SUCCESS(Status
))
340 ulRid
= DOMAIN_USER_RID_MAX
+ 1;
342 TRACE("RID: %lx\n", ulRid
);
344 /* Convert the RID into a string (hex) */
345 swprintf(szRid
, L
"%08lX", ulRid
);
347 /* Check whether the user name is already in use */
348 Status
= SampCheckDbObjectNameAlias(DomainObject
,
352 if (!NT_SUCCESS(Status
))
354 TRACE("failed with status 0x%08lx\n", Status
);
360 TRACE("The user account %S already exists!\n", Name
->Buffer
);
361 return STATUS_USER_EXISTS
;
364 /* Create the user object */
365 Status
= SampCreateDbObject(DomainObject
,
371 if (!NT_SUCCESS(Status
))
373 TRACE("failed with status 0x%08lx\n", Status
);
377 /* Add the name alias for the user object */
378 Status
= SampSetDbObjectNameAlias(DomainObject
,
382 if (!NT_SUCCESS(Status
))
384 TRACE("failed with status 0x%08lx\n", Status
);
388 /* Set the name attribute */
389 Status
= SampSetObjectAttribute(UserObject
,
392 (LPVOID
)Name
->Buffer
,
393 Name
->MaximumLength
);
394 if (!NT_SUCCESS(Status
))
396 TRACE("failed with status 0x%08lx\n", Status
);
400 /* FIXME: Set default user attributes */
402 if (NT_SUCCESS(Status
))
404 *UserHandle
= (SAMPR_HANDLE
)UserObject
;
408 /* Increment the NextRID attribute */
410 ulSize
= sizeof(ULONG
);
411 SampSetObjectAttribute(DomainObject
,
417 TRACE("returns with status 0x%08lx\n", Status
);
425 SamrEnumerateUsersInDomain(IN SAMPR_HANDLE DomainHandle
,
426 IN OUT
unsigned long *EnumerationContext
,
427 IN
unsigned long UserAccountControl
,
428 OUT PSAMPR_ENUMERATION_BUFFER
*Buffer
,
429 IN
unsigned long PreferedMaximumLength
,
430 OUT
unsigned long *CountReturned
)
433 return STATUS_NOT_IMPLEMENTED
;
439 SamrCreateAliasInDomain(IN SAMPR_HANDLE DomainHandle
,
440 IN PRPC_UNICODE_STRING AccountName
,
441 IN ACCESS_MASK DesiredAccess
,
442 OUT SAMPR_HANDLE
*AliasHandle
,
443 OUT
unsigned long *RelativeId
)
446 return STATUS_NOT_IMPLEMENTED
;
452 SamrEnumerateAliasesInDomain(IN SAMPR_HANDLE DomainHandle
,
453 IN OUT
unsigned long *EnumerationContext
,
454 OUT PSAMPR_ENUMERATION_BUFFER
*Buffer
,
455 IN
unsigned long PreferedMaximumLength
,
456 OUT
unsigned long *CountReturned
)
459 return STATUS_NOT_IMPLEMENTED
;
465 SamrGetAliasMembership(IN SAMPR_HANDLE DomainHandle
,
466 IN PSAMPR_PSID_ARRAY SidArray
,
467 OUT PSAMPR_ULONG_ARRAY Membership
)
470 return STATUS_NOT_IMPLEMENTED
;
476 SamrLookupNamesInDomain(IN SAMPR_HANDLE DomainHandle
,
477 IN
unsigned long Count
,
478 IN RPC_UNICODE_STRING Names
[],
479 OUT PSAMPR_ULONG_ARRAY RelativeIds
,
480 OUT PSAMPR_ULONG_ARRAY Use
)
483 return STATUS_NOT_IMPLEMENTED
;
489 SamrLookupIdsInDomain(IN SAMPR_HANDLE DomainHandle
,
490 IN
unsigned long Count
,
491 IN
unsigned long *RelativeIds
,
492 OUT PSAMPR_RETURNED_USTRING_ARRAY Names
,
493 OUT PSAMPR_ULONG_ARRAY Use
)
496 return STATUS_NOT_IMPLEMENTED
;
502 SamrOpenGroup(IN SAMPR_HANDLE DomainHandle
,
503 IN ACCESS_MASK DesiredAccess
,
504 IN
unsigned long GroupId
,
505 OUT SAMPR_HANDLE
*GroupHandle
)
508 return STATUS_NOT_IMPLEMENTED
;
514 SamrQueryInformationGroup(IN SAMPR_HANDLE GroupHandle
,
515 IN GROUP_INFORMATION_CLASS GroupInformationClass
,
516 OUT PSAMPR_GROUP_INFO_BUFFER
*Buffer
)
519 return STATUS_NOT_IMPLEMENTED
;
525 SamrSetInformationGroup(IN SAMPR_HANDLE GroupHandle
,
526 IN GROUP_INFORMATION_CLASS GroupInformationClass
,
527 IN PSAMPR_GROUP_INFO_BUFFER Buffer
)
530 return STATUS_NOT_IMPLEMENTED
;
536 SamrAddMemberToGroup(IN SAMPR_HANDLE GroupHandle
,
537 IN
unsigned long MemberId
,
538 IN
unsigned long Attributes
)
541 return STATUS_NOT_IMPLEMENTED
;
547 SamrDeleteGroup(IN OUT SAMPR_HANDLE
*GroupHandle
)
550 return STATUS_NOT_IMPLEMENTED
;
556 SamrRemoveMemberFromGroup(IN SAMPR_HANDLE GroupHandle
,
557 IN
unsigned long MemberId
)
560 return STATUS_NOT_IMPLEMENTED
;
566 SamrGetMembersInGroup(IN SAMPR_HANDLE GroupHandle
,
567 OUT PSAMPR_GET_MEMBERS_BUFFER
*Members
)
570 return STATUS_NOT_IMPLEMENTED
;
576 SamrSetMemberAttributesOfGroup(IN SAMPR_HANDLE GroupHandle
,
577 IN
unsigned long MemberId
,
578 IN
unsigned long Attributes
)
581 return STATUS_NOT_IMPLEMENTED
;
587 SamrOpenAlias(IN SAMPR_HANDLE DomainHandle
,
588 IN ACCESS_MASK DesiredAccess
,
589 IN
unsigned long AliasId
,
590 OUT SAMPR_HANDLE
*AliasHandle
)
593 return STATUS_NOT_IMPLEMENTED
;
599 SamrQueryInformationAlias(IN SAMPR_HANDLE AliasHandle
,
600 IN ALIAS_INFORMATION_CLASS AliasInformationClass
,
601 OUT PSAMPR_ALIAS_INFO_BUFFER
*Buffer
)
604 return STATUS_NOT_IMPLEMENTED
;
610 SamrSetInformationAlias(IN SAMPR_HANDLE AliasHandle
,
611 IN ALIAS_INFORMATION_CLASS AliasInformationClass
,
612 IN PSAMPR_ALIAS_INFO_BUFFER Buffer
)
615 return STATUS_NOT_IMPLEMENTED
;
621 SamrDeleteAlias(IN OUT SAMPR_HANDLE
*AliasHandle
)
624 return STATUS_NOT_IMPLEMENTED
;
630 SamrAddMemberToAlias(IN SAMPR_HANDLE AliasHandle
,
631 IN PRPC_SID MemberId
)
634 return STATUS_NOT_IMPLEMENTED
;
640 SamrRemoveMemberFromAlias(IN SAMPR_HANDLE AliasHandle
,
641 IN PRPC_SID MemberId
)
644 return STATUS_NOT_IMPLEMENTED
;
650 SamrGetMembersInAlias(IN SAMPR_HANDLE AliasHandle
,
651 OUT PSAMPR_PSID_ARRAY_OUT Members
)
654 return STATUS_NOT_IMPLEMENTED
;
660 SamrOpenUser(IN SAMPR_HANDLE DomainHandle
,
661 IN ACCESS_MASK DesiredAccess
,
662 IN
unsigned long UserId
,
663 OUT SAMPR_HANDLE
*UserHandle
)
665 PSAM_DB_OBJECT DomainObject
;
666 PSAM_DB_OBJECT UserObject
;
670 TRACE("SamrOpenUser(%p %lx %lx %p)\n",
671 DomainHandle
, DesiredAccess
, UserId
, UserHandle
);
673 /* Validate the domain handle */
674 Status
= SampValidateDbObject(DomainHandle
,
678 if (!NT_SUCCESS(Status
))
680 TRACE("failed with status 0x%08lx\n", Status
);
684 /* Convert the RID into a string (hex) */
685 swprintf(szRid
, L
"%08lX", UserId
);
687 /* Create the user object */
688 Status
= SampOpenDbObject(DomainObject
,
694 if (!NT_SUCCESS(Status
))
696 TRACE("failed with status 0x%08lx\n", Status
);
700 *UserHandle
= (SAMPR_HANDLE
)UserObject
;
702 return STATUS_SUCCESS
;
708 SamrDeleteUser(IN OUT SAMPR_HANDLE
*UserHandle
)
711 return STATUS_NOT_IMPLEMENTED
;
717 SamrQueryInformationUser(IN SAMPR_HANDLE UserHandle
,
718 IN USER_INFORMATION_CLASS UserInformationClass
,
719 OUT PSAMPR_USER_INFO_BUFFER
*Buffer
)
722 return STATUS_NOT_IMPLEMENTED
;
728 SampSetPasswordInformation(PSAM_DB_OBJECT UserObject
,
729 PSAMPR_USER_SET_PASSWORD_INFORMATION PasswordInfo
)
733 TRACE("Password: %S\n", PasswordInfo
->Password
.Buffer
);
734 TRACE("PasswordExpired: %d\n", PasswordInfo
->PasswordExpired
);
736 Status
= SampSetObjectAttribute(UserObject
,
739 PasswordInfo
->Password
.Buffer
,
740 PasswordInfo
->Password
.MaximumLength
);
749 SamrSetInformationUser(IN SAMPR_HANDLE UserHandle
,
750 IN USER_INFORMATION_CLASS UserInformationClass
,
751 IN PSAMPR_USER_INFO_BUFFER Buffer
)
753 PSAM_DB_OBJECT UserObject
;
756 TRACE("SamrSetInformationUser(%p %lu %p)\n",
757 UserHandle
, UserInformationClass
, Buffer
);
759 /* Validate the domain handle */
760 Status
= SampValidateDbObject(UserHandle
,
762 USER_FORCE_PASSWORD_CHANGE
,
764 if (!NT_SUCCESS(Status
))
766 TRACE("failed with status 0x%08lx\n", Status
);
770 switch (UserInformationClass
)
772 case UserSetPasswordInformation
:
773 Status
= SampSetPasswordInformation(UserObject
,
774 (PSAMPR_USER_SET_PASSWORD_INFORMATION
)Buffer
);
778 Status
= STATUS_INVALID_INFO_CLASS
;
788 SamrChangePasswordUser(IN SAMPR_HANDLE UserHandle
,
789 IN
unsigned char LmPresent
,
790 IN PENCRYPTED_LM_OWF_PASSWORD OldLmEncryptedWithNewLm
,
791 IN PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithOldLm
,
792 IN
unsigned char NtPresent
,
793 IN PENCRYPTED_NT_OWF_PASSWORD OldNtEncryptedWithNewNt
,
794 IN PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithOldNt
,
795 IN
unsigned char NtCrossEncryptionPresent
,
796 IN PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithNewLm
,
797 IN
unsigned char LmCrossEncryptionPresent
,
798 IN PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithNewNt
)
801 return STATUS_NOT_IMPLEMENTED
;
807 SamrGetGroupsForUser(IN SAMPR_HANDLE UserHandle
,
808 OUT PSAMPR_GET_GROUPS_BUFFER
*Groups
)
811 return STATUS_NOT_IMPLEMENTED
;
817 SamrQueryDisplayInformation(IN SAMPR_HANDLE DomainHandle
,
818 IN DOMAIN_DISPLAY_INFORMATION DisplayInformationClass
,
819 IN
unsigned long Index
,
820 IN
unsigned long EntryCount
,
821 IN
unsigned long PreferredMaximumLength
,
822 OUT
unsigned long *TotalAvailable
,
823 OUT
unsigned long *TotalReturned
,
824 OUT PSAMPR_DISPLAY_INFO_BUFFER Buffer
)
827 return STATUS_NOT_IMPLEMENTED
;
833 SamrGetDisplayEnumerationIndex(IN SAMPR_HANDLE DomainHandle
,
834 IN DOMAIN_DISPLAY_INFORMATION DisplayInformationClass
,
835 IN PRPC_UNICODE_STRING Prefix
,
836 OUT
unsigned long *Index
)
839 return STATUS_NOT_IMPLEMENTED
;
845 SamrTestPrivateFunctionsDomain(IN SAMPR_HANDLE DomainHandle
)
848 return STATUS_NOT_IMPLEMENTED
;
854 SamrTestPrivateFunctionsUser(IN SAMPR_HANDLE UserHandle
)
857 return STATUS_NOT_IMPLEMENTED
;
863 SamrGetUserDomainPasswordInformation(IN SAMPR_HANDLE UserHandle
,
864 OUT PUSER_DOMAIN_PASSWORD_INFORMATION PasswordInformation
)
867 return STATUS_NOT_IMPLEMENTED
;
873 SamrRemoveMemberFromForeignDomain(IN SAMPR_HANDLE DomainHandle
,
874 IN PRPC_SID MemberSid
)
877 return STATUS_NOT_IMPLEMENTED
;
883 SamrQueryInformationDomain2(IN SAMPR_HANDLE DomainHandle
,
884 IN DOMAIN_INFORMATION_CLASS DomainInformationClass
,
885 OUT PSAMPR_DOMAIN_INFO_BUFFER
*Buffer
)
888 return STATUS_NOT_IMPLEMENTED
;
894 SamrQueryInformationUser2(IN SAMPR_HANDLE UserHandle
,
895 IN USER_INFORMATION_CLASS UserInformationClass
,
896 OUT PSAMPR_USER_INFO_BUFFER
*Buffer
)
899 return STATUS_NOT_IMPLEMENTED
;
905 SamrQueryDisplayInformation2(IN SAMPR_HANDLE DomainHandle
,
906 IN DOMAIN_DISPLAY_INFORMATION DisplayInformationClass
,
907 IN
unsigned long Index
,
908 IN
unsigned long EntryCount
,
909 IN
unsigned long PreferredMaximumLength
,
910 OUT
unsigned long *TotalAvailable
,
911 OUT
unsigned long *TotalReturned
,
912 OUT PSAMPR_DISPLAY_INFO_BUFFER Buffer
)
915 return STATUS_NOT_IMPLEMENTED
;
921 SamrGetDisplayEnumerationIndex2(IN SAMPR_HANDLE DomainHandle
,
922 IN DOMAIN_DISPLAY_INFORMATION DisplayInformationClass
,
923 IN PRPC_UNICODE_STRING Prefix
,
924 OUT
unsigned long *Index
)
927 return STATUS_NOT_IMPLEMENTED
;
933 SamrCreateUser2InDomain(IN SAMPR_HANDLE DomainHandle
,
934 IN PRPC_UNICODE_STRING Name
,
935 IN
unsigned long AccountType
,
936 IN ACCESS_MASK DesiredAccess
,
937 OUT SAMPR_HANDLE
*UserHandle
,
938 OUT
unsigned long *GrantedAccess
,
939 OUT
unsigned long *RelativeId
)
942 return STATUS_NOT_IMPLEMENTED
;
948 SamrQueryDisplayInformation3(IN SAMPR_HANDLE DomainHandle
,
949 IN DOMAIN_DISPLAY_INFORMATION DisplayInformationClass
,
950 IN
unsigned long Index
,
951 IN
unsigned long EntryCount
,
952 IN
unsigned long PreferredMaximumLength
,
953 OUT
unsigned long *TotalAvailable
,
954 OUT
unsigned long *TotalReturned
,
955 OUT PSAMPR_DISPLAY_INFO_BUFFER Buffer
)
958 return STATUS_NOT_IMPLEMENTED
;
964 SamrAddMultipleMembersToAlias(IN SAMPR_HANDLE AliasHandle
,
965 IN PSAMPR_PSID_ARRAY MembersBuffer
)
968 return STATUS_NOT_IMPLEMENTED
;
974 SamrRemoveMultipleMembersFromAlias(IN SAMPR_HANDLE AliasHandle
,
975 IN PSAMPR_PSID_ARRAY MembersBuffer
)
978 return STATUS_NOT_IMPLEMENTED
;
984 SamrOemChangePasswordUser2(IN handle_t BindingHandle
,
985 IN PRPC_STRING ServerName
,
986 IN PRPC_STRING UserName
,
987 IN PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldLm
,
988 IN PENCRYPTED_LM_OWF_PASSWORD OldLmOwfPasswordEncryptedWithNewLm
)
991 return STATUS_NOT_IMPLEMENTED
;
997 SamrUnicodeChangePasswordUser2(IN handle_t BindingHandle
,
998 IN PRPC_UNICODE_STRING ServerName
,
999 IN PRPC_UNICODE_STRING UserName
,
1000 IN PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldNt
,
1001 IN PENCRYPTED_NT_OWF_PASSWORD OldNtOwfPasswordEncryptedWithNewNt
,
1002 IN
unsigned char LmPresent
,
1003 IN PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldLm
,
1004 IN PENCRYPTED_LM_OWF_PASSWORD OldLmOwfPasswordEncryptedWithNewNt
)
1007 return STATUS_NOT_IMPLEMENTED
;
1013 SamrGetDomainPasswordInformation(IN handle_t BindingHandle
,
1014 IN PRPC_UNICODE_STRING Unused
,
1015 OUT PUSER_DOMAIN_PASSWORD_INFORMATION PasswordInformation
)
1018 return STATUS_NOT_IMPLEMENTED
;
1024 SamrConnect2(IN PSAMPR_SERVER_NAME ServerName
,
1025 OUT SAMPR_HANDLE
*ServerHandle
,
1026 IN ACCESS_MASK DesiredAccess
)
1029 return STATUS_NOT_IMPLEMENTED
;
1035 SamrSetInformationUser2(IN SAMPR_HANDLE UserHandle
,
1036 IN USER_INFORMATION_CLASS UserInformationClass
,
1037 IN PSAMPR_USER_INFO_BUFFER Buffer
)
1040 return STATUS_NOT_IMPLEMENTED
;
1046 SamrSetBootKeyInformation(IN handle_t BindingHandle
) /* FIXME */
1049 return STATUS_NOT_IMPLEMENTED
;
1055 SamrGetBootKeyInformation(IN handle_t BindingHandle
) /* FIXME */
1058 return STATUS_NOT_IMPLEMENTED
;
1064 SamrConnect3(IN handle_t BindingHandle
) /* FIXME */
1067 return STATUS_NOT_IMPLEMENTED
;
1073 SamrConnect4(IN PSAMPR_SERVER_NAME ServerName
,
1074 OUT SAMPR_HANDLE
*ServerHandle
,
1075 IN
unsigned long ClientRevision
,
1076 IN ACCESS_MASK DesiredAccess
)
1079 return STATUS_NOT_IMPLEMENTED
;
1085 SamrUnicodeChangePasswordUser3(IN handle_t BindingHandle
) /* FIXME */
1088 return STATUS_NOT_IMPLEMENTED
;
1094 SamrConnect5(IN PSAMPR_SERVER_NAME ServerName
,
1095 IN ACCESS_MASK DesiredAccess
,
1096 IN
unsigned long InVersion
,
1097 IN SAMPR_REVISION_INFO
*InRevisionInfo
,
1098 OUT
unsigned long *OutVersion
,
1099 OUT SAMPR_REVISION_INFO
*OutRevisionInfo
,
1100 OUT SAMPR_HANDLE
*ServerHandle
)
1103 return STATUS_NOT_IMPLEMENTED
;
1109 SamrRidToSid(IN SAMPR_HANDLE ObjectHandle
,
1110 IN
unsigned long Rid
,
1114 return STATUS_NOT_IMPLEMENTED
;
1120 SamrSetDSRMPassword(IN handle_t BindingHandle
,
1121 IN PRPC_UNICODE_STRING Unused
,
1122 IN
unsigned long UserId
,
1123 IN PENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword
)
1126 return STATUS_NOT_IMPLEMENTED
;
1132 SamrValidatePassword(IN handle_t Handle
,
1133 IN PASSWORD_POLICY_VALIDATION_TYPE ValidationType
,
1134 IN PSAM_VALIDATE_INPUT_ARG InputArg
,
1135 OUT PSAM_VALIDATE_OUTPUT_ARG
*OutputArg
)
1138 return STATUS_NOT_IMPLEMENTED
;