[SAMLIB]
[reactos.git] / reactos / dll / win32 / samsrv / samrpc.c
1 /*
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
6 *
7 * PROGRAMMERS: Eric Kohl
8 */
9
10 /* INCLUDES ****************************************************************/
11
12 #include "samsrv.h"
13
14 WINE_DEFAULT_DEBUG_CHANNEL(samsrv);
15
16 /* GLOBALS ********************************************************************/
17
18 static SID_IDENTIFIER_AUTHORITY NtSidAuthority = {SECURITY_NT_AUTHORITY};
19
20 /* FUNCTIONS ***************************************************************/
21
22 VOID
23 SampStartRpcServer(VOID)
24 {
25 RPC_STATUS Status;
26
27 TRACE("SampStartRpcServer() called\n");
28
29 Status = RpcServerUseProtseqEpW(L"ncacn_np",
30 10,
31 L"\\pipe\\samr",
32 NULL);
33 if (Status != RPC_S_OK)
34 {
35 WARN("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status);
36 return;
37 }
38
39 Status = RpcServerRegisterIf(samr_v1_0_s_ifspec,
40 NULL,
41 NULL);
42 if (Status != RPC_S_OK)
43 {
44 WARN("RpcServerRegisterIf() failed (Status %lx)\n", Status);
45 return;
46 }
47
48 Status = RpcServerListen(1, 20, TRUE);
49 if (Status != RPC_S_OK)
50 {
51 WARN("RpcServerListen() failed (Status %lx)\n", Status);
52 return;
53 }
54
55 TRACE("SampStartRpcServer() done\n");
56 }
57
58
59 void __RPC_FAR * __RPC_USER midl_user_allocate(SIZE_T len)
60 {
61 return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
62 }
63
64
65 void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
66 {
67 HeapFree(GetProcessHeap(), 0, ptr);
68 }
69
70 void __RPC_USER SAMPR_HANDLE_rundown(SAMPR_HANDLE hHandle)
71 {
72 }
73
74 /* Function 0 */
75 NTSTATUS
76 NTAPI
77 SamrConnect(IN PSAMPR_SERVER_NAME ServerName,
78 OUT SAMPR_HANDLE *ServerHandle,
79 IN ACCESS_MASK DesiredAccess)
80 {
81 PSAM_DB_OBJECT ServerObject;
82 NTSTATUS Status;
83
84 TRACE("SamrConnect(%p %p %lx)\n",
85 ServerName, ServerHandle, DesiredAccess);
86
87 Status = SampOpenDbObject(NULL,
88 NULL,
89 L"SAM",
90 SamDbServerObject,
91 DesiredAccess,
92 &ServerObject);
93 if (NT_SUCCESS(Status))
94 *ServerHandle = (SAMPR_HANDLE)ServerObject;
95
96 TRACE("SamrConnect done (Status 0x%08lx)\n", Status);
97
98 return Status;
99 }
100
101 /* Function 1 */
102 NTSTATUS
103 NTAPI
104 SamrCloseHandle(IN OUT SAMPR_HANDLE *SamHandle)
105 {
106 PSAM_DB_OBJECT DbObject;
107 NTSTATUS Status = STATUS_SUCCESS;
108
109 TRACE("SamrCloseHandle(%p)\n", SamHandle);
110
111 Status = SampValidateDbObject(*SamHandle,
112 SamDbIgnoreObject,
113 0,
114 &DbObject);
115 if (Status == STATUS_SUCCESS)
116 {
117 Status = SampCloseDbObject(DbObject);
118 *SamHandle = NULL;
119 }
120
121 TRACE("SamrCloseHandle done (Status 0x%08lx)\n", Status);
122
123 return Status;
124 }
125
126 /* Function 2 */
127 NTSTATUS
128 NTAPI
129 SamrSetSecurityObject(IN SAMPR_HANDLE ObjectHandle,
130 IN SECURITY_INFORMATION SecurityInformation,
131 IN PSAMPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor)
132 {
133 UNIMPLEMENTED;
134 return STATUS_NOT_IMPLEMENTED;
135 }
136
137 /* Function 3 */
138 NTSTATUS
139 NTAPI
140 SamrQuerySecurityObject(IN SAMPR_HANDLE ObjectHandle,
141 IN SECURITY_INFORMATION SecurityInformation,
142 OUT PSAMPR_SR_SECURITY_DESCRIPTOR * SecurityDescriptor)
143 {
144 UNIMPLEMENTED;
145 return STATUS_NOT_IMPLEMENTED;
146 }
147
148 /* Function 4 */
149 NTSTATUS
150 NTAPI
151 SamrShutdownSamServer(IN SAMPR_HANDLE ServerHandle)
152 {
153 UNIMPLEMENTED;
154 return STATUS_NOT_IMPLEMENTED;
155 }
156
157 /* Function 5 */
158 NTSTATUS
159 NTAPI
160 SamrLookupDomainInSamServer(IN SAMPR_HANDLE ServerHandle,
161 IN PRPC_UNICODE_STRING Name,
162 OUT PRPC_SID *DomainId)
163 {
164 UNIMPLEMENTED;
165 return STATUS_NOT_IMPLEMENTED;
166 }
167
168 /* Function 6 */
169 NTSTATUS
170 NTAPI
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)
176 {
177 UNIMPLEMENTED;
178 return STATUS_NOT_IMPLEMENTED;
179 }
180
181 /* Function 7 */
182 NTSTATUS
183 NTAPI
184 SamrOpenDomain(IN SAMPR_HANDLE ServerHandle,
185 IN ACCESS_MASK DesiredAccess,
186 IN PRPC_SID DomainId,
187 OUT SAMPR_HANDLE *DomainHandle)
188 {
189 PSAM_DB_OBJECT ServerObject;
190 PSAM_DB_OBJECT DomainObject;
191 NTSTATUS Status;
192
193 TRACE("SamrOpenDomain(%p %lx %p %p)\n",
194 ServerHandle, DesiredAccess, DomainId, DomainHandle);
195
196 Status = SampValidateDbObject(ServerHandle,
197 SamDbServerObject,
198 SAM_SERVER_LOOKUP_DOMAIN,
199 &ServerObject);
200 if (!NT_SUCCESS(Status))
201 return Status;
202
203 /* Validate the Domain SID */
204 if ((DomainId->Revision != SID_REVISION) ||
205 (DomainId->SubAuthorityCount > SID_MAX_SUB_AUTHORITIES) ||
206 (memcmp(&DomainId->IdentifierAuthority, &NtSidAuthority, sizeof(SID_IDENTIFIER_AUTHORITY)) != 0))
207 return STATUS_INVALID_PARAMETER;
208
209 /* Open the domain object */
210 if ((DomainId->SubAuthorityCount == 1) &&
211 (DomainId->SubAuthority[0] == SECURITY_BUILTIN_DOMAIN_RID))
212 {
213 /* Builtin domain object */
214 TRACE("Opening the builtin domain object.\n");
215
216 Status = SampOpenDbObject(ServerObject,
217 L"Domains",
218 L"Builtin",
219 SamDbServerObject,
220 DesiredAccess,
221 &DomainObject);
222 }
223 else if ((DomainId->SubAuthorityCount == 4) &&
224 (DomainId->SubAuthority[0] == SECURITY_NT_NON_UNIQUE))
225 {
226 /* Account domain object */
227 TRACE("Opening the account domain object.\n");
228
229 /* FIXME: Check the account domain sub authorities!!! */
230
231 Status = SampOpenDbObject(ServerObject,
232 L"Domains",
233 L"Account",
234 SamDbServerObject,
235 DesiredAccess,
236 &DomainObject);
237 }
238 else
239 {
240 /* No vaild domain SID */
241 Status = STATUS_INVALID_PARAMETER;
242 }
243
244 if (NT_SUCCESS(Status))
245 *DomainHandle = (SAMPR_HANDLE)DomainObject;
246
247 TRACE("SamrOpenDomain done (Status 0x%08lx)\n", Status);
248
249 return Status;
250 }
251
252 /* Function 8 */
253 NTSTATUS
254 NTAPI
255 SamrQueryInformationDomain(IN SAMPR_HANDLE DomainHandle,
256 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
257 OUT PSAMPR_DOMAIN_INFO_BUFFER *Buffer)
258 {
259 UNIMPLEMENTED;
260 return STATUS_NOT_IMPLEMENTED;
261 }
262
263 /* Function 9 */
264 NTSTATUS
265 NTAPI
266 SamrSetInformationDomain(IN SAMPR_HANDLE DomainHandle,
267 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
268 IN PSAMPR_DOMAIN_INFO_BUFFER DomainInformation)
269 {
270 UNIMPLEMENTED;
271 return STATUS_NOT_IMPLEMENTED;
272 }
273
274 /* Function 10 */
275 NTSTATUS
276 NTAPI
277 SamrCreateGroupInDomain(IN SAMPR_HANDLE DomainHandle,
278 IN PRPC_UNICODE_STRING Name,
279 IN ACCESS_MASK DesiredAccess,
280 OUT SAMPR_HANDLE *GroupHandle,
281 OUT unsigned long *RelativeId)
282 {
283 UNIMPLEMENTED;
284 return STATUS_NOT_IMPLEMENTED;
285 }
286
287 /* Function 10 */
288 NTSTATUS
289 NTAPI
290 SamrEnumerateGroupsInDomain(IN SAMPR_HANDLE DomainHandle,
291 IN OUT unsigned long *EnumerationContext,
292 OUT PSAMPR_ENUMERATION_BUFFER *Buffer,
293 IN unsigned long PreferedMaximumLength,
294 OUT unsigned long *CountReturned)
295 {
296 UNIMPLEMENTED;
297 return STATUS_NOT_IMPLEMENTED;
298 }
299
300 /* Function 12 */
301 NTSTATUS
302 NTAPI
303 SamrCreateUserInDomain(IN SAMPR_HANDLE DomainHandle,
304 IN PRPC_UNICODE_STRING Name,
305 IN ACCESS_MASK DesiredAccess,
306 OUT SAMPR_HANDLE *UserHandle,
307 OUT unsigned long *RelativeId)
308 {
309 UNIMPLEMENTED;
310 return STATUS_NOT_IMPLEMENTED;
311 }
312
313 /* Function 13 */
314 NTSTATUS
315 NTAPI
316 SamrEnumerateUsersInDomain(IN SAMPR_HANDLE DomainHandle,
317 IN OUT unsigned long *EnumerationContext,
318 IN unsigned long UserAccountControl,
319 OUT PSAMPR_ENUMERATION_BUFFER *Buffer,
320 IN unsigned long PreferedMaximumLength,
321 OUT unsigned long *CountReturned)
322 {
323 UNIMPLEMENTED;
324 return STATUS_NOT_IMPLEMENTED;
325 }
326
327 /* Function 14 */
328 NTSTATUS
329 NTAPI
330 SamrCreateAliasInDomain(IN SAMPR_HANDLE DomainHandle,
331 IN PRPC_UNICODE_STRING AccountName,
332 IN ACCESS_MASK DesiredAccess,
333 OUT SAMPR_HANDLE *AliasHandle,
334 OUT unsigned long *RelativeId)
335 {
336 UNIMPLEMENTED;
337 return STATUS_NOT_IMPLEMENTED;
338 }
339
340 /* Function 15 */
341 NTSTATUS
342 NTAPI
343 SamrEnumerateAliasesInDomain(IN SAMPR_HANDLE DomainHandle,
344 IN OUT unsigned long *EnumerationContext,
345 OUT PSAMPR_ENUMERATION_BUFFER *Buffer,
346 IN unsigned long PreferedMaximumLength,
347 OUT unsigned long *CountReturned)
348 {
349 UNIMPLEMENTED;
350 return STATUS_NOT_IMPLEMENTED;
351 }
352
353 /* Function 16 */
354 NTSTATUS
355 NTAPI
356 SamrGetAliasMembership(IN SAMPR_HANDLE DomainHandle,
357 IN PSAMPR_PSID_ARRAY SidArray,
358 OUT PSAMPR_ULONG_ARRAY Membership)
359 {
360 UNIMPLEMENTED;
361 return STATUS_NOT_IMPLEMENTED;
362 }
363
364 /* Function 17 */
365 NTSTATUS
366 NTAPI
367 SamrLookupNamesInDomain(IN SAMPR_HANDLE DomainHandle,
368 IN unsigned long Count,
369 IN RPC_UNICODE_STRING Names[],
370 OUT PSAMPR_ULONG_ARRAY RelativeIds,
371 OUT PSAMPR_ULONG_ARRAY Use)
372 {
373 UNIMPLEMENTED;
374 return STATUS_NOT_IMPLEMENTED;
375 }
376
377 /* Function 18 */
378 NTSTATUS
379 NTAPI
380 SamrLookupIdsInDomain(IN SAMPR_HANDLE DomainHandle,
381 IN unsigned long Count,
382 IN unsigned long *RelativeIds,
383 OUT PSAMPR_RETURNED_USTRING_ARRAY Names,
384 OUT PSAMPR_ULONG_ARRAY Use)
385 {
386 UNIMPLEMENTED;
387 return STATUS_NOT_IMPLEMENTED;
388 }
389
390 /* Function 19 */
391 NTSTATUS
392 NTAPI
393 SamrOpenGroup(IN SAMPR_HANDLE DomainHandle,
394 IN ACCESS_MASK DesiredAccess,
395 IN unsigned long GroupId,
396 OUT SAMPR_HANDLE *GroupHandle)
397 {
398 UNIMPLEMENTED;
399 return STATUS_NOT_IMPLEMENTED;
400 }
401
402 /* Function 20 */
403 NTSTATUS
404 NTAPI
405 SamrQueryInformationGroup(IN SAMPR_HANDLE GroupHandle,
406 IN GROUP_INFORMATION_CLASS GroupInformationClass,
407 OUT PSAMPR_GROUP_INFO_BUFFER *Buffer)
408 {
409 UNIMPLEMENTED;
410 return STATUS_NOT_IMPLEMENTED;
411 }
412
413 /* Function 21 */
414 NTSTATUS
415 NTAPI
416 SamrSetInformationGroup(IN SAMPR_HANDLE GroupHandle,
417 IN GROUP_INFORMATION_CLASS GroupInformationClass,
418 IN PSAMPR_GROUP_INFO_BUFFER Buffer)
419 {
420 UNIMPLEMENTED;
421 return STATUS_NOT_IMPLEMENTED;
422 }
423
424 /* Function 22 */
425 NTSTATUS
426 NTAPI
427 SamrAddMemberToGroup(IN SAMPR_HANDLE GroupHandle,
428 IN unsigned long MemberId,
429 IN unsigned long Attributes)
430 {
431 UNIMPLEMENTED;
432 return STATUS_NOT_IMPLEMENTED;
433 }
434
435 /* Function 21 */
436 NTSTATUS
437 NTAPI
438 SamrDeleteGroup(IN OUT SAMPR_HANDLE *GroupHandle)
439 {
440 UNIMPLEMENTED;
441 return STATUS_NOT_IMPLEMENTED;
442 }
443
444 /* Function 24 */
445 NTSTATUS
446 NTAPI
447 SamrRemoveMemberFromGroup(IN SAMPR_HANDLE GroupHandle,
448 IN unsigned long MemberId)
449 {
450 UNIMPLEMENTED;
451 return STATUS_NOT_IMPLEMENTED;
452 }
453
454 /* Function 25 */
455 NTSTATUS
456 NTAPI
457 SamrGetMembersInGroup(IN SAMPR_HANDLE GroupHandle,
458 OUT PSAMPR_GET_MEMBERS_BUFFER *Members)
459 {
460 UNIMPLEMENTED;
461 return STATUS_NOT_IMPLEMENTED;
462 }
463
464 /* Function 26 */
465 NTSTATUS
466 NTAPI
467 SamrSetMemberAttributesOfGroup(IN SAMPR_HANDLE GroupHandle,
468 IN unsigned long MemberId,
469 IN unsigned long Attributes)
470 {
471 UNIMPLEMENTED;
472 return STATUS_NOT_IMPLEMENTED;
473 }
474
475 /* Function 27 */
476 NTSTATUS
477 NTAPI
478 SamrOpenAlias(IN SAMPR_HANDLE DomainHandle,
479 IN ACCESS_MASK DesiredAccess,
480 IN unsigned long AliasId,
481 OUT SAMPR_HANDLE *AliasHandle)
482 {
483 UNIMPLEMENTED;
484 return STATUS_NOT_IMPLEMENTED;
485 }
486
487 /* Function 28 */
488 NTSTATUS
489 NTAPI
490 SamrQueryInformationAlias(IN SAMPR_HANDLE AliasHandle,
491 IN ALIAS_INFORMATION_CLASS AliasInformationClass,
492 OUT PSAMPR_ALIAS_INFO_BUFFER *Buffer)
493 {
494 UNIMPLEMENTED;
495 return STATUS_NOT_IMPLEMENTED;
496 }
497
498 /* Function 29 */
499 NTSTATUS
500 NTAPI
501 SamrSetInformationAlias(IN SAMPR_HANDLE AliasHandle,
502 IN ALIAS_INFORMATION_CLASS AliasInformationClass,
503 IN PSAMPR_ALIAS_INFO_BUFFER Buffer)
504 {
505 UNIMPLEMENTED;
506 return STATUS_NOT_IMPLEMENTED;
507 }
508
509 /* Function 30 */
510 NTSTATUS
511 NTAPI
512 SamrDeleteAlias(IN OUT SAMPR_HANDLE *AliasHandle)
513 {
514 UNIMPLEMENTED;
515 return STATUS_NOT_IMPLEMENTED;
516 }
517
518 /* Function 31 */
519 NTSTATUS
520 NTAPI
521 SamrAddMemberToAlias(IN SAMPR_HANDLE AliasHandle,
522 IN PRPC_SID MemberId)
523 {
524 UNIMPLEMENTED;
525 return STATUS_NOT_IMPLEMENTED;
526 }
527
528 /* Function 32 */
529 NTSTATUS
530 NTAPI
531 SamrRemoveMemberFromAlias(IN SAMPR_HANDLE AliasHandle,
532 IN PRPC_SID MemberId)
533 {
534 UNIMPLEMENTED;
535 return STATUS_NOT_IMPLEMENTED;
536 }
537
538 /* Function 33 */
539 NTSTATUS
540 NTAPI
541 SamrGetMembersInAlias(IN SAMPR_HANDLE AliasHandle,
542 OUT PSAMPR_PSID_ARRAY_OUT Members)
543 {
544 UNIMPLEMENTED;
545 return STATUS_NOT_IMPLEMENTED;
546 }
547
548 /* Function 34 */
549 NTSTATUS
550 NTAPI
551 SamrOpenUser(IN SAMPR_HANDLE DomainHandle,
552 IN unsigned long DesiredAccess,
553 IN unsigned long UserId,
554 OUT SAMPR_HANDLE *UserHandle)
555 {
556 UNIMPLEMENTED;
557 return STATUS_NOT_IMPLEMENTED;
558 }
559
560 /* Function 35 */
561 NTSTATUS
562 NTAPI
563 SamrDeleteUser(IN OUT SAMPR_HANDLE *UserHandle)
564 {
565 UNIMPLEMENTED;
566 return STATUS_NOT_IMPLEMENTED;
567 }
568
569 /* Function 36 */
570 NTSTATUS
571 NTAPI
572 SamrQueryInformationUser(IN SAMPR_HANDLE UserHandle,
573 IN USER_INFORMATION_CLASS UserInformationClass,
574 OUT PSAMPR_USER_INFO_BUFFER *Buffer)
575 {
576 UNIMPLEMENTED;
577 return STATUS_NOT_IMPLEMENTED;
578 }
579
580 /* Function 37 */
581 NTSTATUS
582 NTAPI
583 SamrSetInformationUser(IN SAMPR_HANDLE UserHandle,
584 IN USER_INFORMATION_CLASS UserInformationClass,
585 IN PSAMPR_USER_INFO_BUFFER Buffer)
586 {
587 UNIMPLEMENTED;
588 return STATUS_NOT_IMPLEMENTED;
589 }
590
591 /* Function 38 */
592 NTSTATUS
593 NTAPI
594 SamrChangePasswordUser(IN SAMPR_HANDLE UserHandle,
595 IN unsigned char LmPresent,
596 IN PENCRYPTED_LM_OWF_PASSWORD OldLmEncryptedWithNewLm,
597 IN PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithOldLm,
598 IN unsigned char NtPresent,
599 IN PENCRYPTED_NT_OWF_PASSWORD OldNtEncryptedWithNewNt,
600 IN PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithOldNt,
601 IN unsigned char NtCrossEncryptionPresent,
602 IN PENCRYPTED_NT_OWF_PASSWORD NewNtEncryptedWithNewLm,
603 IN unsigned char LmCrossEncryptionPresent,
604 IN PENCRYPTED_LM_OWF_PASSWORD NewLmEncryptedWithNewNt)
605 {
606 UNIMPLEMENTED;
607 return STATUS_NOT_IMPLEMENTED;
608 }
609
610 /* Function 39 */
611 NTSTATUS
612 NTAPI
613 SamrGetGroupsForUser(IN SAMPR_HANDLE UserHandle,
614 OUT PSAMPR_GET_GROUPS_BUFFER *Groups)
615 {
616 UNIMPLEMENTED;
617 return STATUS_NOT_IMPLEMENTED;
618 }
619
620 /* Function 40 */
621 NTSTATUS
622 NTAPI
623 SamrQueryDisplayInformation(IN SAMPR_HANDLE DomainHandle,
624 IN DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
625 IN unsigned long Index,
626 IN unsigned long EntryCount,
627 IN unsigned long PreferredMaximumLength,
628 OUT unsigned long *TotalAvailable,
629 OUT unsigned long *TotalReturned,
630 OUT PSAMPR_DISPLAY_INFO_BUFFER Buffer)
631 {
632 UNIMPLEMENTED;
633 return STATUS_NOT_IMPLEMENTED;
634 }
635
636 /* Function 41 */
637 NTSTATUS
638 NTAPI
639 SamrGetDisplayEnumerationIndex(IN SAMPR_HANDLE DomainHandle,
640 IN DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
641 IN PRPC_UNICODE_STRING Prefix,
642 OUT unsigned long *Index)
643 {
644 UNIMPLEMENTED;
645 return STATUS_NOT_IMPLEMENTED;
646 }
647
648 /* Function 42 */
649 NTSTATUS
650 NTAPI
651 SamrTestPrivateFunctionsDomain(IN SAMPR_HANDLE DomainHandle)
652 {
653 UNIMPLEMENTED;
654 return STATUS_NOT_IMPLEMENTED;
655 }
656
657 /* Function 43 */
658 NTSTATUS
659 NTAPI
660 SamrTestPrivateFunctionsUser(IN SAMPR_HANDLE UserHandle)
661 {
662 UNIMPLEMENTED;
663 return STATUS_NOT_IMPLEMENTED;
664 }
665
666 /* Function 44 */
667 NTSTATUS
668 NTAPI
669 SamrGetUserDomainPasswordInformation(IN SAMPR_HANDLE UserHandle,
670 OUT PUSER_DOMAIN_PASSWORD_INFORMATION PasswordInformation)
671 {
672 UNIMPLEMENTED;
673 return STATUS_NOT_IMPLEMENTED;
674 }
675
676 /* Function 45 */
677 NTSTATUS
678 NTAPI
679 SamrRemoveMemberFromForeignDomain(IN SAMPR_HANDLE DomainHandle,
680 IN PRPC_SID MemberSid)
681 {
682 UNIMPLEMENTED;
683 return STATUS_NOT_IMPLEMENTED;
684 }
685
686 /* Function 46 */
687 NTSTATUS
688 NTAPI
689 SamrQueryInformationDomain2(IN SAMPR_HANDLE DomainHandle,
690 IN DOMAIN_INFORMATION_CLASS DomainInformationClass,
691 OUT PSAMPR_DOMAIN_INFO_BUFFER *Buffer)
692 {
693 UNIMPLEMENTED;
694 return STATUS_NOT_IMPLEMENTED;
695 }
696
697 /* Function 47 */
698 NTSTATUS
699 NTAPI
700 SamrQueryInformationUser2(IN SAMPR_HANDLE UserHandle,
701 IN USER_INFORMATION_CLASS UserInformationClass,
702 OUT PSAMPR_USER_INFO_BUFFER *Buffer)
703 {
704 UNIMPLEMENTED;
705 return STATUS_NOT_IMPLEMENTED;
706 }
707
708 /* Function 48 */
709 NTSTATUS
710 NTAPI
711 SamrQueryDisplayInformation2(IN SAMPR_HANDLE DomainHandle,
712 IN DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
713 IN unsigned long Index,
714 IN unsigned long EntryCount,
715 IN unsigned long PreferredMaximumLength,
716 OUT unsigned long *TotalAvailable,
717 OUT unsigned long *TotalReturned,
718 OUT PSAMPR_DISPLAY_INFO_BUFFER Buffer)
719 {
720 UNIMPLEMENTED;
721 return STATUS_NOT_IMPLEMENTED;
722 }
723
724 /* Function 49 */
725 NTSTATUS
726 NTAPI
727 SamrGetDisplayEnumerationIndex2(IN SAMPR_HANDLE DomainHandle,
728 IN DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
729 IN PRPC_UNICODE_STRING Prefix,
730 OUT unsigned long *Index)
731 {
732 UNIMPLEMENTED;
733 return STATUS_NOT_IMPLEMENTED;
734 }
735
736 /* Function 50 */
737 NTSTATUS
738 NTAPI
739 SamrCreateUser2InDomain(IN SAMPR_HANDLE DomainHandle,
740 IN PRPC_UNICODE_STRING Name,
741 IN unsigned long AccountType,
742 IN unsigned long DesiredAccess,
743 OUT SAMPR_HANDLE *UserHandle,
744 OUT unsigned long *GrantedAccess,
745 OUT unsigned long *RelativeId)
746 {
747 UNIMPLEMENTED;
748 return STATUS_NOT_IMPLEMENTED;
749 }
750
751 /* Function 51 */
752 NTSTATUS
753 NTAPI
754 SamrQueryDisplayInformation3(IN SAMPR_HANDLE DomainHandle,
755 IN DOMAIN_DISPLAY_INFORMATION DisplayInformationClass,
756 IN unsigned long Index,
757 IN unsigned long EntryCount,
758 IN unsigned long PreferredMaximumLength,
759 OUT unsigned long *TotalAvailable,
760 OUT unsigned long *TotalReturned,
761 OUT PSAMPR_DISPLAY_INFO_BUFFER Buffer)
762 {
763 UNIMPLEMENTED;
764 return STATUS_NOT_IMPLEMENTED;
765 }
766
767 /* Function 52 */
768 NTSTATUS
769 NTAPI
770 SamrAddMultipleMembersToAlias(IN SAMPR_HANDLE AliasHandle,
771 IN PSAMPR_PSID_ARRAY MembersBuffer)
772 {
773 UNIMPLEMENTED;
774 return STATUS_NOT_IMPLEMENTED;
775 }
776
777 /* Function 53 */
778 NTSTATUS
779 NTAPI
780 SamrRemoveMultipleMembersFromAlias(IN SAMPR_HANDLE AliasHandle,
781 IN PSAMPR_PSID_ARRAY MembersBuffer)
782 {
783 UNIMPLEMENTED;
784 return STATUS_NOT_IMPLEMENTED;
785 }
786
787 /* Function 54 */
788 NTSTATUS
789 NTAPI
790 SamrOemChangePasswordUser2(IN handle_t BindingHandle,
791 IN PRPC_STRING ServerName,
792 IN PRPC_STRING UserName,
793 IN PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldLm,
794 IN PENCRYPTED_LM_OWF_PASSWORD OldLmOwfPasswordEncryptedWithNewLm)
795 {
796 UNIMPLEMENTED;
797 return STATUS_NOT_IMPLEMENTED;
798 }
799
800 /* Function 55 */
801 NTSTATUS
802 NTAPI
803 SamrUnicodeChangePasswordUser2(IN handle_t BindingHandle,
804 IN PRPC_UNICODE_STRING ServerName,
805 IN PRPC_UNICODE_STRING UserName,
806 IN PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldNt,
807 IN PENCRYPTED_NT_OWF_PASSWORD OldNtOwfPasswordEncryptedWithNewNt,
808 IN unsigned char LmPresent,
809 IN PSAMPR_ENCRYPTED_USER_PASSWORD NewPasswordEncryptedWithOldLm,
810 IN PENCRYPTED_LM_OWF_PASSWORD OldLmOwfPasswordEncryptedWithNewNt)
811 {
812 UNIMPLEMENTED;
813 return STATUS_NOT_IMPLEMENTED;
814 }
815
816 /* Function 56 */
817 NTSTATUS
818 NTAPI
819 SamrGetDomainPasswordInformation(IN handle_t BindingHandle,
820 IN PRPC_UNICODE_STRING Unused,
821 OUT PUSER_DOMAIN_PASSWORD_INFORMATION PasswordInformation)
822 {
823 UNIMPLEMENTED;
824 return STATUS_NOT_IMPLEMENTED;
825 }
826
827 /* Function 57 */
828 NTSTATUS
829 NTAPI
830 SamrConnect2(IN PSAMPR_SERVER_NAME ServerName,
831 OUT SAMPR_HANDLE *ServerHandle,
832 IN ACCESS_MASK DesiredAccess)
833 {
834 UNIMPLEMENTED;
835 return STATUS_NOT_IMPLEMENTED;
836 }
837
838 /* Function 58 */
839 NTSTATUS
840 NTAPI
841 SamrSetInformationUser2(IN SAMPR_HANDLE UserHandle,
842 IN USER_INFORMATION_CLASS UserInformationClass,
843 IN PSAMPR_USER_INFO_BUFFER Buffer)
844 {
845 UNIMPLEMENTED;
846 return STATUS_NOT_IMPLEMENTED;
847 }
848
849 /* Function 59 */
850 NTSTATUS
851 NTAPI
852 SamrSetBootKeyInformation(IN handle_t BindingHandle) /* FIXME */
853 {
854 UNIMPLEMENTED;
855 return STATUS_NOT_IMPLEMENTED;
856 }
857
858 /* Function 60 */
859 NTSTATUS
860 NTAPI
861 SamrGetBootKeyInformation(IN handle_t BindingHandle) /* FIXME */
862 {
863 UNIMPLEMENTED;
864 return STATUS_NOT_IMPLEMENTED;
865 }
866
867 /* Function 61 */
868 NTSTATUS
869 NTAPI
870 SamrConnect3(IN handle_t BindingHandle) /* FIXME */
871 {
872 UNIMPLEMENTED;
873 return STATUS_NOT_IMPLEMENTED;
874 }
875
876 /* Function 62 */
877 NTSTATUS
878 NTAPI
879 SamrConnect4(IN PSAMPR_SERVER_NAME ServerName,
880 OUT SAMPR_HANDLE *ServerHandle,
881 IN unsigned long ClientRevision,
882 IN ACCESS_MASK DesiredAccess)
883 {
884 UNIMPLEMENTED;
885 return STATUS_NOT_IMPLEMENTED;
886 }
887
888 /* Function 63 */
889 NTSTATUS
890 NTAPI
891 SamrUnicodeChangePasswordUser3(IN handle_t BindingHandle) /* FIXME */
892 {
893 UNIMPLEMENTED;
894 return STATUS_NOT_IMPLEMENTED;
895 }
896
897 /* Function 64 */
898 NTSTATUS
899 NTAPI
900 SamrConnect5(IN PSAMPR_SERVER_NAME ServerName,
901 IN ACCESS_MASK DesiredAccess,
902 IN unsigned long InVersion,
903 IN SAMPR_REVISION_INFO *InRevisionInfo,
904 OUT unsigned long *OutVersion,
905 OUT SAMPR_REVISION_INFO *OutRevisionInfo,
906 OUT SAMPR_HANDLE *ServerHandle)
907 {
908 UNIMPLEMENTED;
909 return STATUS_NOT_IMPLEMENTED;
910 }
911
912 /* Function 65 */
913 NTSTATUS
914 NTAPI
915 SamrRidToSid(IN SAMPR_HANDLE ObjectHandle,
916 IN unsigned long Rid,
917 OUT PRPC_SID *Sid)
918 {
919 UNIMPLEMENTED;
920 return STATUS_NOT_IMPLEMENTED;
921 }
922
923 /* Function 66 */
924 NTSTATUS
925 NTAPI
926 SamrSetDSRMPassword(IN handle_t BindingHandle,
927 IN PRPC_UNICODE_STRING Unused,
928 IN unsigned long UserId,
929 IN PENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword)
930 {
931 UNIMPLEMENTED;
932 return STATUS_NOT_IMPLEMENTED;
933 }
934
935 /* Function 67 */
936 NTSTATUS
937 NTAPI
938 SamrValidatePassword(IN handle_t Handle,
939 IN PASSWORD_POLICY_VALIDATION_TYPE ValidationType,
940 IN PSAM_VALIDATE_INPUT_ARG InputArg,
941 OUT PSAM_VALIDATE_OUTPUT_ARG *OutputArg)
942 {
943 UNIMPLEMENTED;
944 return STATUS_NOT_IMPLEMENTED;
945 }
946
947 /* EOF */