mirror of
https://github.com/reactos/reactos.git
synced 2024-07-04 19:54:58 +00:00
[ADVAPI32]
Implement LsaAddAccountRights(), LsaQueryTrustedDomainInfoByName() and LsaRemoveAccountRights(). svn path=/trunk/; revision=49403
This commit is contained in:
parent
92caa24fa4
commit
45f49f49a4
|
@ -143,18 +143,37 @@ LsaDelete(IN LSA_HANDLE ObjectHandle)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
WINAPI
|
WINAPI
|
||||||
LsaAddAccountRights(
|
LsaAddAccountRights(IN LSA_HANDLE PolicyHandle,
|
||||||
LSA_HANDLE PolicyHandle,
|
IN PSID AccountSid,
|
||||||
PSID AccountSid,
|
IN PLSA_UNICODE_STRING UserRights,
|
||||||
PLSA_UNICODE_STRING UserRights,
|
IN ULONG CountOfRights)
|
||||||
ULONG CountOfRights)
|
|
||||||
{
|
{
|
||||||
FIXME("(%p,%p,%p,0x%08x) stub\n", PolicyHandle, AccountSid, UserRights, CountOfRights);
|
LSAPR_USER_RIGHT_SET UserRightSet;
|
||||||
return STATUS_OBJECT_NAME_NOT_FOUND;
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
TRACE("(%p,%p,%p,0x%08x) stub\n", PolicyHandle, AccountSid, UserRights, CountOfRights);
|
||||||
|
|
||||||
|
UserRightSet.Entries = CountOfRights;
|
||||||
|
UserRightSet.UserRights = (PRPC_UNICODE_STRING)UserRights;
|
||||||
|
|
||||||
|
RpcTryExcept
|
||||||
|
{
|
||||||
|
Status = LsarAddAccountRights((LSAPR_HANDLE)PolicyHandle,
|
||||||
|
(PRPC_SID)AccountSid,
|
||||||
|
&UserRightSet);
|
||||||
|
|
||||||
|
}
|
||||||
|
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
Status = I_RpcMapWin32Status(RpcExceptionCode());
|
||||||
|
}
|
||||||
|
RpcEndExcept;
|
||||||
|
|
||||||
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -265,6 +284,7 @@ LsaCreateTrustedDomainEx(
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -291,16 +311,16 @@ LsaDeleteTrustedDomain(IN LSA_HANDLE PolicyHandle,
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
WINAPI
|
WINAPI
|
||||||
LsaEnumerateAccountRights(
|
LsaEnumerateAccountRights(IN LSA_HANDLE PolicyHandle,
|
||||||
LSA_HANDLE PolicyHandle,
|
IN PSID AccountSid,
|
||||||
PSID AccountSid,
|
OUT PLSA_UNICODE_STRING *UserRights,
|
||||||
PLSA_UNICODE_STRING *UserRights,
|
OUT PULONG CountOfRights)
|
||||||
PULONG CountOfRights)
|
|
||||||
{
|
{
|
||||||
LSAPR_USER_RIGHT_SET UserRightsSet;
|
LSAPR_USER_RIGHT_SET UserRightsSet;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
@ -333,6 +353,7 @@ LsaEnumerateAccountRights(
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
@ -385,17 +406,19 @@ LsaEnumerateTrustedDomainsEx(
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
WINAPI
|
WINAPI
|
||||||
LsaFreeMemory(PVOID Buffer)
|
LsaFreeMemory(IN PVOID Buffer)
|
||||||
{
|
{
|
||||||
TRACE("(%p)\n", Buffer);
|
TRACE("(%p)\n", Buffer);
|
||||||
return RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer);
|
return RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -446,6 +469,7 @@ LsaLookupNames(IN LSA_HANDLE PolicyHandle,
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
@ -470,8 +494,9 @@ LsaLookupNames2(
|
||||||
return STATUS_NONE_MAPPED;
|
return STATUS_NONE_MAPPED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unmplemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
WINAPI
|
WINAPI
|
||||||
|
@ -504,6 +529,7 @@ LsaLookupPrivilegeName(IN LSA_HANDLE PolicyHandle,
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -535,6 +561,7 @@ LsaLookupPrivilegeValue(IN LSA_HANDLE PolicyHandle,
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -591,6 +618,7 @@ LsaLookupSids(IN LSA_HANDLE PolicyHandle,
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* LsaNtStatusToWinError
|
* LsaNtStatusToWinError
|
||||||
*
|
*
|
||||||
|
@ -599,7 +627,8 @@ LsaLookupSids(IN LSA_HANDLE PolicyHandle,
|
||||||
*
|
*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
ULONG WINAPI
|
ULONG
|
||||||
|
WINAPI
|
||||||
LsaNtStatusToWinError(IN NTSTATUS Status)
|
LsaNtStatusToWinError(IN NTSTATUS Status)
|
||||||
{
|
{
|
||||||
TRACE("(%lx)\n", Status);
|
TRACE("(%lx)\n", Status);
|
||||||
|
@ -747,6 +776,7 @@ LsaQueryForestTrustInformation(
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @implemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
|
@ -782,20 +812,6 @@ LsaQueryInformationPolicy(IN LSA_HANDLE PolicyHandle,
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* @unimplemented
|
|
||||||
*/
|
|
||||||
NTSTATUS
|
|
||||||
WINAPI
|
|
||||||
LsaQueryTrustedDomainInfoByName(
|
|
||||||
LSA_HANDLE PolicyHandle,
|
|
||||||
PLSA_UNICODE_STRING TrustedDomainName,
|
|
||||||
TRUSTED_INFORMATION_CLASS InformationClass,
|
|
||||||
PVOID *Buffer)
|
|
||||||
{
|
|
||||||
FIXME("(%p,%p,%d,%p) stub\n", PolicyHandle, TrustedDomainName, InformationClass, Buffer);
|
|
||||||
return STATUS_OBJECT_NAME_NOT_FOUND;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
|
@ -812,22 +828,78 @@ LsaQueryTrustedDomainInfo(
|
||||||
return STATUS_OBJECT_NAME_NOT_FOUND;
|
return STATUS_OBJECT_NAME_NOT_FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
WINAPI
|
WINAPI
|
||||||
LsaRemoveAccountRights(
|
LsaQueryTrustedDomainInfoByName(IN LSA_HANDLE PolicyHandle,
|
||||||
LSA_HANDLE PolicyHandle,
|
IN PLSA_UNICODE_STRING TrustedDomainName,
|
||||||
PSID AccountSid,
|
IN TRUSTED_INFORMATION_CLASS InformationClass,
|
||||||
BOOLEAN AllRights,
|
OUT PVOID *Buffer)
|
||||||
PLSA_UNICODE_STRING UserRights,
|
|
||||||
ULONG CountOfRights)
|
|
||||||
{
|
{
|
||||||
FIXME("(%p,%p,%d,%p,0x%08x) stub\n", PolicyHandle, AccountSid, AllRights, UserRights, CountOfRights);
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
TRACE("(%p,%p,%d,%p)\n", PolicyHandle, TrustedDomainName, InformationClass, Buffer);
|
||||||
|
|
||||||
|
if (InformationClass == TrustedDomainAuthInformationInternal ||
|
||||||
|
InformationClass == TrustedDomainFullInformationInternal)
|
||||||
|
return STATUS_INVALID_INFO_CLASS;
|
||||||
|
|
||||||
|
RpcTryExcept
|
||||||
|
{
|
||||||
|
Status = LsarQueryTrustedDomainInfoByName((LSAPR_HANDLE)PolicyHandle,
|
||||||
|
(PRPC_UNICODE_STRING)TrustedDomainName,
|
||||||
|
InformationClass,
|
||||||
|
(unsigned long *)Buffer); // Shuld be: (PLSAPR_POLICY_INFORMATION *)Buffer
|
||||||
|
}
|
||||||
|
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
Status = I_RpcMapWin32Status(RpcExceptionCode());
|
||||||
|
}
|
||||||
|
RpcEndExcept;
|
||||||
|
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* @implemented
|
||||||
|
*/
|
||||||
|
NTSTATUS
|
||||||
|
WINAPI
|
||||||
|
LsaRemoveAccountRights(IN LSA_HANDLE PolicyHandle,
|
||||||
|
IN PSID AccountSid,
|
||||||
|
IN BOOLEAN AllRights,
|
||||||
|
IN PLSA_UNICODE_STRING UserRights,
|
||||||
|
IN ULONG CountOfRights)
|
||||||
|
{
|
||||||
|
LSAPR_USER_RIGHT_SET UserRightSet;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
TRACE("(%p,%p,%d,%p,0x%08x) stub\n", PolicyHandle, AccountSid, AllRights, UserRights, CountOfRights);
|
||||||
|
|
||||||
|
UserRightSet.Entries = CountOfRights;
|
||||||
|
UserRightSet.UserRights = (PRPC_UNICODE_STRING)UserRights;
|
||||||
|
|
||||||
|
RpcTryExcept
|
||||||
|
{
|
||||||
|
Status = LsarRemoveAccountRights((LSAPR_HANDLE)PolicyHandle,
|
||||||
|
(PRPC_SID)AccountSid,
|
||||||
|
AllRights,
|
||||||
|
&UserRightSet);
|
||||||
|
}
|
||||||
|
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
|
||||||
|
{
|
||||||
|
Status = I_RpcMapWin32Status(RpcExceptionCode());
|
||||||
|
}
|
||||||
|
RpcEndExcept;
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @unimplemented
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue