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
)
313 LSAPR_HANDLE AccountsHandle
;
314 LSAPR_HANDLE Account
;
318 /* Validate the PolicyHandle */
319 Status
= LsapValidateDbObject(PolicyHandle
,
321 POLICY_CREATE_ACCOUNT
);
322 if (!NT_SUCCESS(Status
))
324 ERR("LsapValidateDbObject returned 0x%08lx\n", Status
);
328 /* Open the Accounts object */
329 AccountsHandle
= LsapCreateDbObject(PolicyHandle
,
332 LsaDbContainerObject
,
334 if (AccountsHandle
== NULL
)
336 ERR("LsapCreateDbObject (Accounts) failed\n");
337 return STATUS_UNSUCCESSFUL
;
340 /* Create SID string */
341 if (!ConvertSidToStringSid((PSID
)AccountSid
,
344 ERR("ConvertSidToStringSid failed\n");
345 return STATUS_UNSUCCESSFUL
;
348 /* Create the Account object */
349 Account
= LsapCreateDbObject(AccountsHandle
,
356 /* Set the Sid attribute */
357 Status
= LsapSetObjectAttribute((PLSA_DB_OBJECT
)Account
,
360 GetLengthSid(AccountSid
));
361 if (NT_SUCCESS(Status
))
363 *AccountHandle
= Account
;
367 LocalFree(SidString
);
369 LsapCloseDbObject(AccountsHandle
);
371 return STATUS_SUCCESS
;
376 NTSTATUS WINAPI
LsarEnumerateAccounts(
377 LSAPR_HANDLE PolicyHandle
,
378 DWORD
*EnumerationContext
,
379 PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer
,
380 DWORD PreferedMaximumLength
)
383 return STATUS_NOT_IMPLEMENTED
;
388 NTSTATUS WINAPI
LsarCreateTrustedDomain(
389 LSAPR_HANDLE PolicyHandle
,
390 PLSAPR_TRUST_INFORMATION TrustedDomainInformation
,
391 ACCESS_MASK DesiredAccess
,
392 LSAPR_HANDLE
*TrustedDomainHandle
)
395 return STATUS_NOT_IMPLEMENTED
;
400 NTSTATUS WINAPI
LsarEnumerateTrustedDomains(
401 LSAPR_HANDLE PolicyHandle
,
402 DWORD
*EnumerationContext
,
403 PLSAPR_TRUSTED_ENUM_BUFFER EnumerationBuffer
,
404 DWORD PreferedMaximumLength
)
407 return STATUS_NOT_IMPLEMENTED
;
412 NTSTATUS WINAPI
LsarLookupNames(
413 LSAPR_HANDLE PolicyHandle
,
415 PRPC_UNICODE_STRING Names
,
416 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
417 PLSAPR_TRANSLATED_SIDS TranslatedSids
,
418 LSAP_LOOKUP_LEVEL LookupLevel
,
421 SID_IDENTIFIER_AUTHORITY IdentifierAuthority
= {SECURITY_NT_AUTHORITY
};
422 static const UNICODE_STRING DomainName
= RTL_CONSTANT_STRING(L
"DOMAIN");
423 PLSAPR_REFERENCED_DOMAIN_LIST OutputDomains
= NULL
;
424 PLSA_TRANSLATED_SID OutputSids
= NULL
;
425 ULONG OutputSidsLength
;
431 TRACE("LsarLookupNames(%p, %lu, %p, %p, %p, %d, %p)\n",
432 PolicyHandle
, Count
, Names
, ReferencedDomains
, TranslatedSids
,
433 LookupLevel
, MappedCount
);
435 TranslatedSids
->Entries
= Count
;
436 TranslatedSids
->Sids
= NULL
;
437 *ReferencedDomains
= NULL
;
439 OutputSidsLength
= Count
* sizeof(LSA_TRANSLATED_SID
);
440 OutputSids
= MIDL_user_allocate(OutputSidsLength
);
441 if (OutputSids
== NULL
)
443 return STATUS_INSUFFICIENT_RESOURCES
;
446 RtlZeroMemory(OutputSids
, OutputSidsLength
);
448 OutputDomains
= MIDL_user_allocate(sizeof(LSAPR_REFERENCED_DOMAIN_LIST
));
449 if (OutputDomains
== NULL
)
451 MIDL_user_free(OutputSids
);
452 return STATUS_INSUFFICIENT_RESOURCES
;
455 OutputDomains
->Entries
= Count
;
456 OutputDomains
->Domains
= MIDL_user_allocate(Count
* sizeof(LSA_TRUST_INFORMATION
));
457 if (OutputDomains
->Domains
== NULL
)
459 MIDL_user_free(OutputDomains
);
460 MIDL_user_free(OutputSids
);
461 return STATUS_INSUFFICIENT_RESOURCES
;
464 Status
= RtlAllocateAndInitializeSid(&IdentifierAuthority
,
466 SECURITY_BUILTIN_DOMAIN_RID
,
467 DOMAIN_ALIAS_RID_ADMINS
,
470 if (!NT_SUCCESS(Status
))
472 MIDL_user_free(OutputDomains
->Domains
);
473 MIDL_user_free(OutputDomains
);
474 MIDL_user_free(OutputSids
);
478 SidLength
= RtlLengthSid(Sid
);
480 for (i
= 0; i
< Count
; i
++)
482 OutputDomains
->Domains
[i
].Sid
= MIDL_user_allocate(SidLength
);
483 RtlCopyMemory(OutputDomains
->Domains
[i
].Sid
, Sid
, SidLength
);
485 OutputDomains
->Domains
[i
].Name
.Buffer
= MIDL_user_allocate(DomainName
.MaximumLength
);
486 OutputDomains
->Domains
[i
].Name
.Length
= DomainName
.Length
;
487 OutputDomains
->Domains
[i
].Name
.MaximumLength
= DomainName
.MaximumLength
;
488 RtlCopyMemory(OutputDomains
->Domains
[i
].Name
.Buffer
, DomainName
.Buffer
, DomainName
.MaximumLength
);
491 for (i
= 0; i
< Count
; i
++)
493 OutputSids
[i
].Use
= SidTypeWellKnownGroup
;
494 OutputSids
[i
].RelativeId
= DOMAIN_USER_RID_ADMIN
; //DOMAIN_ALIAS_RID_ADMINS;
495 OutputSids
[i
].DomainIndex
= i
;
498 *ReferencedDomains
= OutputDomains
;
500 *MappedCount
= Count
;
502 TranslatedSids
->Entries
= Count
;
503 TranslatedSids
->Sids
= OutputSids
;
505 return STATUS_SUCCESS
;
510 NTSTATUS WINAPI
LsarLookupSids(
511 LSAPR_HANDLE PolicyHandle
,
512 PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
513 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
514 PLSAPR_TRANSLATED_NAMES TranslatedNames
,
515 LSAP_LOOKUP_LEVEL LookupLevel
,
518 SID_IDENTIFIER_AUTHORITY IdentifierAuthority
= {SECURITY_NT_AUTHORITY
};
519 static const UNICODE_STRING DomainName
= RTL_CONSTANT_STRING(L
"DOMAIN");
520 PLSAPR_REFERENCED_DOMAIN_LIST OutputDomains
= NULL
;
521 PLSAPR_TRANSLATED_NAME OutputNames
= NULL
;
522 ULONG OutputNamesLength
;
528 TRACE("LsarLookupSids(%p, %p, %p, %p, %d, %p)\n",
529 PolicyHandle
, SidEnumBuffer
, ReferencedDomains
, TranslatedNames
,
530 LookupLevel
, MappedCount
);
532 TranslatedNames
->Entries
= SidEnumBuffer
->Entries
;
533 TranslatedNames
->Names
= NULL
;
534 *ReferencedDomains
= NULL
;
536 OutputNamesLength
= SidEnumBuffer
->Entries
* sizeof(LSA_TRANSLATED_NAME
);
537 OutputNames
= MIDL_user_allocate(OutputNamesLength
);
538 if (OutputNames
== NULL
)
540 return STATUS_INSUFFICIENT_RESOURCES
;
543 RtlZeroMemory(OutputNames
, OutputNamesLength
);
545 OutputDomains
= MIDL_user_allocate(sizeof(LSAPR_REFERENCED_DOMAIN_LIST
));
546 if (OutputDomains
== NULL
)
548 MIDL_user_free(OutputNames
);
549 return STATUS_INSUFFICIENT_RESOURCES
;
552 OutputDomains
->Entries
= SidEnumBuffer
->Entries
;
553 OutputDomains
->Domains
= MIDL_user_allocate(SidEnumBuffer
->Entries
* sizeof(LSA_TRUST_INFORMATION
));
554 if (OutputDomains
->Domains
== NULL
)
556 MIDL_user_free(OutputDomains
);
557 MIDL_user_free(OutputNames
);
558 return STATUS_INSUFFICIENT_RESOURCES
;
561 Status
= RtlAllocateAndInitializeSid(&IdentifierAuthority
,
563 SECURITY_BUILTIN_DOMAIN_RID
,
564 DOMAIN_ALIAS_RID_ADMINS
,
567 if (!NT_SUCCESS(Status
))
569 MIDL_user_free(OutputDomains
->Domains
);
570 MIDL_user_free(OutputDomains
);
571 MIDL_user_free(OutputNames
);
575 SidLength
= RtlLengthSid(Sid
);
577 for (i
= 0; i
< SidEnumBuffer
->Entries
; i
++)
579 OutputDomains
->Domains
[i
].Sid
= MIDL_user_allocate(SidLength
);
580 RtlCopyMemory(OutputDomains
->Domains
[i
].Sid
, Sid
, SidLength
);
582 OutputDomains
->Domains
[i
].Name
.Buffer
= MIDL_user_allocate(DomainName
.MaximumLength
);
583 OutputDomains
->Domains
[i
].Name
.Length
= DomainName
.Length
;
584 OutputDomains
->Domains
[i
].Name
.MaximumLength
= DomainName
.MaximumLength
;
585 RtlCopyMemory(OutputDomains
->Domains
[i
].Name
.Buffer
, DomainName
.Buffer
, DomainName
.MaximumLength
);
588 Status
= LsapLookupSids(SidEnumBuffer
,
591 *ReferencedDomains
= OutputDomains
;
593 *MappedCount
= SidEnumBuffer
->Entries
;
595 TranslatedNames
->Entries
= SidEnumBuffer
->Entries
;
596 TranslatedNames
->Names
= OutputNames
;
603 NTSTATUS WINAPI
LsarCreateSecret(
604 LSAPR_HANDLE PolicyHandle
,
605 PRPC_UNICODE_STRING SecretName
,
606 ACCESS_MASK DesiredAccess
,
607 LSAPR_HANDLE
*SecretHandle
)
610 return STATUS_NOT_IMPLEMENTED
;
615 NTSTATUS WINAPI
LsarOpenAccount(
616 LSAPR_HANDLE PolicyHandle
,
618 ACCESS_MASK DesiredAccess
,
619 LSAPR_HANDLE
*AccountHandle
)
622 return STATUS_NOT_IMPLEMENTED
;
627 NTSTATUS WINAPI
LsarEnumeratePrivilegesAccount(
628 LSAPR_HANDLE AccountHandle
,
629 PLSAPR_PRIVILEGE_SET
*Privileges
)
632 return STATUS_NOT_IMPLEMENTED
;
637 NTSTATUS WINAPI
LsarAddPrivilegesToAccount(
638 LSAPR_HANDLE AccountHandle
,
639 PLSAPR_PRIVILEGE_SET Privileges
)
642 return STATUS_NOT_IMPLEMENTED
;
647 NTSTATUS WINAPI
LsarRemovePrivilegesFromAccount(
648 LSAPR_HANDLE AccountHandle
,
650 PLSAPR_PRIVILEGE_SET Privileges
)
653 return STATUS_NOT_IMPLEMENTED
;
658 NTSTATUS WINAPI
LsarGetQuotasForAccount(
659 LSAPR_HANDLE AccountHandle
,
660 PQUOTA_LIMITS QuotaLimits
)
663 return STATUS_NOT_IMPLEMENTED
;
668 NTSTATUS WINAPI
LsarSetQuotasForAccount(
669 LSAPR_HANDLE AccountHandle
,
670 PQUOTA_LIMITS QuotaLimits
)
673 return STATUS_NOT_IMPLEMENTED
;
678 NTSTATUS WINAPI
LsarGetSystemAccessAccount(
679 LSAPR_HANDLE AccountHandle
,
680 ACCESS_MASK
*SystemAccess
)
683 return STATUS_NOT_IMPLEMENTED
;
688 NTSTATUS WINAPI
LsarSetSystemAccessAccount(
689 LSAPR_HANDLE AccountHandle
,
690 ACCESS_MASK SystemAccess
)
693 return STATUS_NOT_IMPLEMENTED
;
698 NTSTATUS WINAPI
LsarOpenTrustedDomain(
699 LSAPR_HANDLE PolicyHandle
,
700 PRPC_SID TrustedDomainSid
,
701 ACCESS_MASK DesiredAccess
,
702 LSAPR_HANDLE
*TrustedDomainHandle
)
705 return STATUS_NOT_IMPLEMENTED
;
710 NTSTATUS WINAPI
LsarQueryInfoTrustedDomain(
711 LSAPR_HANDLE TrustedDomainHandle
,
712 TRUSTED_INFORMATION_CLASS InformationClass
,
713 PLSAPR_TRUSTED_DOMAIN_INFO
*TrustedDomainInformation
)
716 return STATUS_NOT_IMPLEMENTED
;
721 NTSTATUS WINAPI
LsarSetInformationTrustedDomain(
722 LSAPR_HANDLE TrustedDomainHandle
,
723 TRUSTED_INFORMATION_CLASS InformationClass
,
724 PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation
)
727 return STATUS_NOT_IMPLEMENTED
;
732 NTSTATUS WINAPI
LsarOpenSecret(
733 LSAPR_HANDLE PolicyHandle
,
734 PRPC_UNICODE_STRING SecretName
,
735 ACCESS_MASK DesiredAccess
,
736 LSAPR_HANDLE
*SecretHandle
)
739 return STATUS_NOT_IMPLEMENTED
;
744 NTSTATUS WINAPI
LsarSetSecret(
745 LSAPR_HANDLE
*SecretHandle
,
746 PLSAPR_CR_CIPHER_VALUE EncryptedCurrentValue
,
747 PLSAPR_CR_CIPHER_VALUE EncryptedOldValue
)
750 return STATUS_NOT_IMPLEMENTED
;
755 NTSTATUS WINAPI
LsarQuerySecret(
756 LSAPR_HANDLE SecretHandle
,
757 PLSAPR_CR_CIPHER_VALUE
*EncryptedCurrentValue
,
758 PLARGE_INTEGER CurrentValueSetTime
,
759 PLSAPR_CR_CIPHER_VALUE
*EncryptedOldValue
,
760 PLARGE_INTEGER OldValueSetTime
)
763 return STATUS_NOT_IMPLEMENTED
;
768 NTSTATUS WINAPI
LsarLookupPrivilegeValue(
769 LSAPR_HANDLE PolicyHandle
,
770 PRPC_UNICODE_STRING Name
,
775 TRACE("LsarLookupPrivilegeValue(%p, %wZ, %p)\n",
776 PolicyHandle
, Name
, Value
);
778 Status
= LsapValidateDbObject(PolicyHandle
,
781 if (!NT_SUCCESS(Status
))
783 ERR("Invalid handle (Status %lx)\n", Status
);
787 TRACE("Privilege: %wZ\n", Name
);
789 Status
= LsarpLookupPrivilegeValue((PUNICODE_STRING
)Name
,
797 NTSTATUS WINAPI
LsarLookupPrivilegeName(
798 LSAPR_HANDLE PolicyHandle
,
800 PRPC_UNICODE_STRING
*Name
)
804 TRACE("LsarLookupPrivilegeName(%p, %p, %p)\n",
805 PolicyHandle
, Value
, Name
);
807 Status
= LsapValidateDbObject(PolicyHandle
,
810 if (!NT_SUCCESS(Status
))
812 ERR("Invalid handle\n");
816 Status
= LsarpLookupPrivilegeName(Value
, (PUNICODE_STRING
*)Name
);
823 NTSTATUS WINAPI
LsarLookupPrivilegeDisplayName(
824 LSAPR_HANDLE PolicyHandle
,
825 PRPC_UNICODE_STRING Name
,
826 USHORT ClientLanguage
,
827 USHORT ClientSystemDefaultLanguage
,
828 PRPC_UNICODE_STRING
*DisplayName
,
829 USHORT
*LanguageReturned
)
832 return STATUS_NOT_IMPLEMENTED
;
837 NTSTATUS WINAPI
LsarDeleteObject(
838 LSAPR_HANDLE
*ObjectHandle
)
841 return STATUS_NOT_IMPLEMENTED
;
846 NTSTATUS WINAPI
LsarEnumerateAccountsWithUserRight(
847 LSAPR_HANDLE PolicyHandle
,
848 PRPC_UNICODE_STRING UserRight
,
849 PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer
)
852 return STATUS_NOT_IMPLEMENTED
;
857 NTSTATUS WINAPI
LsarEnmuerateAccountRights(
858 LSAPR_HANDLE PolicyHandle
,
860 PLSAPR_USER_RIGHT_SET UserRights
)
864 FIXME("(%p,%p,%p) stub\n", PolicyHandle
, AccountSid
, UserRights
);
866 Status
= LsapValidateDbObject(PolicyHandle
,
869 if (!NT_SUCCESS(Status
))
872 UserRights
->Entries
= 0;
873 UserRights
->UserRights
= NULL
;
874 return STATUS_OBJECT_NAME_NOT_FOUND
;
879 NTSTATUS WINAPI
LsarAddAccountRights(
880 LSAPR_HANDLE PolicyHandle
,
882 PLSAPR_USER_RIGHT_SET UserRights
)
885 return STATUS_NOT_IMPLEMENTED
;
890 NTSTATUS WINAPI
LsarRemoveAccountRights(
891 LSAPR_HANDLE PolicyHandle
,
894 PLSAPR_USER_RIGHT_SET UserRights
)
897 return STATUS_NOT_IMPLEMENTED
;
902 NTSTATUS WINAPI
LsarQueryTrustedDomainInfo(
903 LSAPR_HANDLE PolicyHandle
,
904 PRPC_SID TrustedDomainSid
,
905 TRUSTED_INFORMATION_CLASS InformationClass
,
906 PLSAPR_TRUSTED_DOMAIN_INFO
*TrustedDomainInformation
)
909 return STATUS_NOT_IMPLEMENTED
;
914 NTSTATUS WINAPI
LsarSetTrustedDomainInfo(
915 LSAPR_HANDLE PolicyHandle
,
916 PRPC_SID TrustedDomainSid
,
917 TRUSTED_INFORMATION_CLASS InformationClass
,
918 PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation
)
921 return STATUS_NOT_IMPLEMENTED
;
926 NTSTATUS WINAPI
LsarDeleteTrustedDomain(
927 LSAPR_HANDLE PolicyHandle
,
928 PRPC_SID TrustedDomainSid
)
931 return STATUS_NOT_IMPLEMENTED
;
936 NTSTATUS WINAPI
LsarStorePrivateData(
937 LSAPR_HANDLE PolicyHandle
,
938 PRPC_UNICODE_STRING KeyName
,
939 PLSAPR_CR_CIPHER_VALUE EncryptedData
)
942 return STATUS_NOT_IMPLEMENTED
;
947 NTSTATUS WINAPI
LsarRetrievePrivateData(
948 LSAPR_HANDLE PolicyHandle
,
949 PRPC_UNICODE_STRING KeyName
,
950 PLSAPR_CR_CIPHER_VALUE
*EncryptedData
)
953 return STATUS_NOT_IMPLEMENTED
;
958 NTSTATUS WINAPI
LsarOpenPolicy2(
960 PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes
,
961 ACCESS_MASK DesiredAccess
,
962 LSAPR_HANDLE
*PolicyHandle
)
965 return STATUS_NOT_IMPLEMENTED
;
970 NTSTATUS WINAPI
LsarGetUserName(
972 PRPC_UNICODE_STRING
*UserName
,
973 PRPC_UNICODE_STRING
*DomainName
)
976 return STATUS_NOT_IMPLEMENTED
;
981 NTSTATUS WINAPI
LsarQueryInformationPolicy2(
982 LSAPR_HANDLE PolicyHandle
,
983 POLICY_INFORMATION_CLASS InformationClass
,
984 unsigned long *PolicyInformation
)
987 return STATUS_NOT_IMPLEMENTED
;
992 NTSTATUS WINAPI
LsarSetInformationPolicy2(
993 LSAPR_HANDLE PolicyHandle
,
994 POLICY_INFORMATION_CLASS InformationClass
,
995 unsigned long PolicyInformation
)
998 return STATUS_NOT_IMPLEMENTED
;
1003 NTSTATUS WINAPI
LsarQueryTrustedDomainInfoByName(
1004 LSAPR_HANDLE PolicyHandle
,
1005 PRPC_UNICODE_STRING TrustedDomainName
,
1006 POLICY_INFORMATION_CLASS InformationClass
,
1007 unsigned long *PolicyInformation
)
1010 return STATUS_NOT_IMPLEMENTED
;
1015 NTSTATUS WINAPI
LsarSetTrustedDomainInfoByName(
1016 LSAPR_HANDLE PolicyHandle
,
1017 PRPC_UNICODE_STRING TrustedDomainName
,
1018 POLICY_INFORMATION_CLASS InformationClass
,
1019 unsigned long PolicyInformation
)
1022 return STATUS_NOT_IMPLEMENTED
;
1027 NTSTATUS WINAPI
LsarEnumerateTrustedDomainsEx(
1028 LSAPR_HANDLE PolicyHandle
,
1029 DWORD
*EnumerationContext
,
1030 PLSAPR_TRUSTED_ENUM_BUFFER_EX EnumerationBuffer
,
1031 DWORD PreferedMaximumLength
)
1034 return STATUS_NOT_IMPLEMENTED
;
1039 NTSTATUS WINAPI
LsarCreateTrustedDomainEx(
1040 LSAPR_HANDLE PolicyHandle
,
1041 PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation
,
1042 PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION AuthentificationInformation
,
1043 ACCESS_MASK DesiredAccess
,
1044 LSAPR_HANDLE
*TrustedDomainHandle
)
1047 return STATUS_NOT_IMPLEMENTED
;
1052 NTSTATUS WINAPI
LsarSetPolicyReplicationHandle(
1053 PLSAPR_HANDLE PolicyHandle
)
1056 return STATUS_NOT_IMPLEMENTED
;
1061 NTSTATUS WINAPI
LsarQueryDomainInformationPolicy(
1062 LSAPR_HANDLE PolicyHandle
,
1063 POLICY_INFORMATION_CLASS InformationClass
,
1064 unsigned long *PolicyInformation
)
1067 return STATUS_NOT_IMPLEMENTED
;
1072 NTSTATUS WINAPI
LsarSetDomainInformationPolicy(
1073 LSAPR_HANDLE PolicyHandle
,
1074 POLICY_INFORMATION_CLASS InformationClass
,
1075 unsigned long PolicyInformation
)
1078 return STATUS_NOT_IMPLEMENTED
;
1083 NTSTATUS WINAPI
LsarOpenTrustedDomainByName(
1084 LSAPR_HANDLE PolicyHandle
,
1085 PRPC_UNICODE_STRING TrustedDomainName
,
1086 ACCESS_MASK DesiredAccess
,
1087 LSAPR_HANDLE
*TrustedDomainHandle
)
1090 return STATUS_NOT_IMPLEMENTED
;
1095 NTSTATUS WINAPI
LsarTestCall(
1099 return STATUS_NOT_IMPLEMENTED
;
1104 NTSTATUS WINAPI
LsarLookupSids2(
1105 LSAPR_HANDLE PolicyHandle
,
1106 PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
1107 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1108 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
1109 LSAP_LOOKUP_LEVEL LookupLevel
,
1111 DWORD LookupOptions
,
1112 DWORD ClientRevision
)
1115 return STATUS_NOT_IMPLEMENTED
;
1120 NTSTATUS WINAPI
LsarLookupNames2(
1121 LSAPR_HANDLE PolicyHandle
,
1123 PRPC_UNICODE_STRING Names
,
1124 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1125 PLSAPR_TRANSLATED_SIDS_EX TranslatedSids
,
1126 LSAP_LOOKUP_LEVEL LookupLevel
,
1128 DWORD LookupOptions
,
1129 DWORD ClientRevision
)
1132 return STATUS_NOT_IMPLEMENTED
;
1137 NTSTATUS WINAPI
LsarCreateTrustedDomainEx2(
1138 LSAPR_HANDLE PolicyHandle
,
1139 PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation
,
1140 PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL AuthentificationInformation
,
1141 ACCESS_MASK DesiredAccess
,
1142 LSAPR_HANDLE
*TrustedDomainHandle
)
1145 return STATUS_NOT_IMPLEMENTED
;
1150 NTSTATUS WINAPI
CredrWrite(
1154 return STATUS_NOT_IMPLEMENTED
;
1159 NTSTATUS WINAPI
CredrRead(
1163 return STATUS_NOT_IMPLEMENTED
;
1168 NTSTATUS WINAPI
CredrEnumerate(
1172 return STATUS_NOT_IMPLEMENTED
;
1177 NTSTATUS WINAPI
CredrWriteDomainCredentials(
1181 return STATUS_NOT_IMPLEMENTED
;
1186 NTSTATUS WINAPI
CredrReadDomainCredentials(
1190 return STATUS_NOT_IMPLEMENTED
;
1195 NTSTATUS WINAPI
CredrDelete(
1199 return STATUS_NOT_IMPLEMENTED
;
1204 NTSTATUS WINAPI
CredrGetTargetInfo(
1208 return STATUS_NOT_IMPLEMENTED
;
1213 NTSTATUS WINAPI
CredrProfileLoaded(
1217 return STATUS_NOT_IMPLEMENTED
;
1222 NTSTATUS WINAPI
LsarLookupNames3(
1223 LSAPR_HANDLE PolicyHandle
,
1225 PRPC_UNICODE_STRING Names
,
1226 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1227 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
1228 LSAP_LOOKUP_LEVEL LookupLevel
,
1230 DWORD LookupOptions
,
1231 DWORD ClientRevision
)
1233 SID_IDENTIFIER_AUTHORITY IdentifierAuthority
= {SECURITY_NT_AUTHORITY
};
1234 static const UNICODE_STRING DomainName
= RTL_CONSTANT_STRING(L
"DOMAIN");
1235 PLSAPR_REFERENCED_DOMAIN_LIST DomainsBuffer
= NULL
;
1236 PLSAPR_TRANSLATED_SID_EX2 SidsBuffer
= NULL
;
1237 ULONG SidsBufferLength
;
1238 ULONG DomainSidLength
;
1239 ULONG AccountSidLength
;
1245 TRACE("LsarLookupNames3(%p, %lu, %p, %p, %p, %d, %p, %lu, %lu)\n",
1246 PolicyHandle
, Count
, Names
, ReferencedDomains
, TranslatedSids
,
1247 LookupLevel
, MappedCount
, LookupOptions
, ClientRevision
);
1250 return STATUS_NONE_MAPPED
;
1252 TranslatedSids
->Entries
= Count
;
1253 TranslatedSids
->Sids
= NULL
;
1254 *ReferencedDomains
= NULL
;
1256 SidsBufferLength
= Count
* sizeof(LSAPR_TRANSLATED_SID_EX2
);
1257 SidsBuffer
= MIDL_user_allocate(SidsBufferLength
);
1258 if (SidsBuffer
== NULL
)
1259 return STATUS_INSUFFICIENT_RESOURCES
;
1261 for (i
= 0; i
< Count
; i
++)
1263 SidsBuffer
[i
].Use
= SidTypeUser
;
1264 SidsBuffer
[i
].Sid
= NULL
;
1265 SidsBuffer
[i
].DomainIndex
= -1;
1266 SidsBuffer
[i
].Flags
= 0;
1269 DomainsBuffer
= MIDL_user_allocate(sizeof(LSAPR_REFERENCED_DOMAIN_LIST
));
1270 if (DomainsBuffer
== NULL
)
1272 MIDL_user_free(SidsBuffer
);
1273 return STATUS_INSUFFICIENT_RESOURCES
;
1276 DomainsBuffer
->Entries
= Count
;
1277 DomainsBuffer
->Domains
= MIDL_user_allocate(Count
* sizeof(LSA_TRUST_INFORMATION
));
1278 if (DomainsBuffer
->Domains
== NULL
)
1280 MIDL_user_free(DomainsBuffer
);
1281 MIDL_user_free(SidsBuffer
);
1282 return STATUS_INSUFFICIENT_RESOURCES
;
1285 Status
= RtlAllocateAndInitializeSid(&IdentifierAuthority
,
1287 SECURITY_BUILTIN_DOMAIN_RID
,
1288 DOMAIN_ALIAS_RID_ADMINS
,
1291 if (!NT_SUCCESS(Status
))
1293 MIDL_user_free(DomainsBuffer
->Domains
);
1294 MIDL_user_free(DomainsBuffer
);
1295 MIDL_user_free(SidsBuffer
);
1299 DomainSidLength
= RtlLengthSid(DomainSid
);
1301 for (i
= 0; i
< Count
; i
++)
1303 DomainsBuffer
->Domains
[i
].Sid
= MIDL_user_allocate(DomainSidLength
);
1304 RtlCopyMemory(DomainsBuffer
->Domains
[i
].Sid
,
1308 DomainsBuffer
->Domains
[i
].Name
.Buffer
= MIDL_user_allocate(DomainName
.MaximumLength
);
1309 DomainsBuffer
->Domains
[i
].Name
.Length
= DomainName
.Length
;
1310 DomainsBuffer
->Domains
[i
].Name
.MaximumLength
= DomainName
.MaximumLength
;
1311 RtlCopyMemory(DomainsBuffer
->Domains
[i
].Name
.Buffer
,
1313 DomainName
.MaximumLength
);
1316 Status
= RtlAllocateAndInitializeSid(&IdentifierAuthority
,
1318 SECURITY_BUILTIN_DOMAIN_RID
,
1319 DOMAIN_ALIAS_RID_ADMINS
,
1320 DOMAIN_USER_RID_ADMIN
,
1323 if (!NT_SUCCESS(Status
))
1325 MIDL_user_free(DomainsBuffer
->Domains
);
1326 MIDL_user_free(DomainsBuffer
);
1327 MIDL_user_free(SidsBuffer
);
1331 AccountSidLength
= RtlLengthSid(AccountSid
);
1333 for (i
= 0; i
< Count
; i
++)
1335 SidsBuffer
[i
].Use
= SidTypeWellKnownGroup
;
1336 SidsBuffer
[i
].Sid
= MIDL_user_allocate(AccountSidLength
);
1338 RtlCopyMemory(SidsBuffer
[i
].Sid
,
1342 SidsBuffer
[i
].DomainIndex
= i
;
1343 SidsBuffer
[i
].Flags
= 0;
1346 *ReferencedDomains
= DomainsBuffer
;
1347 *MappedCount
= Count
;
1349 TranslatedSids
->Entries
= Count
;
1350 TranslatedSids
->Sids
= SidsBuffer
;
1352 return STATUS_SUCCESS
;
1357 NTSTATUS WINAPI
CredrGetSessionTypes(
1361 return STATUS_NOT_IMPLEMENTED
;
1366 NTSTATUS WINAPI
LsarRegisterAuditEvent(
1370 return STATUS_NOT_IMPLEMENTED
;
1375 NTSTATUS WINAPI
LsarGenAuditEvent(
1379 return STATUS_NOT_IMPLEMENTED
;
1384 NTSTATUS WINAPI
LsarUnregisterAuditEvent(
1388 return STATUS_NOT_IMPLEMENTED
;
1393 NTSTATUS WINAPI
LsarQueryForestTrustInformation(
1394 LSAPR_HANDLE PolicyHandle
,
1395 PLSA_UNICODE_STRING TrustedDomainName
,
1396 LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType
,
1397 PLSA_FOREST_TRUST_INFORMATION
*ForestTrustInfo
)
1400 return STATUS_NOT_IMPLEMENTED
;
1405 NTSTATUS WINAPI
LsarSetForestTrustInformation(
1406 LSAPR_HANDLE PolicyHandle
,
1407 PLSA_UNICODE_STRING TrustedDomainName
,
1408 LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType
,
1409 PLSA_FOREST_TRUST_INFORMATION ForestTrustInfo
,
1411 PLSA_FOREST_TRUST_COLLISION_INFORMATION
*CollisionInfo
)
1414 return STATUS_NOT_IMPLEMENTED
;
1419 NTSTATUS WINAPI
CredrRename(
1423 return STATUS_NOT_IMPLEMENTED
;
1428 NTSTATUS WINAPI
LsarLookupSids3(
1429 LSAPR_HANDLE PolicyHandle
,
1430 PLSAPR_SID_ENUM_BUFFER SidEnumBuffer
,
1431 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1432 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames
,
1433 LSAP_LOOKUP_LEVEL LookupLevel
,
1435 DWORD LookupOptions
,
1436 DWORD ClientRevision
)
1439 return STATUS_NOT_IMPLEMENTED
;
1444 NTSTATUS WINAPI
LsarLookupNames4(
1447 PRPC_UNICODE_STRING Names
,
1448 PLSAPR_REFERENCED_DOMAIN_LIST
*ReferencedDomains
,
1449 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids
,
1450 LSAP_LOOKUP_LEVEL LookupLevel
,
1452 DWORD LookupOptions
,
1453 DWORD ClientRevision
)
1456 return STATUS_NOT_IMPLEMENTED
;
1461 NTSTATUS WINAPI
LsarOpenPolicySce(
1465 return STATUS_NOT_IMPLEMENTED
;
1470 NTSTATUS WINAPI
LsarAdtRegisterSecurityEventSource(
1474 return STATUS_NOT_IMPLEMENTED
;
1479 NTSTATUS WINAPI
LsarAdtUnregisterSecurityEventSource(
1483 return STATUS_NOT_IMPLEMENTED
;
1488 NTSTATUS WINAPI
LsarAdtReportSecurityEvent(
1492 return STATUS_NOT_IMPLEMENTED
;
1497 NTSTATUS WINAPI
CredrFindBestCredential(
1501 return STATUS_NOT_IMPLEMENTED
;
1506 NTSTATUS WINAPI
LsarSetAuditPolicy(
1510 return STATUS_NOT_IMPLEMENTED
;
1515 NTSTATUS WINAPI
LsarQueryAuditPolicy(
1519 return STATUS_NOT_IMPLEMENTED
;
1524 NTSTATUS WINAPI
LsarEnumerateAuditPolicy(
1528 return STATUS_NOT_IMPLEMENTED
;
1533 NTSTATUS WINAPI
LsarEnumerateAuditCategories(
1537 return STATUS_NOT_IMPLEMENTED
;
1542 NTSTATUS WINAPI
LsarEnumerateAuditSubCategories(
1546 return STATUS_NOT_IMPLEMENTED
;
1551 NTSTATUS WINAPI
LsarLookupAuditCategoryName(
1555 return STATUS_NOT_IMPLEMENTED
;
1560 NTSTATUS WINAPI
LsarLookupAuditSubCategoryName(
1564 return STATUS_NOT_IMPLEMENTED
;
1569 NTSTATUS WINAPI
LsarSetAuditSecurity(
1573 return STATUS_NOT_IMPLEMENTED
;
1578 NTSTATUS WINAPI
LsarQueryAuditSecurity(
1582 return STATUS_NOT_IMPLEMENTED
;
1587 NTSTATUS WINAPI
CredReadByTokenHandle(
1591 return STATUS_NOT_IMPLEMENTED
;
1596 NTSTATUS WINAPI
CredrRestoreCredentials(
1600 return STATUS_NOT_IMPLEMENTED
;
1605 NTSTATUS WINAPI
CredrBackupCredentials(
1609 return STATUS_NOT_IMPLEMENTED
;