2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: Local Security Authority (LSA) Server
4 * FILE: reactos/dll/win32/lsasrv/lsarpc.h
5 * PURPOSE: RPC interface functions
7 * PROGRAMMERS: Eric Kohl
10 /* INCLUDES ****************************************************************/
15 static RTL_CRITICAL_SECTION PolicyHandleTableLock
;
17 WINE_DEFAULT_DEBUG_CHANNEL(lsasrv
);
20 /* FUNCTIONS ***************************************************************/
24 LsarStartRpcServer(VOID
)
28 RtlInitializeCriticalSection(&PolicyHandleTableLock
);
30 TRACE("LsarStartRpcServer() called\n");
32 Status
= RpcServerUseProtseqEpW(L
"ncacn_np",
36 if (Status
!= RPC_S_OK
)
38 WARN("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status
);
42 Status
= RpcServerRegisterIf(lsarpc_v0_0_s_ifspec
,
45 if (Status
!= RPC_S_OK
)
47 WARN("RpcServerRegisterIf() failed (Status %lx)\n", Status
);
51 Status
= RpcServerListen(1, 20, TRUE
);
52 if (Status
!= RPC_S_OK
)
54 WARN("RpcServerListen() failed (Status %lx)\n", Status
);
58 TRACE("LsarStartRpcServer() done\n");
62 void __RPC_USER
LSAPR_HANDLE_rundown(LSAPR_HANDLE hHandle
)
69 NTSTATUS WINAPI
LsarClose(
70 LSAPR_HANDLE
*ObjectHandle
)
72 NTSTATUS Status
= STATUS_SUCCESS
;
74 TRACE("0x%p\n", ObjectHandle
);
76 // RtlEnterCriticalSection(&PolicyHandleTableLock);
78 Status
= LsapValidateDbObject(*ObjectHandle
,
81 if (Status
== STATUS_SUCCESS
)
83 Status
= LsapCloseDbObject(*ObjectHandle
);
87 // RtlLeaveCriticalSection(&PolicyHandleTableLock);
94 NTSTATUS WINAPI
LsarDelete(
95 LSAPR_HANDLE ObjectHandle
)
98 return STATUS_NOT_SUPPORTED
;
103 NTSTATUS WINAPI
LsarEnumeratePrivileges(
104 LSAPR_HANDLE PolicyHandle
,
105 DWORD
*EnumerationContext
,
106 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
107 DWORD PreferedMaximumLength
)
110 return STATUS_NOT_IMPLEMENTED
;
115 NTSTATUS WINAPI
LsarQuerySecurityObject(
116 LSAPR_HANDLE ObjectHandle
,
117 SECURITY_INFORMATION SecurityInformation
,
118 PLSAPR_SR_SECURITY_DESCRIPTOR
*SecurityDescriptor
)
121 return STATUS_NOT_IMPLEMENTED
;
126 NTSTATUS WINAPI
LsarSetSecurityObject(
127 LSAPR_HANDLE ObjectHandle
,
128 SECURITY_INFORMATION SecurityInformation
,
129 PLSAPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor
)
132 return STATUS_NOT_IMPLEMENTED
;
137 NTSTATUS WINAPI
LsarChangePassword(
139 PRPC_UNICODE_STRING String1
,
140 PRPC_UNICODE_STRING String2
,
141 PRPC_UNICODE_STRING String3
,
142 PRPC_UNICODE_STRING String4
,
143 PRPC_UNICODE_STRING String5
)
146 return STATUS_NOT_IMPLEMENTED
;
151 NTSTATUS WINAPI
LsarOpenPolicy(
153 PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes
,
154 ACCESS_MASK DesiredAccess
,
155 LSAPR_HANDLE
*PolicyHandle
)
157 NTSTATUS Status
= STATUS_SUCCESS
;
159 TRACE("LsarOpenPolicy called!\n");
161 RtlEnterCriticalSection(&PolicyHandleTableLock
);
163 *PolicyHandle
= LsapCreateDbObject(NULL
,
168 if (*PolicyHandle
== NULL
)
169 Status
= STATUS_INSUFFICIENT_RESOURCES
;
171 RtlLeaveCriticalSection(&PolicyHandleTableLock
);
173 TRACE("LsarOpenPolicy done!\n");
180 NTSTATUS WINAPI
LsarQueryInformationPolicy(
181 LSAPR_HANDLE PolicyHandle
,
182 POLICY_INFORMATION_CLASS InformationClass
,
183 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
187 TRACE("LsarQueryInformationPolicy(%p,0x%08x,%p)\n",
188 PolicyHandle
, InformationClass
, PolicyInformation
);
190 if (PolicyInformation
)
192 TRACE("*PolicyInformation %p\n", *PolicyInformation
);
195 Status
= LsapValidateDbObject(PolicyHandle
,
198 if (!NT_SUCCESS(Status
))
201 switch (InformationClass
)
203 case PolicyAuditEventsInformation
: /* 2 */
204 Status
= LsarQueryAuditEvents(PolicyHandle
,
208 case PolicyPrimaryDomainInformation
: /* 3 */
209 Status
= LsarQueryPrimaryDomain(PolicyHandle
,
213 case PolicyAccountDomainInformation
: /* 5 */
214 Status
= LsarQueryAccountDomain(PolicyHandle
,
218 case PolicyDnsDomainInformation
: /* 12 (0xc) */
219 Status
= LsarQueryDnsDomain(PolicyHandle
,
223 case PolicyAuditLogInformation
:
224 case PolicyPdAccountInformation
:
225 case PolicyLsaServerRoleInformation
:
226 case PolicyReplicaSourceInformation
:
227 case PolicyDefaultQuotaInformation
:
228 case PolicyModificationInformation
:
229 case PolicyAuditFullSetInformation
:
230 case PolicyAuditFullQueryInformation
:
231 case PolicyEfsInformation
:
232 FIXME("category not implemented\n");
233 Status
= STATUS_UNSUCCESSFUL
;
242 NTSTATUS WINAPI
LsarSetInformationPolicy(
243 LSAPR_HANDLE PolicyHandle
,
244 POLICY_INFORMATION_CLASS InformationClass
,
245 PLSAPR_POLICY_INFORMATION PolicyInformation
)
249 TRACE("LsarSetInformationPolicy(%p,0x%08x,%p)\n",
250 PolicyHandle
, InformationClass
, PolicyInformation
);
252 if (PolicyInformation
)
254 TRACE("*PolicyInformation %p\n", *PolicyInformation
);
257 Status
= LsapValidateDbObject(PolicyHandle
,
260 if (!NT_SUCCESS(Status
))
263 switch (InformationClass
)
265 case PolicyAuditEventsInformation
:
266 Status
= STATUS_NOT_IMPLEMENTED
;
269 case PolicyPrimaryDomainInformation
:
270 Status
= LsarSetPrimaryDomain(PolicyHandle
,
271 (PLSAPR_POLICY_PRIMARY_DOM_INFO
)PolicyInformation
);
274 case PolicyAccountDomainInformation
:
275 Status
= LsarSetAccountDomain(PolicyHandle
,
276 (PLSAPR_POLICY_ACCOUNT_DOM_INFO
)PolicyInformation
);
279 case PolicyDnsDomainInformation
:
280 Status
= LsarSetDnsDomain(PolicyHandle
,
281 (PLSAPR_POLICY_DNS_DOMAIN_INFO
)PolicyInformation
);
284 case PolicyLsaServerRoleInformation
:
285 Status
= STATUS_NOT_IMPLEMENTED
;
289 Status
= STATUS_INVALID_PARAMETER
;
298 NTSTATUS WINAPI
LsarClearAuditLog(
299 LSAPR_HANDLE ObjectHandle
)
302 return STATUS_NOT_IMPLEMENTED
;
307 NTSTATUS WINAPI
LsarCreateAccount(
308 LSAPR_HANDLE PolicyHandle
,
310 ACCESS_MASK DesiredAccess
,
311 LSAPR_HANDLE
*AccountHandle
)
314 return STATUS_NOT_IMPLEMENTED
;
319 NTSTATUS WINAPI
LsarEnumerateAccounts(
320 LSAPR_HANDLE PolicyHandle
,
321 DWORD
*EnumerationContext
,
322 PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer
,
323 DWORD PreferedMaximumLength
)
326 return STATUS_NOT_IMPLEMENTED
;
331 NTSTATUS WINAPI
LsarCreateTrustedDomain(
332 LSAPR_HANDLE PolicyHandle
,
333 PLSAPR_TRUST_INFORMATION TrustedDomainInformation
,
334 ACCESS_MASK DesiredAccess
,
335 LSAPR_HANDLE
*TrustedDomainHandle
)
338 return STATUS_NOT_IMPLEMENTED
;
343 NTSTATUS WINAPI
LsarEnumerateTrustedDomains(
344 LSAPR_HANDLE PolicyHandle
,
345 DWORD
*EnumerationContext
,
346 PLSAPR_TRUSTED_ENUM_BUFFER EnumerationBuffer
,
347 DWORD PreferedMaximumLength
)
350 return STATUS_NOT_IMPLEMENTED
;
355 NTSTATUS WINAPI
LsarLookupNames(
356 LSAPR_HANDLE PolicyHandle
,
358 PRPC_UNICODE_STRING Names
,
359 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
360 PLSAPR_TRANSLATED_SIDS TranslatedSids
,
361 LSAP_LOOKUP_LEVEL LookupLevel
,
364 SID_IDENTIFIER_AUTHORITY IdentifierAuthority
= {SECURITY_NT_AUTHORITY
};
365 static const UNICODE_STRING DomainName
= RTL_CONSTANT_STRING(L
"DOMAIN");
366 PLSAPR_REFERENCED_DOMAIN_LIST OutputDomains
= NULL
;
367 PLSA_TRANSLATED_SID OutputSids
= NULL
;
368 ULONG OutputSidsLength
;
374 TRACE("LsarLookupNames(%p, %lu, %p, %p, %p, %d, %p)\n",
375 PolicyHandle
, Count
, Names
, ReferencedDomains
, TranslatedSids
,
376 LookupLevel
, MappedCount
);
378 TranslatedSids
->Entries
= Count
;
379 TranslatedSids
->Sids
= NULL
;
380 *ReferencedDomains
= NULL
;
382 OutputSidsLength
= Count
* sizeof(LSA_TRANSLATED_SID
);
383 OutputSids
= MIDL_user_allocate(OutputSidsLength
);
384 if (OutputSids
== NULL
)
386 return STATUS_INSUFFICIENT_RESOURCES
;
389 RtlZeroMemory(OutputSids
, OutputSidsLength
);
391 OutputDomains
= MIDL_user_allocate(sizeof(LSAPR_REFERENCED_DOMAIN_LIST
));
392 if (OutputDomains
== NULL
)
394 MIDL_user_free(OutputSids
);
395 return STATUS_INSUFFICIENT_RESOURCES
;
398 OutputDomains
->Entries
= Count
;
399 OutputDomains
->Domains
= MIDL_user_allocate(Count
* sizeof(LSA_TRUST_INFORMATION
));
400 if (OutputDomains
->Domains
== NULL
)
402 MIDL_user_free(OutputDomains
);
403 MIDL_user_free(OutputSids
);
404 return STATUS_INSUFFICIENT_RESOURCES
;
407 Status
= RtlAllocateAndInitializeSid(&IdentifierAuthority
,
409 SECURITY_BUILTIN_DOMAIN_RID
,
410 DOMAIN_ALIAS_RID_ADMINS
,
413 if (!NT_SUCCESS(Status
))
415 MIDL_user_free(OutputDomains
->Domains
);
416 MIDL_user_free(OutputDomains
);
417 MIDL_user_free(OutputSids
);
421 SidLength
= RtlLengthSid(Sid
);
423 for (i
= 0; i
< Count
; i
++)
425 OutputDomains
->Domains
[i
].Sid
= MIDL_user_allocate(SidLength
);
426 RtlCopyMemory(OutputDomains
->Domains
[i
].Sid
, Sid
, SidLength
);
428 OutputDomains
->Domains
[i
].Name
.Buffer
= MIDL_user_allocate(DomainName
.MaximumLength
);
429 OutputDomains
->Domains
[i
].Name
.Length
= DomainName
.Length
;
430 OutputDomains
->Domains
[i
].Name
.MaximumLength
= DomainName
.MaximumLength
;
431 RtlCopyMemory(OutputDomains
->Domains
[i
].Name
.Buffer
, DomainName
.Buffer
, DomainName
.MaximumLength
);
434 for (i
= 0; i
< Count
; i
++)
436 OutputSids
[i
].Use
= SidTypeWellKnownGroup
;
437 OutputSids
[i
].RelativeId
= DOMAIN_USER_RID_ADMIN
; //DOMAIN_ALIAS_RID_ADMINS;
438 OutputSids
[i
].DomainIndex
= i
;
441 *ReferencedDomains
= OutputDomains
;
443 *MappedCount
= Count
;
445 TranslatedSids
->Entries
= Count
;
446 TranslatedSids
->Sids
= OutputSids
;
448 return STATUS_SUCCESS
;
453 NTSTATUS WINAPI
LsarLookupSids(
454 LSAPR_HANDLE PolicyHandle
,
455 PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
456 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
457 PLSAPR_TRANSLATED_NAMES TranslatedNames
,
458 LSAP_LOOKUP_LEVEL LookupLevel
,
461 SID_IDENTIFIER_AUTHORITY IdentifierAuthority
= {SECURITY_NT_AUTHORITY
};
462 static const UNICODE_STRING DomainName
= RTL_CONSTANT_STRING(L
"DOMAIN");
463 PLSAPR_REFERENCED_DOMAIN_LIST OutputDomains
= NULL
;
464 PLSAPR_TRANSLATED_NAME OutputNames
= NULL
;
465 ULONG OutputNamesLength
;
471 TRACE("LsarLookupSids(%p, %p, %p, %p, %d, %p)\n",
472 PolicyHandle
, SidEnumBuffer
, ReferencedDomains
, TranslatedNames
,
473 LookupLevel
, MappedCount
);
475 TranslatedNames
->Entries
= SidEnumBuffer
->Entries
;
476 TranslatedNames
->Names
= NULL
;
477 *ReferencedDomains
= NULL
;
479 OutputNamesLength
= SidEnumBuffer
->Entries
* sizeof(LSA_TRANSLATED_NAME
);
480 OutputNames
= MIDL_user_allocate(OutputNamesLength
);
481 if (OutputNames
== NULL
)
483 return STATUS_INSUFFICIENT_RESOURCES
;
486 RtlZeroMemory(OutputNames
, OutputNamesLength
);
488 OutputDomains
= MIDL_user_allocate(sizeof(LSAPR_REFERENCED_DOMAIN_LIST
));
489 if (OutputDomains
== NULL
)
491 MIDL_user_free(OutputNames
);
492 return STATUS_INSUFFICIENT_RESOURCES
;
495 OutputDomains
->Entries
= SidEnumBuffer
->Entries
;
496 OutputDomains
->Domains
= MIDL_user_allocate(SidEnumBuffer
->Entries
* sizeof(LSA_TRUST_INFORMATION
));
497 if (OutputDomains
->Domains
== NULL
)
499 MIDL_user_free(OutputDomains
);
500 MIDL_user_free(OutputNames
);
501 return STATUS_INSUFFICIENT_RESOURCES
;
504 Status
= RtlAllocateAndInitializeSid(&IdentifierAuthority
,
506 SECURITY_BUILTIN_DOMAIN_RID
,
507 DOMAIN_ALIAS_RID_ADMINS
,
510 if (!NT_SUCCESS(Status
))
512 MIDL_user_free(OutputDomains
->Domains
);
513 MIDL_user_free(OutputDomains
);
514 MIDL_user_free(OutputNames
);
518 SidLength
= RtlLengthSid(Sid
);
520 for (i
= 0; i
< SidEnumBuffer
->Entries
; i
++)
522 OutputDomains
->Domains
[i
].Sid
= MIDL_user_allocate(SidLength
);
523 RtlCopyMemory(OutputDomains
->Domains
[i
].Sid
, Sid
, SidLength
);
525 OutputDomains
->Domains
[i
].Name
.Buffer
= MIDL_user_allocate(DomainName
.MaximumLength
);
526 OutputDomains
->Domains
[i
].Name
.Length
= DomainName
.Length
;
527 OutputDomains
->Domains
[i
].Name
.MaximumLength
= DomainName
.MaximumLength
;
528 RtlCopyMemory(OutputDomains
->Domains
[i
].Name
.Buffer
, DomainName
.Buffer
, DomainName
.MaximumLength
);
531 Status
= LsapLookupSids(SidEnumBuffer
,
534 *ReferencedDomains
= OutputDomains
;
536 *MappedCount
= SidEnumBuffer
->Entries
;
538 TranslatedNames
->Entries
= SidEnumBuffer
->Entries
;
539 TranslatedNames
->Names
= OutputNames
;
546 NTSTATUS WINAPI
LsarCreateSecret(
547 LSAPR_HANDLE PolicyHandle
,
548 PRPC_UNICODE_STRING SecretName
,
549 ACCESS_MASK DesiredAccess
,
550 LSAPR_HANDLE
*SecretHandle
)
553 return STATUS_NOT_IMPLEMENTED
;
558 NTSTATUS WINAPI
LsarOpenAccount(
559 LSAPR_HANDLE PolicyHandle
,
561 ACCESS_MASK DesiredAccess
,
562 LSAPR_HANDLE
*AccountHandle
)
565 return STATUS_NOT_IMPLEMENTED
;
570 NTSTATUS WINAPI
LsarEnumeratePrivilegesAccount(
571 LSAPR_HANDLE AccountHandle
,
572 PLSAPR_PRIVILEGE_SET
*Privileges
)
575 return STATUS_NOT_IMPLEMENTED
;
580 NTSTATUS WINAPI
LsarAddPrivilegesToAccount(
581 LSAPR_HANDLE AccountHandle
,
582 PLSAPR_PRIVILEGE_SET Privileges
)
585 return STATUS_NOT_IMPLEMENTED
;
590 NTSTATUS WINAPI
LsarRemovePrivilegesFromAccount(
591 LSAPR_HANDLE AccountHandle
,
593 PLSAPR_PRIVILEGE_SET Privileges
)
596 return STATUS_NOT_IMPLEMENTED
;
601 NTSTATUS WINAPI
LsarGetQuotasForAccount(
602 LSAPR_HANDLE AccountHandle
,
603 PQUOTA_LIMITS QuotaLimits
)
606 return STATUS_NOT_IMPLEMENTED
;
611 NTSTATUS WINAPI
LsarSetQuotasForAccount(
612 LSAPR_HANDLE AccountHandle
,
613 PQUOTA_LIMITS QuotaLimits
)
616 return STATUS_NOT_IMPLEMENTED
;
621 NTSTATUS WINAPI
LsarGetSystemAccessAccount(
622 LSAPR_HANDLE AccountHandle
,
623 ACCESS_MASK
*SystemAccess
)
626 return STATUS_NOT_IMPLEMENTED
;
631 NTSTATUS WINAPI
LsarSetSystemAccessAccount(
632 LSAPR_HANDLE AccountHandle
,
633 ACCESS_MASK SystemAccess
)
636 return STATUS_NOT_IMPLEMENTED
;
641 NTSTATUS WINAPI
LsarOpenTrustedDomain(
642 LSAPR_HANDLE PolicyHandle
,
643 PRPC_SID TrustedDomainSid
,
644 ACCESS_MASK DesiredAccess
,
645 LSAPR_HANDLE
*TrustedDomainHandle
)
648 return STATUS_NOT_IMPLEMENTED
;
653 NTSTATUS WINAPI
LsarQueryInfoTrustedDomain(
654 LSAPR_HANDLE TrustedDomainHandle
,
655 TRUSTED_INFORMATION_CLASS InformationClass
,
656 PLSAPR_TRUSTED_DOMAIN_INFO
*TrustedDomainInformation
)
659 return STATUS_NOT_IMPLEMENTED
;
664 NTSTATUS WINAPI
LsarSetInformationTrustedDomain(
665 LSAPR_HANDLE TrustedDomainHandle
,
666 TRUSTED_INFORMATION_CLASS InformationClass
,
667 PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation
)
670 return STATUS_NOT_IMPLEMENTED
;
675 NTSTATUS WINAPI
LsarOpenSecret(
676 LSAPR_HANDLE PolicyHandle
,
677 PRPC_UNICODE_STRING SecretName
,
678 ACCESS_MASK DesiredAccess
,
679 LSAPR_HANDLE
*SecretHandle
)
682 return STATUS_NOT_IMPLEMENTED
;
687 NTSTATUS WINAPI
LsarSetSecret(
688 LSAPR_HANDLE
*SecretHandle
,
689 PLSAPR_CR_CIPHER_VALUE EncryptedCurrentValue
,
690 PLSAPR_CR_CIPHER_VALUE EncryptedOldValue
)
693 return STATUS_NOT_IMPLEMENTED
;
698 NTSTATUS WINAPI
LsarQuerySecret(
699 LSAPR_HANDLE SecretHandle
,
700 PLSAPR_CR_CIPHER_VALUE
*EncryptedCurrentValue
,
701 PLARGE_INTEGER CurrentValueSetTime
,
702 PLSAPR_CR_CIPHER_VALUE
*EncryptedOldValue
,
703 PLARGE_INTEGER OldValueSetTime
)
706 return STATUS_NOT_IMPLEMENTED
;
711 NTSTATUS WINAPI
LsarLookupPrivilegeValue(
712 LSAPR_HANDLE PolicyHandle
,
713 PRPC_UNICODE_STRING Name
,
718 TRACE("LsarLookupPrivilegeValue(%p, %wZ, %p)\n",
719 PolicyHandle
, Name
, Value
);
721 Status
= LsapValidateDbObject(PolicyHandle
,
724 if (!NT_SUCCESS(Status
))
726 ERR("Invalid handle (Status %lx)\n", Status
);
730 TRACE("Privilege: %wZ\n", Name
);
732 Status
= LsarpLookupPrivilegeValue((PUNICODE_STRING
)Name
,
740 NTSTATUS WINAPI
LsarLookupPrivilegeName(
741 LSAPR_HANDLE PolicyHandle
,
743 PRPC_UNICODE_STRING
*Name
)
747 TRACE("LsarLookupPrivilegeName(%p, %p, %p)\n",
748 PolicyHandle
, Value
, Name
);
750 Status
= LsapValidateDbObject(PolicyHandle
,
753 if (!NT_SUCCESS(Status
))
755 ERR("Invalid handle\n");
759 Status
= LsarpLookupPrivilegeName(Value
, (PUNICODE_STRING
*)Name
);
766 NTSTATUS WINAPI
LsarLookupPrivilegeDisplayName(
767 LSAPR_HANDLE PolicyHandle
,
768 PRPC_UNICODE_STRING Name
,
769 USHORT ClientLanguage
,
770 USHORT ClientSystemDefaultLanguage
,
771 PRPC_UNICODE_STRING
*DisplayName
,
772 USHORT
*LanguageReturned
)
775 return STATUS_NOT_IMPLEMENTED
;
780 NTSTATUS WINAPI
LsarDeleteObject(
781 LSAPR_HANDLE
*ObjectHandle
)
784 return STATUS_NOT_IMPLEMENTED
;
789 NTSTATUS WINAPI
LsarEnumerateAccountsWithUserRight(
790 LSAPR_HANDLE PolicyHandle
,
791 PRPC_UNICODE_STRING UserRight
,
792 PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer
)
795 return STATUS_NOT_IMPLEMENTED
;
800 NTSTATUS WINAPI
LsarEnmuerateAccountRights(
801 LSAPR_HANDLE PolicyHandle
,
803 PLSAPR_USER_RIGHT_SET UserRights
)
807 FIXME("(%p,%p,%p) stub\n", PolicyHandle
, AccountSid
, UserRights
);
809 Status
= LsapValidateDbObject(PolicyHandle
,
812 if (!NT_SUCCESS(Status
))
815 UserRights
->Entries
= 0;
816 UserRights
->UserRights
= NULL
;
817 return STATUS_OBJECT_NAME_NOT_FOUND
;
822 NTSTATUS WINAPI
LsarAddAccountRights(
823 LSAPR_HANDLE PolicyHandle
,
825 PLSAPR_USER_RIGHT_SET UserRights
)
828 return STATUS_NOT_IMPLEMENTED
;
833 NTSTATUS WINAPI
LsarRemoveAccountRights(
834 LSAPR_HANDLE PolicyHandle
,
837 PLSAPR_USER_RIGHT_SET UserRights
)
840 return STATUS_NOT_IMPLEMENTED
;
845 NTSTATUS WINAPI
LsarQueryTrustedDomainInfo(
846 LSAPR_HANDLE PolicyHandle
,
847 PRPC_SID TrustedDomainSid
,
848 TRUSTED_INFORMATION_CLASS InformationClass
,
849 PLSAPR_TRUSTED_DOMAIN_INFO
*TrustedDomainInformation
)
852 return STATUS_NOT_IMPLEMENTED
;
857 NTSTATUS WINAPI
LsarSetTrustedDomainInfo(
858 LSAPR_HANDLE PolicyHandle
,
859 PRPC_SID TrustedDomainSid
,
860 TRUSTED_INFORMATION_CLASS InformationClass
,
861 PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation
)
864 return STATUS_NOT_IMPLEMENTED
;
869 NTSTATUS WINAPI
LsarDeleteTrustedDomain(
870 LSAPR_HANDLE PolicyHandle
,
871 PRPC_SID TrustedDomainSid
)
874 return STATUS_NOT_IMPLEMENTED
;
879 NTSTATUS WINAPI
LsarStorePrivateData(
880 LSAPR_HANDLE PolicyHandle
,
881 PRPC_UNICODE_STRING KeyName
,
882 PLSAPR_CR_CIPHER_VALUE EncryptedData
)
885 return STATUS_NOT_IMPLEMENTED
;
890 NTSTATUS WINAPI
LsarRetrievePrivateData(
891 LSAPR_HANDLE PolicyHandle
,
892 PRPC_UNICODE_STRING KeyName
,
893 PLSAPR_CR_CIPHER_VALUE
*EncryptedData
)
896 return STATUS_NOT_IMPLEMENTED
;
901 NTSTATUS WINAPI
LsarOpenPolicy2(
903 PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes
,
904 ACCESS_MASK DesiredAccess
,
905 LSAPR_HANDLE
*PolicyHandle
)
908 return STATUS_NOT_IMPLEMENTED
;
913 NTSTATUS WINAPI
LsarGetUserName(
915 PRPC_UNICODE_STRING
*UserName
,
916 PRPC_UNICODE_STRING
*DomainName
)
919 return STATUS_NOT_IMPLEMENTED
;
924 NTSTATUS WINAPI
LsarQueryInformationPolicy2(
925 LSAPR_HANDLE PolicyHandle
,
926 POLICY_INFORMATION_CLASS InformationClass
,
927 unsigned long *PolicyInformation
)
930 return STATUS_NOT_IMPLEMENTED
;
935 NTSTATUS WINAPI
LsarSetInformationPolicy2(
936 LSAPR_HANDLE PolicyHandle
,
937 POLICY_INFORMATION_CLASS InformationClass
,
938 unsigned long PolicyInformation
)
941 return STATUS_NOT_IMPLEMENTED
;
946 NTSTATUS WINAPI
LsarQueryTrustedDomainInfoByName(
947 LSAPR_HANDLE PolicyHandle
,
948 PRPC_UNICODE_STRING TrustedDomainName
,
949 POLICY_INFORMATION_CLASS InformationClass
,
950 unsigned long *PolicyInformation
)
953 return STATUS_NOT_IMPLEMENTED
;
958 NTSTATUS WINAPI
LsarSetTrustedDomainInfoByName(
959 LSAPR_HANDLE PolicyHandle
,
960 PRPC_UNICODE_STRING TrustedDomainName
,
961 POLICY_INFORMATION_CLASS InformationClass
,
962 unsigned long PolicyInformation
)
965 return STATUS_NOT_IMPLEMENTED
;
970 NTSTATUS WINAPI
LsarEnumerateTrustedDomainsEx(
971 LSAPR_HANDLE PolicyHandle
,
972 DWORD
*EnumerationContext
,
973 PLSAPR_TRUSTED_ENUM_BUFFER_EX EnumerationBuffer
,
974 DWORD PreferedMaximumLength
)
977 return STATUS_NOT_IMPLEMENTED
;
982 NTSTATUS WINAPI
LsarCreateTrustedDomainEx(
983 LSAPR_HANDLE PolicyHandle
,
984 PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation
,
985 PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION AuthentificationInformation
,
986 ACCESS_MASK DesiredAccess
,
987 LSAPR_HANDLE
*TrustedDomainHandle
)
990 return STATUS_NOT_IMPLEMENTED
;
995 NTSTATUS WINAPI
LsarSetPolicyReplicationHandle(
996 PLSAPR_HANDLE PolicyHandle
)
999 return STATUS_NOT_IMPLEMENTED
;
1004 NTSTATUS WINAPI
LsarQueryDomainInformationPolicy(
1005 LSAPR_HANDLE PolicyHandle
,
1006 POLICY_INFORMATION_CLASS InformationClass
,
1007 unsigned long *PolicyInformation
)
1010 return STATUS_NOT_IMPLEMENTED
;
1015 NTSTATUS WINAPI
LsarSetDomainInformationPolicy(
1016 LSAPR_HANDLE PolicyHandle
,
1017 POLICY_INFORMATION_CLASS InformationClass
,
1018 unsigned long PolicyInformation
)
1021 return STATUS_NOT_IMPLEMENTED
;
1026 NTSTATUS WINAPI
LsarOpenTrustedDomainByName(
1027 LSAPR_HANDLE PolicyHandle
,
1028 PRPC_UNICODE_STRING TrustedDomainName
,
1029 ACCESS_MASK DesiredAccess
,
1030 LSAPR_HANDLE
*TrustedDomainHandle
)
1033 return STATUS_NOT_IMPLEMENTED
;
1038 NTSTATUS WINAPI
LsarTestCall(
1042 return STATUS_NOT_IMPLEMENTED
;
1047 NTSTATUS WINAPI
LsarLookupSids2(
1048 LSAPR_HANDLE PolicyHandle
,
1049 PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
1050 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1051 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
1052 LSAP_LOOKUP_LEVEL LookupLevel
,
1054 DWORD LookupOptions
,
1055 DWORD ClientRevision
)
1058 return STATUS_NOT_IMPLEMENTED
;
1063 NTSTATUS WINAPI
LsarLookupNames2(
1064 LSAPR_HANDLE PolicyHandle
,
1066 PRPC_UNICODE_STRING Names
,
1067 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1068 PLSAPR_TRANSLATED_SIDS_EX TranslatedSids
,
1069 LSAP_LOOKUP_LEVEL LookupLevel
,
1071 DWORD LookupOptions
,
1072 DWORD ClientRevision
)
1075 return STATUS_NOT_IMPLEMENTED
;
1080 NTSTATUS WINAPI
LsarCreateTrustedDomainEx2(
1081 LSAPR_HANDLE PolicyHandle
,
1082 PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation
,
1083 PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL AuthentificationInformation
,
1084 ACCESS_MASK DesiredAccess
,
1085 LSAPR_HANDLE
*TrustedDomainHandle
)
1088 return STATUS_NOT_IMPLEMENTED
;
1093 NTSTATUS WINAPI
CredrWrite(
1097 return STATUS_NOT_IMPLEMENTED
;
1102 NTSTATUS WINAPI
CredrRead(
1106 return STATUS_NOT_IMPLEMENTED
;
1111 NTSTATUS WINAPI
CredrEnumerate(
1115 return STATUS_NOT_IMPLEMENTED
;
1120 NTSTATUS WINAPI
CredrWriteDomainCredentials(
1124 return STATUS_NOT_IMPLEMENTED
;
1129 NTSTATUS WINAPI
CredrReadDomainCredentials(
1133 return STATUS_NOT_IMPLEMENTED
;
1138 NTSTATUS WINAPI
CredrDelete(
1142 return STATUS_NOT_IMPLEMENTED
;
1147 NTSTATUS WINAPI
CredrGetTargetInfo(
1151 return STATUS_NOT_IMPLEMENTED
;
1156 NTSTATUS WINAPI
CredrProfileLoaded(
1160 return STATUS_NOT_IMPLEMENTED
;
1165 NTSTATUS WINAPI
LsarLookupNames3(
1166 LSAPR_HANDLE PolicyHandle
,
1168 PRPC_UNICODE_STRING Names
,
1169 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1170 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
1171 LSAP_LOOKUP_LEVEL LookupLevel
,
1173 DWORD LookupOptions
,
1174 DWORD ClientRevision
)
1176 SID_IDENTIFIER_AUTHORITY IdentifierAuthority
= {SECURITY_NT_AUTHORITY
};
1177 static const UNICODE_STRING DomainName
= RTL_CONSTANT_STRING(L
"DOMAIN");
1178 PLSAPR_REFERENCED_DOMAIN_LIST DomainsBuffer
= NULL
;
1179 PLSAPR_TRANSLATED_SID_EX2 SidsBuffer
= NULL
;
1180 ULONG SidsBufferLength
;
1181 ULONG DomainSidLength
;
1182 ULONG AccountSidLength
;
1188 TRACE("LsarLookupNames3(%p, %lu, %p, %p, %p, %d, %p, %lu, %lu)\n",
1189 PolicyHandle
, Count
, Names
, ReferencedDomains
, TranslatedSids
,
1190 LookupLevel
, MappedCount
, LookupOptions
, ClientRevision
);
1193 return STATUS_NONE_MAPPED
;
1195 TranslatedSids
->Entries
= Count
;
1196 TranslatedSids
->Sids
= NULL
;
1197 *ReferencedDomains
= NULL
;
1199 SidsBufferLength
= Count
* sizeof(LSAPR_TRANSLATED_SID_EX2
);
1200 SidsBuffer
= MIDL_user_allocate(SidsBufferLength
);
1201 if (SidsBuffer
== NULL
)
1202 return STATUS_INSUFFICIENT_RESOURCES
;
1204 for (i
= 0; i
< Count
; i
++)
1206 SidsBuffer
[i
].Use
= SidTypeUser
;
1207 SidsBuffer
[i
].Sid
= NULL
;
1208 SidsBuffer
[i
].DomainIndex
= -1;
1209 SidsBuffer
[i
].Flags
= 0;
1212 DomainsBuffer
= MIDL_user_allocate(sizeof(LSAPR_REFERENCED_DOMAIN_LIST
));
1213 if (DomainsBuffer
== NULL
)
1215 MIDL_user_free(SidsBuffer
);
1216 return STATUS_INSUFFICIENT_RESOURCES
;
1219 DomainsBuffer
->Entries
= Count
;
1220 DomainsBuffer
->Domains
= MIDL_user_allocate(Count
* sizeof(LSA_TRUST_INFORMATION
));
1221 if (DomainsBuffer
->Domains
== NULL
)
1223 MIDL_user_free(DomainsBuffer
);
1224 MIDL_user_free(SidsBuffer
);
1225 return STATUS_INSUFFICIENT_RESOURCES
;
1228 Status
= RtlAllocateAndInitializeSid(&IdentifierAuthority
,
1230 SECURITY_BUILTIN_DOMAIN_RID
,
1231 DOMAIN_ALIAS_RID_ADMINS
,
1234 if (!NT_SUCCESS(Status
))
1236 MIDL_user_free(DomainsBuffer
->Domains
);
1237 MIDL_user_free(DomainsBuffer
);
1238 MIDL_user_free(SidsBuffer
);
1242 DomainSidLength
= RtlLengthSid(DomainSid
);
1244 for (i
= 0; i
< Count
; i
++)
1246 DomainsBuffer
->Domains
[i
].Sid
= MIDL_user_allocate(DomainSidLength
);
1247 RtlCopyMemory(DomainsBuffer
->Domains
[i
].Sid
,
1251 DomainsBuffer
->Domains
[i
].Name
.Buffer
= MIDL_user_allocate(DomainName
.MaximumLength
);
1252 DomainsBuffer
->Domains
[i
].Name
.Length
= DomainName
.Length
;
1253 DomainsBuffer
->Domains
[i
].Name
.MaximumLength
= DomainName
.MaximumLength
;
1254 RtlCopyMemory(DomainsBuffer
->Domains
[i
].Name
.Buffer
,
1256 DomainName
.MaximumLength
);
1259 Status
= RtlAllocateAndInitializeSid(&IdentifierAuthority
,
1261 SECURITY_BUILTIN_DOMAIN_RID
,
1262 DOMAIN_ALIAS_RID_ADMINS
,
1263 DOMAIN_USER_RID_ADMIN
,
1266 if (!NT_SUCCESS(Status
))
1268 MIDL_user_free(DomainsBuffer
->Domains
);
1269 MIDL_user_free(DomainsBuffer
);
1270 MIDL_user_free(SidsBuffer
);
1274 AccountSidLength
= RtlLengthSid(AccountSid
);
1276 for (i
= 0; i
< Count
; i
++)
1278 SidsBuffer
[i
].Use
= SidTypeWellKnownGroup
;
1279 SidsBuffer
[i
].Sid
= MIDL_user_allocate(AccountSidLength
);
1281 RtlCopyMemory(SidsBuffer
[i
].Sid
,
1285 SidsBuffer
[i
].DomainIndex
= i
;
1286 SidsBuffer
[i
].Flags
= 0;
1289 *ReferencedDomains
= DomainsBuffer
;
1290 *MappedCount
= Count
;
1292 TranslatedSids
->Entries
= Count
;
1293 TranslatedSids
->Sids
= SidsBuffer
;
1295 return STATUS_SUCCESS
;
1300 NTSTATUS WINAPI
CredrGetSessionTypes(
1304 return STATUS_NOT_IMPLEMENTED
;
1309 NTSTATUS WINAPI
LsarRegisterAuditEvent(
1313 return STATUS_NOT_IMPLEMENTED
;
1318 NTSTATUS WINAPI
LsarGenAuditEvent(
1322 return STATUS_NOT_IMPLEMENTED
;
1327 NTSTATUS WINAPI
LsarUnregisterAuditEvent(
1331 return STATUS_NOT_IMPLEMENTED
;
1336 NTSTATUS WINAPI
LsarQueryForestTrustInformation(
1337 LSAPR_HANDLE PolicyHandle
,
1338 PLSA_UNICODE_STRING TrustedDomainName
,
1339 LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType
,
1340 PLSA_FOREST_TRUST_INFORMATION
*ForestTrustInfo
)
1343 return STATUS_NOT_IMPLEMENTED
;
1348 NTSTATUS WINAPI
LsarSetForestTrustInformation(
1349 LSAPR_HANDLE PolicyHandle
,
1350 PLSA_UNICODE_STRING TrustedDomainName
,
1351 LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType
,
1352 PLSA_FOREST_TRUST_INFORMATION ForestTrustInfo
,
1354 PLSA_FOREST_TRUST_COLLISION_INFORMATION
*CollisionInfo
)
1357 return STATUS_NOT_IMPLEMENTED
;
1362 NTSTATUS WINAPI
CredrRename(
1366 return STATUS_NOT_IMPLEMENTED
;
1371 NTSTATUS WINAPI
LsarLookupSids3(
1372 LSAPR_HANDLE PolicyHandle
,
1373 PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
1374 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1375 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
1376 LSAP_LOOKUP_LEVEL LookupLevel
,
1378 DWORD LookupOptions
,
1379 DWORD ClientRevision
)
1382 return STATUS_NOT_IMPLEMENTED
;
1387 NTSTATUS WINAPI
LsarLookupNames4(
1390 PRPC_UNICODE_STRING Names
,
1391 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1392 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
1393 LSAP_LOOKUP_LEVEL LookupLevel
,
1395 DWORD LookupOptions
,
1396 DWORD ClientRevision
)
1399 return STATUS_NOT_IMPLEMENTED
;
1404 NTSTATUS WINAPI
LsarOpenPolicySce(
1408 return STATUS_NOT_IMPLEMENTED
;
1413 NTSTATUS WINAPI
LsarAdtRegisterSecurityEventSource(
1417 return STATUS_NOT_IMPLEMENTED
;
1422 NTSTATUS WINAPI
LsarAdtUnregisterSecurityEventSource(
1426 return STATUS_NOT_IMPLEMENTED
;
1431 NTSTATUS WINAPI
LsarAdtReportSecurityEvent(
1435 return STATUS_NOT_IMPLEMENTED
;
1440 NTSTATUS WINAPI
CredrFindBestCredential(
1444 return STATUS_NOT_IMPLEMENTED
;
1449 NTSTATUS WINAPI
LsarSetAuditPolicy(
1453 return STATUS_NOT_IMPLEMENTED
;
1458 NTSTATUS WINAPI
LsarQueryAuditPolicy(
1462 return STATUS_NOT_IMPLEMENTED
;
1467 NTSTATUS WINAPI
LsarEnumerateAuditPolicy(
1471 return STATUS_NOT_IMPLEMENTED
;
1476 NTSTATUS WINAPI
LsarEnumerateAuditCategories(
1480 return STATUS_NOT_IMPLEMENTED
;
1485 NTSTATUS WINAPI
LsarEnumerateAuditSubCategories(
1489 return STATUS_NOT_IMPLEMENTED
;
1494 NTSTATUS WINAPI
LsarLookupAuditCategoryName(
1498 return STATUS_NOT_IMPLEMENTED
;
1503 NTSTATUS WINAPI
LsarLookupAuditSubCategoryName(
1507 return STATUS_NOT_IMPLEMENTED
;
1512 NTSTATUS WINAPI
LsarSetAuditSecurity(
1516 return STATUS_NOT_IMPLEMENTED
;
1521 NTSTATUS WINAPI
LsarQueryAuditSecurity(
1525 return STATUS_NOT_IMPLEMENTED
;
1530 NTSTATUS WINAPI
CredReadByTokenHandle(
1534 return STATUS_NOT_IMPLEMENTED
;
1539 NTSTATUS WINAPI
CredrRestoreCredentials(
1543 return STATUS_NOT_IMPLEMENTED
;
1548 NTSTATUS WINAPI
CredrBackupCredentials(
1552 return STATUS_NOT_IMPLEMENTED
;