/*
- * @unimplemented
+ * @implemented
*/
NTSTATUS
WINAPI
-LsaAddAccountRights(
- LSA_HANDLE PolicyHandle,
- PSID AccountSid,
- PLSA_UNICODE_STRING UserRights,
- ULONG CountOfRights)
+LsaAddAccountRights(IN LSA_HANDLE PolicyHandle,
+ IN PSID AccountSid,
+ IN PLSA_UNICODE_STRING UserRights,
+ IN ULONG CountOfRights)
{
- FIXME("(%p,%p,%p,0x%08x) stub\n", PolicyHandle, AccountSid, UserRights, CountOfRights);
- return STATUS_OBJECT_NAME_NOT_FOUND;
+ LSAPR_USER_RIGHT_SET UserRightSet;
+ 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;
}
return STATUS_SUCCESS;
}
+
/*
* @implemented
*/
return Status;
}
+
/*
* @implemented
*/
NTSTATUS
WINAPI
-LsaEnumerateAccountRights(
- LSA_HANDLE PolicyHandle,
- PSID AccountSid,
- PLSA_UNICODE_STRING *UserRights,
- PULONG CountOfRights)
+LsaEnumerateAccountRights(IN LSA_HANDLE PolicyHandle,
+ IN PSID AccountSid,
+ OUT PLSA_UNICODE_STRING *UserRights,
+ OUT PULONG CountOfRights)
{
LSAPR_USER_RIGHT_SET UserRightsSet;
NTSTATUS Status;
return Status;
}
+
/*
* @unimplemented
*/
return STATUS_SUCCESS;
}
+
/*
* @implemented
*/
NTSTATUS
WINAPI
-LsaFreeMemory(PVOID Buffer)
+LsaFreeMemory(IN PVOID Buffer)
{
TRACE("(%p)\n", Buffer);
return RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer);
}
+
/*
* @implemented
*/
return Status;
}
+
/*
* @unimplemented
*/
return STATUS_NONE_MAPPED;
}
+
/*
- * @unmplemented
+ * @implemented
*/
NTSTATUS
WINAPI
return Status;
}
+
/*
* @implemented
*/
return Status;
}
+
/*
* @implemented
*/
return Status;
}
+
/******************************************************************************
* LsaNtStatusToWinError
*
*
* @implemented
*/
-ULONG WINAPI
+ULONG
+WINAPI
LsaNtStatusToWinError(IN NTSTATUS Status)
{
TRACE("(%lx)\n", Status);
return STATUS_NOT_IMPLEMENTED;
}
+
/*
* @implemented
*/
return Status;
}
+
/*
* @unimplemented
*/
NTSTATUS
WINAPI
-LsaQueryTrustedDomainInfoByName(
+LsaQueryTrustedDomainInfo(
LSA_HANDLE PolicyHandle,
- PLSA_UNICODE_STRING TrustedDomainName,
+ PSID TrustedDomainSid,
TRUSTED_INFORMATION_CLASS InformationClass,
PVOID *Buffer)
{
- FIXME("(%p,%p,%d,%p) stub\n", PolicyHandle, TrustedDomainName, InformationClass, Buffer);
+ FIXME("(%p,%p,%d,%p) stub\n", PolicyHandle, TrustedDomainSid, InformationClass, Buffer);
return STATUS_OBJECT_NAME_NOT_FOUND;
}
+
/*
- * @unimplemented
+ * @implemented
*/
NTSTATUS
WINAPI
-LsaQueryTrustedDomainInfo(
- LSA_HANDLE PolicyHandle,
- PSID TrustedDomainSid,
- TRUSTED_INFORMATION_CLASS InformationClass,
- PVOID *Buffer)
+LsaQueryTrustedDomainInfoByName(IN LSA_HANDLE PolicyHandle,
+ IN PLSA_UNICODE_STRING TrustedDomainName,
+ IN TRUSTED_INFORMATION_CLASS InformationClass,
+ OUT PVOID *Buffer)
{
- FIXME("(%p,%p,%d,%p) stub\n", PolicyHandle, TrustedDomainSid, InformationClass, Buffer);
- return STATUS_OBJECT_NAME_NOT_FOUND;
+ NTSTATUS Status;
+
+ TRACE("(%p,%p,%d,%p)\n", PolicyHandle, TrustedDomainName, InformationClass, Buffer);
+
+ if (InformationClass == 9 /*TrustedDomainAuthInformationInternal*/ ||
+ InformationClass == 10 /*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;
}
+
/*
- * @unimplemented
+ * @implemented
*/
NTSTATUS
WINAPI
-LsaRemoveAccountRights(
- LSA_HANDLE PolicyHandle,
- PSID AccountSid,
- BOOLEAN AllRights,
- PLSA_UNICODE_STRING UserRights,
- ULONG CountOfRights)
+LsaRemoveAccountRights(IN LSA_HANDLE PolicyHandle,
+ IN PSID AccountSid,
+ IN BOOLEAN AllRights,
+ IN PLSA_UNICODE_STRING UserRights,
+ IN ULONG CountOfRights)
{
- FIXME("(%p,%p,%d,%p,0x%08x) stub\n", PolicyHandle, AccountSid, AllRights, UserRights, 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;
}
+
/*
* @unimplemented
*/