[ADVAPI32]

Implement LsaGetUserName and LsaOpenTrustedDomain.

svn path=/trunk/; revision=57361
This commit is contained in:
Eric Kohl 2012-09-22 09:23:38 +00:00
parent 1cc975ea63
commit 84deb4ab83
3 changed files with 82 additions and 19 deletions

View file

@ -381,7 +381,7 @@
@ stdcall LsaOpenPolicy(ptr ptr long ptr) @ stdcall LsaOpenPolicy(ptr ptr long ptr)
@ stub LsaOpenPolicySce @ stub LsaOpenPolicySce
@ stdcall LsaOpenSecret(ptr ptr long ptr) @ stdcall LsaOpenSecret(ptr ptr long ptr)
@ stub LsaOpenTrustedDomain @ stdcall LsaOpenTrustedDomain(ptr ptr long ptr)
@ stdcall LsaOpenTrustedDomainByName(ptr ptr long ptr) @ stdcall LsaOpenTrustedDomainByName(ptr ptr long ptr)
@ stdcall LsaQueryDomainInformationPolicy(ptr long ptr) @ stdcall LsaQueryDomainInformationPolicy(ptr long ptr)
@ stdcall LsaQueryForestTrustInformation(ptr ptr ptr) @ stdcall LsaQueryForestTrustInformation(ptr ptr ptr)

View file

@ -547,12 +547,40 @@ LsaGetSystemAccessAccount(IN LSA_HANDLE AccountHandle,
*/ */
NTSTATUS NTSTATUS
WINAPI WINAPI
LsaGetUserName(PUNICODE_STRING *UserName, LsaGetUserName(OUT PUNICODE_STRING *UserName,
PUNICODE_STRING *DomainName) OUT PUNICODE_STRING *DomainName OPTIONAL)
{ {
FIXME("LsaGetUserName(%p %p) stub\n", PRPC_UNICODE_STRING UserNameString = NULL;
PRPC_UNICODE_STRING DomainNameString = NULL;
NTSTATUS Status;
TRACE("LsaGetUserName(%p %p)\n",
UserName, DomainName); UserName, DomainName);
return STATUS_NOT_IMPLEMENTED;
RpcTryExcept
{
Status = LsarGetUserName(NULL,
&UserNameString,
(DomainName != NULL) ? &DomainNameString : NULL);
*UserName = (PUNICODE_STRING)UserNameString;
if (DomainName != NULL)
*DomainName = (PUNICODE_STRING)DomainNameString;
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
if (UserNameString != NULL)
MIDL_user_free(UserNameString);
if (DomainNameString != NULL)
MIDL_user_free(DomainNameString);
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
RpcEndExcept;
return Status;
} }
@ -918,6 +946,38 @@ LsaOpenSecret(IN LSA_HANDLE PolicyHandle,
} }
/*
* @implemented
*/
NTSTATUS
WINAPI
LsaOpenTrustedDomain(IN LSA_HANDLE PolicyHandle,
IN PSID TrustedDomainSid,
IN ACCESS_MASK DesiredAccess,
OUT PLSA_HANDLE TrustedDomainHandle)
{
NTSTATUS Status;
TRACE("LsaOpenTrustedDomain(%p %p 0x%08lx %p)\n",
PolicyHandle, TrustedDomainSid, DesiredAccess, TrustedDomainHandle);
RpcTryExcept
{
Status = LsarOpenTrustedDomain((LSAPR_HANDLE)PolicyHandle,
(PRPC_SID)TrustedDomainSid,
DesiredAccess,
(PLSAPR_HANDLE)TrustedDomainHandle);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
RpcEndExcept;
return Status;
}
/* /*
* @implemented * @implemented
*/ */

View file

@ -685,6 +685,7 @@ NTSTATUS NTAPI LsaCreateTrustedDomain(LSA_HANDLE, PLSA_TRUST_INFORMATION,
ACCESS_MASK,PLSA_HANDLE); ACCESS_MASK,PLSA_HANDLE);
NTSTATUS NTAPI LsaCreateTrustedDomainEx(LSA_HANDLE,PTRUSTED_DOMAIN_INFORMATION_EX, NTSTATUS NTAPI LsaCreateTrustedDomainEx(LSA_HANDLE,PTRUSTED_DOMAIN_INFORMATION_EX,
PTRUSTED_DOMAIN_AUTH_INFORMATION,ACCESS_MASK,PLSA_HANDLE); PTRUSTED_DOMAIN_AUTH_INFORMATION,ACCESS_MASK,PLSA_HANDLE);
NTSTATUS NTAPI LsaDelete(LSA_HANDLE);
NTSTATUS NTAPI LsaDeleteTrustedDomain(LSA_HANDLE,PSID); NTSTATUS NTAPI LsaDeleteTrustedDomain(LSA_HANDLE,PSID);
NTSTATUS NTAPI LsaDeregisterLogonProcess(HANDLE); NTSTATUS NTAPI LsaDeregisterLogonProcess(HANDLE);
NTSTATUS NTAPI LsaEnumerateAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING*,PULONG); NTSTATUS NTAPI LsaEnumerateAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING*,PULONG);
@ -698,6 +699,7 @@ NTSTATUS NTAPI LsaEnumerateTrustedDomainsEx(LSA_HANDLE,PLSA_ENUMERATION_HANDLE,
NTSTATUS NTAPI LsaFreeMemory(PVOID); NTSTATUS NTAPI LsaFreeMemory(PVOID);
NTSTATUS NTAPI LsaFreeReturnBuffer(PVOID); NTSTATUS NTAPI LsaFreeReturnBuffer(PVOID);
NTSTATUS NTAPI LsaGetSystemAccessAccount(LSA_HANDLE, PULONG); NTSTATUS NTAPI LsaGetSystemAccessAccount(LSA_HANDLE, PULONG);
NTSTATUS NTAPI LsaGetUserName(PUNICODE_STRING*,PUNICODE_STRING*);
NTSTATUS NTAPI LsaLogonUser(HANDLE,PLSA_STRING,SECURITY_LOGON_TYPE,ULONG,PVOID, NTSTATUS NTAPI LsaLogonUser(HANDLE,PLSA_STRING,SECURITY_LOGON_TYPE,ULONG,PVOID,
ULONG,PTOKEN_GROUPS,PTOKEN_SOURCE,PVOID*,PULONG, ULONG,PTOKEN_GROUPS,PTOKEN_SOURCE,PVOID*,PULONG,
PLUID,PHANDLE,PQUOTA_LIMITS,PNTSTATUS); PLUID,PHANDLE,PQUOTA_LIMITS,PNTSTATUS);
@ -715,6 +717,7 @@ NTSTATUS NTAPI LsaOpenAccount(LSA_HANDLE, PSID, ACCESS_MASK, PLSA_HANDLE);
NTSTATUS NTAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES, NTSTATUS NTAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,
ACCESS_MASK,PLSA_HANDLE); ACCESS_MASK,PLSA_HANDLE);
NTSTATUS NTAPI LsaOpenSecret(LSA_HANDLE, PLSA_UNICODE_STRING, ACCESS_MASK, PLSA_HANDLE); NTSTATUS NTAPI LsaOpenSecret(LSA_HANDLE, PLSA_UNICODE_STRING, ACCESS_MASK, PLSA_HANDLE);
NTSTATUS NTAPI LsaOpenTrustedDomain(LSA_HANDLE,PSID,ACCESS_MASK,PLSA_HANDLE);
NTSTATUS NTAPI LsaOpenTrustedDomainByName(LSA_HANDLE,PLSA_UNICODE_STRING, NTSTATUS NTAPI LsaOpenTrustedDomainByName(LSA_HANDLE,PLSA_UNICODE_STRING,
ACCESS_MASK,PLSA_HANDLE); ACCESS_MASK,PLSA_HANDLE);
NTSTATUS NTAPI LsaQueryDomainInformationPolicy(LSA_HANDLE, NTSTATUS NTAPI LsaQueryDomainInformationPolicy(LSA_HANDLE,