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 PLSA_DB_OBJECT DbObject
;
73 NTSTATUS Status
= STATUS_SUCCESS
;
75 TRACE("0x%p\n", ObjectHandle
);
77 // RtlEnterCriticalSection(&PolicyHandleTableLock);
79 Status
= LsapValidateDbObject(*ObjectHandle
,
83 if (Status
== STATUS_SUCCESS
)
85 Status
= LsapCloseDbObject(DbObject
);
89 // RtlLeaveCriticalSection(&PolicyHandleTableLock);
96 NTSTATUS WINAPI
LsarDelete(
97 LSAPR_HANDLE ObjectHandle
)
100 return STATUS_NOT_SUPPORTED
;
105 NTSTATUS WINAPI
LsarEnumeratePrivileges(
106 LSAPR_HANDLE PolicyHandle
,
107 DWORD
*EnumerationContext
,
108 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer
,
109 DWORD PreferedMaximumLength
)
112 return STATUS_NOT_IMPLEMENTED
;
117 NTSTATUS WINAPI
LsarQuerySecurityObject(
118 LSAPR_HANDLE ObjectHandle
,
119 SECURITY_INFORMATION SecurityInformation
,
120 PLSAPR_SR_SECURITY_DESCRIPTOR
*SecurityDescriptor
)
123 return STATUS_NOT_IMPLEMENTED
;
128 NTSTATUS WINAPI
LsarSetSecurityObject(
129 LSAPR_HANDLE ObjectHandle
,
130 SECURITY_INFORMATION SecurityInformation
,
131 PLSAPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor
)
134 return STATUS_NOT_IMPLEMENTED
;
139 NTSTATUS WINAPI
LsarChangePassword(
141 PRPC_UNICODE_STRING String1
,
142 PRPC_UNICODE_STRING String2
,
143 PRPC_UNICODE_STRING String3
,
144 PRPC_UNICODE_STRING String4
,
145 PRPC_UNICODE_STRING String5
)
148 return STATUS_NOT_IMPLEMENTED
;
153 NTSTATUS WINAPI
LsarOpenPolicy(
155 PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes
,
156 ACCESS_MASK DesiredAccess
,
157 LSAPR_HANDLE
*PolicyHandle
)
159 PLSA_DB_OBJECT PolicyObject
;
162 TRACE("LsarOpenPolicy called!\n");
164 RtlEnterCriticalSection(&PolicyHandleTableLock
);
166 Status
= LsapOpenDbObject(NULL
,
172 RtlLeaveCriticalSection(&PolicyHandleTableLock
);
174 if (NT_SUCCESS(Status
))
175 *PolicyHandle
= (LSAPR_HANDLE
)PolicyObject
;
177 TRACE("LsarOpenPolicy done!\n");
184 NTSTATUS WINAPI
LsarQueryInformationPolicy(
185 LSAPR_HANDLE PolicyHandle
,
186 POLICY_INFORMATION_CLASS InformationClass
,
187 PLSAPR_POLICY_INFORMATION
*PolicyInformation
)
189 PLSA_DB_OBJECT DbObject
;
192 TRACE("LsarQueryInformationPolicy(%p,0x%08x,%p)\n",
193 PolicyHandle
, InformationClass
, PolicyInformation
);
195 if (PolicyInformation
)
197 TRACE("*PolicyInformation %p\n", *PolicyInformation
);
200 Status
= LsapValidateDbObject(PolicyHandle
,
204 if (!NT_SUCCESS(Status
))
207 switch (InformationClass
)
209 case PolicyAuditEventsInformation
: /* 2 */
210 Status
= LsarQueryAuditEvents(PolicyHandle
,
214 case PolicyPrimaryDomainInformation
: /* 3 */
215 Status
= LsarQueryPrimaryDomain(PolicyHandle
,
219 case PolicyAccountDomainInformation
: /* 5 */
220 Status
= LsarQueryAccountDomain(PolicyHandle
,
224 case PolicyDnsDomainInformation
: /* 12 (0xc) */
225 Status
= LsarQueryDnsDomain(PolicyHandle
,
229 case PolicyAuditLogInformation
:
230 case PolicyPdAccountInformation
:
231 case PolicyLsaServerRoleInformation
:
232 case PolicyReplicaSourceInformation
:
233 case PolicyDefaultQuotaInformation
:
234 case PolicyModificationInformation
:
235 case PolicyAuditFullSetInformation
:
236 case PolicyAuditFullQueryInformation
:
237 case PolicyEfsInformation
:
238 FIXME("category not implemented\n");
239 Status
= STATUS_UNSUCCESSFUL
;
248 NTSTATUS WINAPI
LsarSetInformationPolicy(
249 LSAPR_HANDLE PolicyHandle
,
250 POLICY_INFORMATION_CLASS InformationClass
,
251 PLSAPR_POLICY_INFORMATION PolicyInformation
)
253 PLSA_DB_OBJECT DbObject
;
256 TRACE("LsarSetInformationPolicy(%p,0x%08x,%p)\n",
257 PolicyHandle
, InformationClass
, PolicyInformation
);
259 if (PolicyInformation
)
261 TRACE("*PolicyInformation %p\n", *PolicyInformation
);
264 Status
= LsapValidateDbObject(PolicyHandle
,
268 if (!NT_SUCCESS(Status
))
271 switch (InformationClass
)
273 case PolicyAuditEventsInformation
:
274 Status
= STATUS_NOT_IMPLEMENTED
;
277 case PolicyPrimaryDomainInformation
:
278 Status
= LsarSetPrimaryDomain(PolicyHandle
,
279 (PLSAPR_POLICY_PRIMARY_DOM_INFO
)PolicyInformation
);
282 case PolicyAccountDomainInformation
:
283 Status
= LsarSetAccountDomain(PolicyHandle
,
284 (PLSAPR_POLICY_ACCOUNT_DOM_INFO
)PolicyInformation
);
287 case PolicyDnsDomainInformation
:
288 Status
= LsarSetDnsDomain(PolicyHandle
,
289 (PLSAPR_POLICY_DNS_DOMAIN_INFO
)PolicyInformation
);
292 case PolicyLsaServerRoleInformation
:
293 Status
= STATUS_NOT_IMPLEMENTED
;
297 Status
= STATUS_INVALID_PARAMETER
;
306 NTSTATUS WINAPI
LsarClearAuditLog(
307 LSAPR_HANDLE ObjectHandle
)
310 return STATUS_NOT_IMPLEMENTED
;
315 NTSTATUS WINAPI
LsarCreateAccount(
316 LSAPR_HANDLE PolicyHandle
,
318 ACCESS_MASK DesiredAccess
,
319 LSAPR_HANDLE
*AccountHandle
)
321 PLSA_DB_OBJECT PolicyObject
;
322 PLSA_DB_OBJECT AccountsObject
= NULL
;
323 PLSA_DB_OBJECT AccountObject
= NULL
;
324 LPWSTR SidString
= NULL
;
325 NTSTATUS Status
= STATUS_SUCCESS
;
327 /* Validate the PolicyHandle */
328 Status
= LsapValidateDbObject(PolicyHandle
,
330 POLICY_CREATE_ACCOUNT
,
332 if (!NT_SUCCESS(Status
))
334 ERR("LsapValidateDbObject returned 0x%08lx\n", Status
);
338 /* Open the Accounts object */
339 Status
= LsapOpenDbObject(PolicyObject
,
341 LsaDbContainerObject
,
344 if (!NT_SUCCESS(Status
))
346 ERR("LsapCreateDbObject (Accounts) failed (Status 0x%08lx)\n", Status
);
350 /* Create SID string */
351 if (!ConvertSidToStringSid((PSID
)AccountSid
,
354 ERR("ConvertSidToStringSid failed\n");
355 Status
= STATUS_INVALID_PARAMETER
;
359 /* Create the Account object */
360 Status
= LsapCreateDbObject(AccountsObject
,
365 if (!NT_SUCCESS(Status
))
367 ERR("LsapCreateDbObject (Account) failed (Status 0x%08lx)\n", Status
);
371 /* Set the Sid attribute */
372 Status
= LsapSetObjectAttribute(AccountObject
,
375 GetLengthSid(AccountSid
));
378 if (SidString
!= NULL
)
379 LocalFree(SidString
);
381 if (!NT_SUCCESS(Status
))
383 if (AccountObject
!= NULL
)
384 LsapCloseDbObject(AccountObject
);
388 *AccountHandle
= (LSAPR_HANDLE
)AccountObject
;
391 if (AccountsObject
!= NULL
)
392 LsapCloseDbObject(AccountsObject
);
394 return STATUS_SUCCESS
;
399 NTSTATUS WINAPI
LsarEnumerateAccounts(
400 LSAPR_HANDLE PolicyHandle
,
401 DWORD
*EnumerationContext
,
402 PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer
,
403 DWORD PreferedMaximumLength
)
406 return STATUS_NOT_IMPLEMENTED
;
411 NTSTATUS WINAPI
LsarCreateTrustedDomain(
412 LSAPR_HANDLE PolicyHandle
,
413 PLSAPR_TRUST_INFORMATION TrustedDomainInformation
,
414 ACCESS_MASK DesiredAccess
,
415 LSAPR_HANDLE
*TrustedDomainHandle
)
418 return STATUS_NOT_IMPLEMENTED
;
423 NTSTATUS WINAPI
LsarEnumerateTrustedDomains(
424 LSAPR_HANDLE PolicyHandle
,
425 DWORD
*EnumerationContext
,
426 PLSAPR_TRUSTED_ENUM_BUFFER EnumerationBuffer
,
427 DWORD PreferedMaximumLength
)
430 return STATUS_NOT_IMPLEMENTED
;
435 NTSTATUS WINAPI
LsarLookupNames(
436 LSAPR_HANDLE PolicyHandle
,
438 PRPC_UNICODE_STRING Names
,
439 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
440 PLSAPR_TRANSLATED_SIDS TranslatedSids
,
441 LSAP_LOOKUP_LEVEL LookupLevel
,
444 SID_IDENTIFIER_AUTHORITY IdentifierAuthority
= {SECURITY_NT_AUTHORITY
};
445 static const UNICODE_STRING DomainName
= RTL_CONSTANT_STRING(L
"DOMAIN");
446 PLSAPR_REFERENCED_DOMAIN_LIST OutputDomains
= NULL
;
447 PLSA_TRANSLATED_SID OutputSids
= NULL
;
448 ULONG OutputSidsLength
;
454 TRACE("LsarLookupNames(%p, %lu, %p, %p, %p, %d, %p)\n",
455 PolicyHandle
, Count
, Names
, ReferencedDomains
, TranslatedSids
,
456 LookupLevel
, MappedCount
);
458 TranslatedSids
->Entries
= Count
;
459 TranslatedSids
->Sids
= NULL
;
460 *ReferencedDomains
= NULL
;
462 OutputSidsLength
= Count
* sizeof(LSA_TRANSLATED_SID
);
463 OutputSids
= MIDL_user_allocate(OutputSidsLength
);
464 if (OutputSids
== NULL
)
466 return STATUS_INSUFFICIENT_RESOURCES
;
469 RtlZeroMemory(OutputSids
, OutputSidsLength
);
471 OutputDomains
= MIDL_user_allocate(sizeof(LSAPR_REFERENCED_DOMAIN_LIST
));
472 if (OutputDomains
== NULL
)
474 MIDL_user_free(OutputSids
);
475 return STATUS_INSUFFICIENT_RESOURCES
;
478 OutputDomains
->Entries
= Count
;
479 OutputDomains
->Domains
= MIDL_user_allocate(Count
* sizeof(LSA_TRUST_INFORMATION
));
480 if (OutputDomains
->Domains
== NULL
)
482 MIDL_user_free(OutputDomains
);
483 MIDL_user_free(OutputSids
);
484 return STATUS_INSUFFICIENT_RESOURCES
;
487 Status
= RtlAllocateAndInitializeSid(&IdentifierAuthority
,
489 SECURITY_BUILTIN_DOMAIN_RID
,
490 DOMAIN_ALIAS_RID_ADMINS
,
493 if (!NT_SUCCESS(Status
))
495 MIDL_user_free(OutputDomains
->Domains
);
496 MIDL_user_free(OutputDomains
);
497 MIDL_user_free(OutputSids
);
501 SidLength
= RtlLengthSid(Sid
);
503 for (i
= 0; i
< Count
; i
++)
505 OutputDomains
->Domains
[i
].Sid
= MIDL_user_allocate(SidLength
);
506 RtlCopyMemory(OutputDomains
->Domains
[i
].Sid
, Sid
, SidLength
);
508 OutputDomains
->Domains
[i
].Name
.Buffer
= MIDL_user_allocate(DomainName
.MaximumLength
);
509 OutputDomains
->Domains
[i
].Name
.Length
= DomainName
.Length
;
510 OutputDomains
->Domains
[i
].Name
.MaximumLength
= DomainName
.MaximumLength
;
511 RtlCopyMemory(OutputDomains
->Domains
[i
].Name
.Buffer
, DomainName
.Buffer
, DomainName
.MaximumLength
);
514 for (i
= 0; i
< Count
; i
++)
516 OutputSids
[i
].Use
= SidTypeWellKnownGroup
;
517 OutputSids
[i
].RelativeId
= DOMAIN_USER_RID_ADMIN
; //DOMAIN_ALIAS_RID_ADMINS;
518 OutputSids
[i
].DomainIndex
= i
;
521 *ReferencedDomains
= OutputDomains
;
523 *MappedCount
= Count
;
525 TranslatedSids
->Entries
= Count
;
526 TranslatedSids
->Sids
= OutputSids
;
528 return STATUS_SUCCESS
;
533 NTSTATUS WINAPI
LsarLookupSids(
534 LSAPR_HANDLE PolicyHandle
,
535 PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
536 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
537 PLSAPR_TRANSLATED_NAMES TranslatedNames
,
538 LSAP_LOOKUP_LEVEL LookupLevel
,
541 SID_IDENTIFIER_AUTHORITY IdentifierAuthority
= {SECURITY_NT_AUTHORITY
};
542 static const UNICODE_STRING DomainName
= RTL_CONSTANT_STRING(L
"DOMAIN");
543 PLSAPR_REFERENCED_DOMAIN_LIST OutputDomains
= NULL
;
544 PLSAPR_TRANSLATED_NAME OutputNames
= NULL
;
545 ULONG OutputNamesLength
;
551 TRACE("LsarLookupSids(%p, %p, %p, %p, %d, %p)\n",
552 PolicyHandle
, SidEnumBuffer
, ReferencedDomains
, TranslatedNames
,
553 LookupLevel
, MappedCount
);
555 TranslatedNames
->Entries
= SidEnumBuffer
->Entries
;
556 TranslatedNames
->Names
= NULL
;
557 *ReferencedDomains
= NULL
;
559 OutputNamesLength
= SidEnumBuffer
->Entries
* sizeof(LSA_TRANSLATED_NAME
);
560 OutputNames
= MIDL_user_allocate(OutputNamesLength
);
561 if (OutputNames
== NULL
)
563 return STATUS_INSUFFICIENT_RESOURCES
;
566 RtlZeroMemory(OutputNames
, OutputNamesLength
);
568 OutputDomains
= MIDL_user_allocate(sizeof(LSAPR_REFERENCED_DOMAIN_LIST
));
569 if (OutputDomains
== NULL
)
571 MIDL_user_free(OutputNames
);
572 return STATUS_INSUFFICIENT_RESOURCES
;
575 OutputDomains
->Entries
= SidEnumBuffer
->Entries
;
576 OutputDomains
->Domains
= MIDL_user_allocate(SidEnumBuffer
->Entries
* sizeof(LSA_TRUST_INFORMATION
));
577 if (OutputDomains
->Domains
== NULL
)
579 MIDL_user_free(OutputDomains
);
580 MIDL_user_free(OutputNames
);
581 return STATUS_INSUFFICIENT_RESOURCES
;
584 Status
= RtlAllocateAndInitializeSid(&IdentifierAuthority
,
586 SECURITY_BUILTIN_DOMAIN_RID
,
587 DOMAIN_ALIAS_RID_ADMINS
,
590 if (!NT_SUCCESS(Status
))
592 MIDL_user_free(OutputDomains
->Domains
);
593 MIDL_user_free(OutputDomains
);
594 MIDL_user_free(OutputNames
);
598 SidLength
= RtlLengthSid(Sid
);
600 for (i
= 0; i
< SidEnumBuffer
->Entries
; i
++)
602 OutputDomains
->Domains
[i
].Sid
= MIDL_user_allocate(SidLength
);
603 RtlCopyMemory(OutputDomains
->Domains
[i
].Sid
, Sid
, SidLength
);
605 OutputDomains
->Domains
[i
].Name
.Buffer
= MIDL_user_allocate(DomainName
.MaximumLength
);
606 OutputDomains
->Domains
[i
].Name
.Length
= DomainName
.Length
;
607 OutputDomains
->Domains
[i
].Name
.MaximumLength
= DomainName
.MaximumLength
;
608 RtlCopyMemory(OutputDomains
->Domains
[i
].Name
.Buffer
, DomainName
.Buffer
, DomainName
.MaximumLength
);
611 Status
= LsapLookupSids(SidEnumBuffer
,
614 *ReferencedDomains
= OutputDomains
;
616 *MappedCount
= SidEnumBuffer
->Entries
;
618 TranslatedNames
->Entries
= SidEnumBuffer
->Entries
;
619 TranslatedNames
->Names
= OutputNames
;
626 NTSTATUS WINAPI
LsarCreateSecret(
627 LSAPR_HANDLE PolicyHandle
,
628 PRPC_UNICODE_STRING SecretName
,
629 ACCESS_MASK DesiredAccess
,
630 LSAPR_HANDLE
*SecretHandle
)
633 return STATUS_NOT_IMPLEMENTED
;
638 NTSTATUS WINAPI
LsarOpenAccount(
639 LSAPR_HANDLE PolicyHandle
,
641 ACCESS_MASK DesiredAccess
,
642 LSAPR_HANDLE
*AccountHandle
)
644 PLSA_DB_OBJECT PolicyObject
;
645 PLSA_DB_OBJECT AccountsObject
= NULL
;
646 PLSA_DB_OBJECT AccountObject
= NULL
;
647 LPWSTR SidString
= NULL
;
648 NTSTATUS Status
= STATUS_SUCCESS
;
650 /* Validate the PolicyHandle */
651 Status
= LsapValidateDbObject(PolicyHandle
,
653 POLICY_CREATE_ACCOUNT
,
655 if (!NT_SUCCESS(Status
))
657 ERR("LsapValidateDbObject returned 0x%08lx\n", Status
);
661 /* Open the Accounts object */
662 Status
= LsapOpenDbObject(PolicyObject
,
664 LsaDbContainerObject
,
667 if (!NT_SUCCESS(Status
))
669 ERR("LsapCreateDbObject (Accounts) failed (Status 0x%08lx)\n", Status
);
673 /* Create SID string */
674 if (!ConvertSidToStringSid((PSID
)AccountSid
,
677 ERR("ConvertSidToStringSid failed\n");
678 Status
= STATUS_INVALID_PARAMETER
;
682 /* Create the Account object */
683 Status
= LsapOpenDbObject(AccountsObject
,
688 if (!NT_SUCCESS(Status
))
690 ERR("LsapOpenDbObject (Account) failed (Status 0x%08lx)\n", Status
);
694 /* Set the Sid attribute */
695 Status
= LsapSetObjectAttribute(AccountObject
,
698 GetLengthSid(AccountSid
));
701 if (SidString
!= NULL
)
702 LocalFree(SidString
);
704 if (!NT_SUCCESS(Status
))
706 if (AccountObject
!= NULL
)
707 LsapCloseDbObject(AccountObject
);
711 *AccountHandle
= (LSAPR_HANDLE
)AccountObject
;
714 if (AccountsObject
!= NULL
)
715 LsapCloseDbObject(AccountsObject
);
717 return STATUS_SUCCESS
;
722 NTSTATUS WINAPI
LsarEnumeratePrivilegesAccount(
723 LSAPR_HANDLE AccountHandle
,
724 PLSAPR_PRIVILEGE_SET
*Privileges
)
727 return STATUS_NOT_IMPLEMENTED
;
732 NTSTATUS WINAPI
LsarAddPrivilegesToAccount(
733 LSAPR_HANDLE AccountHandle
,
734 PLSAPR_PRIVILEGE_SET Privileges
)
737 return STATUS_NOT_IMPLEMENTED
;
742 NTSTATUS WINAPI
LsarRemovePrivilegesFromAccount(
743 LSAPR_HANDLE AccountHandle
,
745 PLSAPR_PRIVILEGE_SET Privileges
)
748 return STATUS_NOT_IMPLEMENTED
;
753 NTSTATUS WINAPI
LsarGetQuotasForAccount(
754 LSAPR_HANDLE AccountHandle
,
755 PQUOTA_LIMITS QuotaLimits
)
758 return STATUS_NOT_IMPLEMENTED
;
763 NTSTATUS WINAPI
LsarSetQuotasForAccount(
764 LSAPR_HANDLE AccountHandle
,
765 PQUOTA_LIMITS QuotaLimits
)
768 return STATUS_NOT_IMPLEMENTED
;
773 NTSTATUS WINAPI
LsarGetSystemAccessAccount(
774 LSAPR_HANDLE AccountHandle
,
775 ACCESS_MASK
*SystemAccess
)
778 return STATUS_NOT_IMPLEMENTED
;
783 NTSTATUS WINAPI
LsarSetSystemAccessAccount(
784 LSAPR_HANDLE AccountHandle
,
785 ACCESS_MASK SystemAccess
)
788 return STATUS_NOT_IMPLEMENTED
;
793 NTSTATUS WINAPI
LsarOpenTrustedDomain(
794 LSAPR_HANDLE PolicyHandle
,
795 PRPC_SID TrustedDomainSid
,
796 ACCESS_MASK DesiredAccess
,
797 LSAPR_HANDLE
*TrustedDomainHandle
)
800 return STATUS_NOT_IMPLEMENTED
;
805 NTSTATUS WINAPI
LsarQueryInfoTrustedDomain(
806 LSAPR_HANDLE TrustedDomainHandle
,
807 TRUSTED_INFORMATION_CLASS InformationClass
,
808 PLSAPR_TRUSTED_DOMAIN_INFO
*TrustedDomainInformation
)
811 return STATUS_NOT_IMPLEMENTED
;
816 NTSTATUS WINAPI
LsarSetInformationTrustedDomain(
817 LSAPR_HANDLE TrustedDomainHandle
,
818 TRUSTED_INFORMATION_CLASS InformationClass
,
819 PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation
)
822 return STATUS_NOT_IMPLEMENTED
;
827 NTSTATUS WINAPI
LsarOpenSecret(
828 LSAPR_HANDLE PolicyHandle
,
829 PRPC_UNICODE_STRING SecretName
,
830 ACCESS_MASK DesiredAccess
,
831 LSAPR_HANDLE
*SecretHandle
)
834 return STATUS_NOT_IMPLEMENTED
;
839 NTSTATUS WINAPI
LsarSetSecret(
840 LSAPR_HANDLE
*SecretHandle
,
841 PLSAPR_CR_CIPHER_VALUE EncryptedCurrentValue
,
842 PLSAPR_CR_CIPHER_VALUE EncryptedOldValue
)
845 return STATUS_NOT_IMPLEMENTED
;
850 NTSTATUS WINAPI
LsarQuerySecret(
851 LSAPR_HANDLE SecretHandle
,
852 PLSAPR_CR_CIPHER_VALUE
*EncryptedCurrentValue
,
853 PLARGE_INTEGER CurrentValueSetTime
,
854 PLSAPR_CR_CIPHER_VALUE
*EncryptedOldValue
,
855 PLARGE_INTEGER OldValueSetTime
)
858 return STATUS_NOT_IMPLEMENTED
;
863 NTSTATUS WINAPI
LsarLookupPrivilegeValue(
864 LSAPR_HANDLE PolicyHandle
,
865 PRPC_UNICODE_STRING Name
,
870 TRACE("LsarLookupPrivilegeValue(%p, %wZ, %p)\n",
871 PolicyHandle
, Name
, Value
);
873 Status
= LsapValidateDbObject(PolicyHandle
,
877 if (!NT_SUCCESS(Status
))
879 ERR("Invalid handle (Status %lx)\n", Status
);
883 TRACE("Privilege: %wZ\n", Name
);
885 Status
= LsarpLookupPrivilegeValue((PUNICODE_STRING
)Name
,
893 NTSTATUS WINAPI
LsarLookupPrivilegeName(
894 LSAPR_HANDLE PolicyHandle
,
896 PRPC_UNICODE_STRING
*Name
)
900 TRACE("LsarLookupPrivilegeName(%p, %p, %p)\n",
901 PolicyHandle
, Value
, Name
);
903 Status
= LsapValidateDbObject(PolicyHandle
,
907 if (!NT_SUCCESS(Status
))
909 ERR("Invalid handle\n");
913 Status
= LsarpLookupPrivilegeName(Value
, (PUNICODE_STRING
*)Name
);
920 NTSTATUS WINAPI
LsarLookupPrivilegeDisplayName(
921 LSAPR_HANDLE PolicyHandle
,
922 PRPC_UNICODE_STRING Name
,
923 USHORT ClientLanguage
,
924 USHORT ClientSystemDefaultLanguage
,
925 PRPC_UNICODE_STRING
*DisplayName
,
926 USHORT
*LanguageReturned
)
929 return STATUS_NOT_IMPLEMENTED
;
934 NTSTATUS WINAPI
LsarDeleteObject(
935 LSAPR_HANDLE
*ObjectHandle
)
938 return STATUS_NOT_IMPLEMENTED
;
943 NTSTATUS WINAPI
LsarEnumerateAccountsWithUserRight(
944 LSAPR_HANDLE PolicyHandle
,
945 PRPC_UNICODE_STRING UserRight
,
946 PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer
)
949 return STATUS_NOT_IMPLEMENTED
;
954 NTSTATUS WINAPI
LsarEnmuerateAccountRights(
955 LSAPR_HANDLE PolicyHandle
,
957 PLSAPR_USER_RIGHT_SET UserRights
)
959 PLSA_DB_OBJECT PolicyObject
;
962 FIXME("(%p,%p,%p) stub\n", PolicyHandle
, AccountSid
, UserRights
);
964 Status
= LsapValidateDbObject(PolicyHandle
,
968 if (!NT_SUCCESS(Status
))
971 UserRights
->Entries
= 0;
972 UserRights
->UserRights
= NULL
;
973 return STATUS_OBJECT_NAME_NOT_FOUND
;
978 NTSTATUS WINAPI
LsarAddAccountRights(
979 LSAPR_HANDLE PolicyHandle
,
981 PLSAPR_USER_RIGHT_SET UserRights
)
984 return STATUS_NOT_IMPLEMENTED
;
989 NTSTATUS WINAPI
LsarRemoveAccountRights(
990 LSAPR_HANDLE PolicyHandle
,
993 PLSAPR_USER_RIGHT_SET UserRights
)
996 return STATUS_NOT_IMPLEMENTED
;
1001 NTSTATUS WINAPI
LsarQueryTrustedDomainInfo(
1002 LSAPR_HANDLE PolicyHandle
,
1003 PRPC_SID TrustedDomainSid
,
1004 TRUSTED_INFORMATION_CLASS InformationClass
,
1005 PLSAPR_TRUSTED_DOMAIN_INFO
*TrustedDomainInformation
)
1008 return STATUS_NOT_IMPLEMENTED
;
1013 NTSTATUS WINAPI
LsarSetTrustedDomainInfo(
1014 LSAPR_HANDLE PolicyHandle
,
1015 PRPC_SID TrustedDomainSid
,
1016 TRUSTED_INFORMATION_CLASS InformationClass
,
1017 PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation
)
1020 return STATUS_NOT_IMPLEMENTED
;
1025 NTSTATUS WINAPI
LsarDeleteTrustedDomain(
1026 LSAPR_HANDLE PolicyHandle
,
1027 PRPC_SID TrustedDomainSid
)
1030 return STATUS_NOT_IMPLEMENTED
;
1035 NTSTATUS WINAPI
LsarStorePrivateData(
1036 LSAPR_HANDLE PolicyHandle
,
1037 PRPC_UNICODE_STRING KeyName
,
1038 PLSAPR_CR_CIPHER_VALUE EncryptedData
)
1041 return STATUS_NOT_IMPLEMENTED
;
1046 NTSTATUS WINAPI
LsarRetrievePrivateData(
1047 LSAPR_HANDLE PolicyHandle
,
1048 PRPC_UNICODE_STRING KeyName
,
1049 PLSAPR_CR_CIPHER_VALUE
*EncryptedData
)
1052 return STATUS_NOT_IMPLEMENTED
;
1057 NTSTATUS WINAPI
LsarOpenPolicy2(
1059 PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes
,
1060 ACCESS_MASK DesiredAccess
,
1061 LSAPR_HANDLE
*PolicyHandle
)
1064 return STATUS_NOT_IMPLEMENTED
;
1069 NTSTATUS WINAPI
LsarGetUserName(
1071 PRPC_UNICODE_STRING
*UserName
,
1072 PRPC_UNICODE_STRING
*DomainName
)
1075 return STATUS_NOT_IMPLEMENTED
;
1080 NTSTATUS WINAPI
LsarQueryInformationPolicy2(
1081 LSAPR_HANDLE PolicyHandle
,
1082 POLICY_INFORMATION_CLASS InformationClass
,
1083 unsigned long *PolicyInformation
)
1086 return STATUS_NOT_IMPLEMENTED
;
1091 NTSTATUS WINAPI
LsarSetInformationPolicy2(
1092 LSAPR_HANDLE PolicyHandle
,
1093 POLICY_INFORMATION_CLASS InformationClass
,
1094 unsigned long PolicyInformation
)
1097 return STATUS_NOT_IMPLEMENTED
;
1102 NTSTATUS WINAPI
LsarQueryTrustedDomainInfoByName(
1103 LSAPR_HANDLE PolicyHandle
,
1104 PRPC_UNICODE_STRING TrustedDomainName
,
1105 POLICY_INFORMATION_CLASS InformationClass
,
1106 unsigned long *PolicyInformation
)
1109 return STATUS_NOT_IMPLEMENTED
;
1114 NTSTATUS WINAPI
LsarSetTrustedDomainInfoByName(
1115 LSAPR_HANDLE PolicyHandle
,
1116 PRPC_UNICODE_STRING TrustedDomainName
,
1117 POLICY_INFORMATION_CLASS InformationClass
,
1118 unsigned long PolicyInformation
)
1121 return STATUS_NOT_IMPLEMENTED
;
1126 NTSTATUS WINAPI
LsarEnumerateTrustedDomainsEx(
1127 LSAPR_HANDLE PolicyHandle
,
1128 DWORD
*EnumerationContext
,
1129 PLSAPR_TRUSTED_ENUM_BUFFER_EX EnumerationBuffer
,
1130 DWORD PreferedMaximumLength
)
1133 return STATUS_NOT_IMPLEMENTED
;
1138 NTSTATUS WINAPI
LsarCreateTrustedDomainEx(
1139 LSAPR_HANDLE PolicyHandle
,
1140 PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation
,
1141 PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION AuthentificationInformation
,
1142 ACCESS_MASK DesiredAccess
,
1143 LSAPR_HANDLE
*TrustedDomainHandle
)
1146 return STATUS_NOT_IMPLEMENTED
;
1151 NTSTATUS WINAPI
LsarSetPolicyReplicationHandle(
1152 PLSAPR_HANDLE PolicyHandle
)
1155 return STATUS_NOT_IMPLEMENTED
;
1160 NTSTATUS WINAPI
LsarQueryDomainInformationPolicy(
1161 LSAPR_HANDLE PolicyHandle
,
1162 POLICY_INFORMATION_CLASS InformationClass
,
1163 unsigned long *PolicyInformation
)
1166 return STATUS_NOT_IMPLEMENTED
;
1171 NTSTATUS WINAPI
LsarSetDomainInformationPolicy(
1172 LSAPR_HANDLE PolicyHandle
,
1173 POLICY_INFORMATION_CLASS InformationClass
,
1174 unsigned long PolicyInformation
)
1177 return STATUS_NOT_IMPLEMENTED
;
1182 NTSTATUS WINAPI
LsarOpenTrustedDomainByName(
1183 LSAPR_HANDLE PolicyHandle
,
1184 PRPC_UNICODE_STRING TrustedDomainName
,
1185 ACCESS_MASK DesiredAccess
,
1186 LSAPR_HANDLE
*TrustedDomainHandle
)
1189 return STATUS_NOT_IMPLEMENTED
;
1194 NTSTATUS WINAPI
LsarTestCall(
1198 return STATUS_NOT_IMPLEMENTED
;
1203 NTSTATUS WINAPI
LsarLookupSids2(
1204 LSAPR_HANDLE PolicyHandle
,
1205 PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
1206 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1207 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
1208 LSAP_LOOKUP_LEVEL LookupLevel
,
1210 DWORD LookupOptions
,
1211 DWORD ClientRevision
)
1214 return STATUS_NOT_IMPLEMENTED
;
1219 NTSTATUS WINAPI
LsarLookupNames2(
1220 LSAPR_HANDLE PolicyHandle
,
1222 PRPC_UNICODE_STRING Names
,
1223 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1224 PLSAPR_TRANSLATED_SIDS_EX TranslatedSids
,
1225 LSAP_LOOKUP_LEVEL LookupLevel
,
1227 DWORD LookupOptions
,
1228 DWORD ClientRevision
)
1231 return STATUS_NOT_IMPLEMENTED
;
1236 NTSTATUS WINAPI
LsarCreateTrustedDomainEx2(
1237 LSAPR_HANDLE PolicyHandle
,
1238 PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation
,
1239 PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL AuthentificationInformation
,
1240 ACCESS_MASK DesiredAccess
,
1241 LSAPR_HANDLE
*TrustedDomainHandle
)
1244 return STATUS_NOT_IMPLEMENTED
;
1249 NTSTATUS WINAPI
CredrWrite(
1253 return STATUS_NOT_IMPLEMENTED
;
1258 NTSTATUS WINAPI
CredrRead(
1262 return STATUS_NOT_IMPLEMENTED
;
1267 NTSTATUS WINAPI
CredrEnumerate(
1271 return STATUS_NOT_IMPLEMENTED
;
1276 NTSTATUS WINAPI
CredrWriteDomainCredentials(
1280 return STATUS_NOT_IMPLEMENTED
;
1285 NTSTATUS WINAPI
CredrReadDomainCredentials(
1289 return STATUS_NOT_IMPLEMENTED
;
1294 NTSTATUS WINAPI
CredrDelete(
1298 return STATUS_NOT_IMPLEMENTED
;
1303 NTSTATUS WINAPI
CredrGetTargetInfo(
1307 return STATUS_NOT_IMPLEMENTED
;
1312 NTSTATUS WINAPI
CredrProfileLoaded(
1316 return STATUS_NOT_IMPLEMENTED
;
1321 NTSTATUS WINAPI
LsarLookupNames3(
1322 LSAPR_HANDLE PolicyHandle
,
1324 PRPC_UNICODE_STRING Names
,
1325 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1326 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
1327 LSAP_LOOKUP_LEVEL LookupLevel
,
1329 DWORD LookupOptions
,
1330 DWORD ClientRevision
)
1332 SID_IDENTIFIER_AUTHORITY IdentifierAuthority
= {SECURITY_NT_AUTHORITY
};
1333 static const UNICODE_STRING DomainName
= RTL_CONSTANT_STRING(L
"DOMAIN");
1334 PLSAPR_REFERENCED_DOMAIN_LIST DomainsBuffer
= NULL
;
1335 PLSAPR_TRANSLATED_SID_EX2 SidsBuffer
= NULL
;
1336 ULONG SidsBufferLength
;
1337 ULONG DomainSidLength
;
1338 ULONG AccountSidLength
;
1344 TRACE("LsarLookupNames3(%p, %lu, %p, %p, %p, %d, %p, %lu, %lu)\n",
1345 PolicyHandle
, Count
, Names
, ReferencedDomains
, TranslatedSids
,
1346 LookupLevel
, MappedCount
, LookupOptions
, ClientRevision
);
1349 return STATUS_NONE_MAPPED
;
1351 TranslatedSids
->Entries
= Count
;
1352 TranslatedSids
->Sids
= NULL
;
1353 *ReferencedDomains
= NULL
;
1355 SidsBufferLength
= Count
* sizeof(LSAPR_TRANSLATED_SID_EX2
);
1356 SidsBuffer
= MIDL_user_allocate(SidsBufferLength
);
1357 if (SidsBuffer
== NULL
)
1358 return STATUS_INSUFFICIENT_RESOURCES
;
1360 for (i
= 0; i
< Count
; i
++)
1362 SidsBuffer
[i
].Use
= SidTypeUser
;
1363 SidsBuffer
[i
].Sid
= NULL
;
1364 SidsBuffer
[i
].DomainIndex
= -1;
1365 SidsBuffer
[i
].Flags
= 0;
1368 DomainsBuffer
= MIDL_user_allocate(sizeof(LSAPR_REFERENCED_DOMAIN_LIST
));
1369 if (DomainsBuffer
== NULL
)
1371 MIDL_user_free(SidsBuffer
);
1372 return STATUS_INSUFFICIENT_RESOURCES
;
1375 DomainsBuffer
->Entries
= Count
;
1376 DomainsBuffer
->Domains
= MIDL_user_allocate(Count
* sizeof(LSA_TRUST_INFORMATION
));
1377 if (DomainsBuffer
->Domains
== NULL
)
1379 MIDL_user_free(DomainsBuffer
);
1380 MIDL_user_free(SidsBuffer
);
1381 return STATUS_INSUFFICIENT_RESOURCES
;
1384 Status
= RtlAllocateAndInitializeSid(&IdentifierAuthority
,
1386 SECURITY_BUILTIN_DOMAIN_RID
,
1387 DOMAIN_ALIAS_RID_ADMINS
,
1390 if (!NT_SUCCESS(Status
))
1392 MIDL_user_free(DomainsBuffer
->Domains
);
1393 MIDL_user_free(DomainsBuffer
);
1394 MIDL_user_free(SidsBuffer
);
1398 DomainSidLength
= RtlLengthSid(DomainSid
);
1400 for (i
= 0; i
< Count
; i
++)
1402 DomainsBuffer
->Domains
[i
].Sid
= MIDL_user_allocate(DomainSidLength
);
1403 RtlCopyMemory(DomainsBuffer
->Domains
[i
].Sid
,
1407 DomainsBuffer
->Domains
[i
].Name
.Buffer
= MIDL_user_allocate(DomainName
.MaximumLength
);
1408 DomainsBuffer
->Domains
[i
].Name
.Length
= DomainName
.Length
;
1409 DomainsBuffer
->Domains
[i
].Name
.MaximumLength
= DomainName
.MaximumLength
;
1410 RtlCopyMemory(DomainsBuffer
->Domains
[i
].Name
.Buffer
,
1412 DomainName
.MaximumLength
);
1415 Status
= RtlAllocateAndInitializeSid(&IdentifierAuthority
,
1417 SECURITY_BUILTIN_DOMAIN_RID
,
1418 DOMAIN_ALIAS_RID_ADMINS
,
1419 DOMAIN_USER_RID_ADMIN
,
1422 if (!NT_SUCCESS(Status
))
1424 MIDL_user_free(DomainsBuffer
->Domains
);
1425 MIDL_user_free(DomainsBuffer
);
1426 MIDL_user_free(SidsBuffer
);
1430 AccountSidLength
= RtlLengthSid(AccountSid
);
1432 for (i
= 0; i
< Count
; i
++)
1434 SidsBuffer
[i
].Use
= SidTypeWellKnownGroup
;
1435 SidsBuffer
[i
].Sid
= MIDL_user_allocate(AccountSidLength
);
1437 RtlCopyMemory(SidsBuffer
[i
].Sid
,
1441 SidsBuffer
[i
].DomainIndex
= i
;
1442 SidsBuffer
[i
].Flags
= 0;
1445 *ReferencedDomains
= DomainsBuffer
;
1446 *MappedCount
= Count
;
1448 TranslatedSids
->Entries
= Count
;
1449 TranslatedSids
->Sids
= SidsBuffer
;
1451 return STATUS_SUCCESS
;
1456 NTSTATUS WINAPI
CredrGetSessionTypes(
1460 return STATUS_NOT_IMPLEMENTED
;
1465 NTSTATUS WINAPI
LsarRegisterAuditEvent(
1469 return STATUS_NOT_IMPLEMENTED
;
1474 NTSTATUS WINAPI
LsarGenAuditEvent(
1478 return STATUS_NOT_IMPLEMENTED
;
1483 NTSTATUS WINAPI
LsarUnregisterAuditEvent(
1487 return STATUS_NOT_IMPLEMENTED
;
1492 NTSTATUS WINAPI
LsarQueryForestTrustInformation(
1493 LSAPR_HANDLE PolicyHandle
,
1494 PLSA_UNICODE_STRING TrustedDomainName
,
1495 LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType
,
1496 PLSA_FOREST_TRUST_INFORMATION
*ForestTrustInfo
)
1499 return STATUS_NOT_IMPLEMENTED
;
1504 NTSTATUS WINAPI
LsarSetForestTrustInformation(
1505 LSAPR_HANDLE PolicyHandle
,
1506 PLSA_UNICODE_STRING TrustedDomainName
,
1507 LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType
,
1508 PLSA_FOREST_TRUST_INFORMATION ForestTrustInfo
,
1510 PLSA_FOREST_TRUST_COLLISION_INFORMATION
*CollisionInfo
)
1513 return STATUS_NOT_IMPLEMENTED
;
1518 NTSTATUS WINAPI
CredrRename(
1522 return STATUS_NOT_IMPLEMENTED
;
1527 NTSTATUS WINAPI
LsarLookupSids3(
1528 LSAPR_HANDLE PolicyHandle
,
1529 PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
1530 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1531 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
1532 LSAP_LOOKUP_LEVEL LookupLevel
,
1534 DWORD LookupOptions
,
1535 DWORD ClientRevision
)
1538 return STATUS_NOT_IMPLEMENTED
;
1543 NTSTATUS WINAPI
LsarLookupNames4(
1546 PRPC_UNICODE_STRING Names
,
1547 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1548 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
1549 LSAP_LOOKUP_LEVEL LookupLevel
,
1551 DWORD LookupOptions
,
1552 DWORD ClientRevision
)
1555 return STATUS_NOT_IMPLEMENTED
;
1560 NTSTATUS WINAPI
LsarOpenPolicySce(
1564 return STATUS_NOT_IMPLEMENTED
;
1569 NTSTATUS WINAPI
LsarAdtRegisterSecurityEventSource(
1573 return STATUS_NOT_IMPLEMENTED
;
1578 NTSTATUS WINAPI
LsarAdtUnregisterSecurityEventSource(
1582 return STATUS_NOT_IMPLEMENTED
;
1587 NTSTATUS WINAPI
LsarAdtReportSecurityEvent(
1591 return STATUS_NOT_IMPLEMENTED
;
1596 NTSTATUS WINAPI
CredrFindBestCredential(
1600 return STATUS_NOT_IMPLEMENTED
;
1605 NTSTATUS WINAPI
LsarSetAuditPolicy(
1609 return STATUS_NOT_IMPLEMENTED
;
1614 NTSTATUS WINAPI
LsarQueryAuditPolicy(
1618 return STATUS_NOT_IMPLEMENTED
;
1623 NTSTATUS WINAPI
LsarEnumerateAuditPolicy(
1627 return STATUS_NOT_IMPLEMENTED
;
1632 NTSTATUS WINAPI
LsarEnumerateAuditCategories(
1636 return STATUS_NOT_IMPLEMENTED
;
1641 NTSTATUS WINAPI
LsarEnumerateAuditSubCategories(
1645 return STATUS_NOT_IMPLEMENTED
;
1650 NTSTATUS WINAPI
LsarLookupAuditCategoryName(
1654 return STATUS_NOT_IMPLEMENTED
;
1659 NTSTATUS WINAPI
LsarLookupAuditSubCategoryName(
1663 return STATUS_NOT_IMPLEMENTED
;
1668 NTSTATUS WINAPI
LsarSetAuditSecurity(
1672 return STATUS_NOT_IMPLEMENTED
;
1677 NTSTATUS WINAPI
LsarQueryAuditSecurity(
1681 return STATUS_NOT_IMPLEMENTED
;
1686 NTSTATUS WINAPI
CredReadByTokenHandle(
1690 return STATUS_NOT_IMPLEMENTED
;
1695 NTSTATUS WINAPI
CredrRestoreCredentials(
1699 return STATUS_NOT_IMPLEMENTED
;
1704 NTSTATUS WINAPI
CredrBackupCredentials(
1708 return STATUS_NOT_IMPLEMENTED
;