[ADVAPI32]

Implement LsaAddAccountRights(), LsaQueryTrustedDomainInfoByName() and LsaRemoveAccountRights().

svn path=/trunk/; revision=49403
This commit is contained in:
Eric Kohl 2010-11-01 14:09:33 +00:00
parent 92caa24fa4
commit 45f49f49a4

View file

@ -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
*/ */