/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
- * FILE: lib/advapi32/sec/lsa.c
+ * FILE: dll/win32/advapi32/sec/lsa.c
* PURPOSE: Local security authority functions
* PROGRAMMER: Emanuele Aliberti
* UPDATE HISTORY:
- * 19990322 EA created
- * 19990515 EA stubs
+ * 19990322 EA created
+ * 19990515 EA stubs
* 20030202 KJK compressed stubs
*
*/
ULONG CountOfRights)
{
FIXME("(%p,%p,%p,0x%08x) stub\n", PolicyHandle, AccountSid, UserRights, CountOfRights);
- return STATUS_NOT_IMPLEMENTED;
+ return STATUS_OBJECT_NAME_NOT_FOUND;
}
/*
PSID TrustedDomainSid)
{
FIXME("(%p,%p) stub\n", PolicyHandle, TrustedDomainSid);
- return STATUS_NOT_IMPLEMENTED;
+ return STATUS_SUCCESS;
}
/*
- * @unimplemented
+ * @implemented
*/
NTSTATUS
WINAPI
PLSA_UNICODE_STRING *UserRights,
PULONG CountOfRights)
{
- FIXME("(%p,%p,%p,%p) stub\n", PolicyHandle, AccountSid, UserRights, CountOfRights);
- return STATUS_NOT_IMPLEMENTED;
+ LSAPR_USER_RIGHT_SET UserRightsSet;
+ NTSTATUS Status;
+
+ TRACE("(%p,%p,%p,%p) stub\n", PolicyHandle, AccountSid, UserRights, CountOfRights);
+
+ UserRightsSet.Entries = 0;
+ UserRightsSet.UserRights = NULL;
+
+ RpcTryExcept
+ {
+ Status = LsarEnmuerateAccountRights((LSAPR_HANDLE)PolicyHandle,
+ AccountSid,
+ &UserRightsSet);
+
+ *CountOfRights = UserRightsSet.Entries;
+ *UserRights = (PUNICODE_STRING)UserRightsSet.UserRights;
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Status = I_RpcMapWin32Status(RpcExceptionCode());
+
+ if (UserRightsSet.UserRights != NULL)
+ {
+ MIDL_user_free(UserRightsSet.UserRights);
+ }
+ }
+ RpcEndExcept;
+
+ return Status;
}
/*
PULONG CountReturned)
{
FIXME("(%p,%p,%p,%p) stub\n", PolicyHandle, UserRights, EnumerationBuffer, CountReturned);
- return STATUS_NOT_IMPLEMENTED;
+ return STATUS_NO_MORE_ENTRIES;
}
/*
{
FIXME("(%p,%p,%p,0x%08x,%p) stub\n", PolicyHandle, EnumerationContext,
Buffer, PreferedMaximumLength, CountReturned);
- return STATUS_NOT_IMPLEMENTED;
+
+ if (CountReturned) *CountReturned = 0;
+ return STATUS_SUCCESS;
}
/*
{
FIXME("(%p,%p,%p,0x%08x,%p) stub\n", PolicyHandle, EnumerationContext, Buffer,
PreferedMaximumLength, CountReturned);
- return STATUS_NOT_IMPLEMENTED;
+ if (CountReturned) *CountReturned = 0;
+ return STATUS_SUCCESS;
}
/*
* @implemented
*/
-NTSTATUS WINAPI
+NTSTATUS
+WINAPI
LsaFreeMemory(PVOID Buffer)
{
TRACE("(%p)\n", Buffer);
{
FIXME("(%p,0x%08x,0x%08x,%p,%p,%p) stub\n", PolicyHandle, Flags,
Count, Names, ReferencedDomains, Sids);
+ if (Names != NULL && Count > 0)
+ {
+ *ReferencedDomains = RtlAllocateHeap(RtlGetProcessHeap(), 0, sizeof(LSA_REFERENCED_DOMAIN_LIST));
+ *Sids = RtlAllocateHeap(RtlGetProcessHeap(), 0, Count * sizeof(LSA_TRANSLATED_SID2));
+ return STATUS_SOME_NOT_MAPPED;
+ }
return STATUS_NONE_MAPPED;
}
PLSA_HANDLE TrustedDomainHandle)
{
FIXME("(%p,%p,0x%08x,%p) stub\n", PolicyHandle, TrustedDomainName, DesiredAccess, TrustedDomainHandle);
- return STATUS_NOT_IMPLEMENTED;
+ return STATUS_OBJECT_NAME_NOT_FOUND;
}
/*
PVOID *Buffer)
{
FIXME("(%p,%p,%d,%p) stub\n", PolicyHandle, TrustedDomainName, InformationClass, Buffer);
- return STATUS_NOT_IMPLEMENTED;
+ return STATUS_OBJECT_NAME_NOT_FOUND;
}
/*
PVOID *Buffer)
{
FIXME("(%p,%p,%d,%p) stub\n", PolicyHandle, TrustedDomainSid, InformationClass, Buffer);
- return STATUS_NOT_IMPLEMENTED;
+ return STATUS_OBJECT_NAME_NOT_FOUND;
}
/*
ULONG CountOfRights)
{
FIXME("(%p,%p,%d,%p,0x%08x) stub\n", PolicyHandle, AccountSid, AllRights, UserRights, CountOfRights);
- return STATUS_NOT_IMPLEMENTED;
+ return STATUS_SUCCESS;
}
/*
PVOID Buffer)
{
FIXME("(%p,0x%08x,%p) stub\n", PolicyHandle, InformationClass, Buffer);
- return STATUS_NOT_IMPLEMENTED;
+ return STATUS_UNSUCCESSFUL;
}
/*
PVOID Buffer)
{
FIXME("(%p,%p,%d,%p) stub\n", PolicyHandle, TrustedDomainName, InformationClass, Buffer);
- return STATUS_NOT_IMPLEMENTED;
+ return STATUS_SUCCESS;
}
/*
PVOID Buffer)
{
FIXME("(%p,%p,%d,%p) stub\n", PolicyHandle, TrustedDomainSid, InformationClass, Buffer);
- return STATUS_NOT_IMPLEMENTED;
+ return STATUS_SUCCESS;
}
/*
PLSA_UNICODE_STRING PrivateData)
{
FIXME("(%p,%p,%p) stub\n", PolicyHandle, KeyName, PrivateData);
- return STATUS_NOT_IMPLEMENTED;
+ return STATUS_OBJECT_NAME_NOT_FOUND;
}
/*