[ADVAPI32]

Implement LsaAddPrivilegesToAccount(), LsaCreateTrustedDomain(), LsaDeleteTrustedDomain() and LsaOpenTrustedDomainByName().

svn path=/trunk/; revision=49174
This commit is contained in:
Eric Kohl 2010-10-16 16:26:52 +00:00
parent 36edd7ee75
commit eccf8af929
3 changed files with 133 additions and 40 deletions

View file

@ -345,12 +345,12 @@
@ stub LookupSecurityDescriptorPartsA @ stub LookupSecurityDescriptorPartsA
@ stub LookupSecurityDescriptorPartsW @ stub LookupSecurityDescriptorPartsW
@ stdcall LsaAddAccountRights(ptr ptr ptr long) @ stdcall LsaAddAccountRights(ptr ptr ptr long)
@ stub LsaAddPrivilegesToAccount @ stdcall LsaAddPrivilegesToAccount(ptr ptr)
@ stub LsaClearAuditLog @ stub LsaClearAuditLog
@ stdcall LsaClose(ptr) @ stdcall LsaClose(ptr)
@ stdcall LsaCreateAccount(ptr ptr long ptr) @ stdcall LsaCreateAccount(ptr ptr long ptr)
@ stub LsaCreateSecret @ stub LsaCreateSecret
@ stub LsaCreateTrustedDomain @ stdcall LsaCreateTrustedDomain(ptr ptr long ptr)
@ stdcall LsaCreateTrustedDomainEx(ptr ptr ptr long ptr) @ stdcall LsaCreateTrustedDomainEx(ptr ptr ptr long ptr)
@ stdcall LsaDelete(ptr) @ stdcall LsaDelete(ptr)
@ stdcall LsaDeleteTrustedDomain(ptr ptr) @ stdcall LsaDeleteTrustedDomain(ptr ptr)
@ -395,10 +395,9 @@
@ stdcall LsaRemoveAccountRights(ptr ptr long ptr long) @ stdcall LsaRemoveAccountRights(ptr ptr long ptr long)
@ stub LsaRemovePrivilegesFromAccount @ stub LsaRemovePrivilegesFromAccount
@ stdcall LsaRetrievePrivateData(ptr ptr ptr) @ stdcall LsaRetrievePrivateData(ptr ptr ptr)
# @ stub LsaSetDomainInformationPolicy @ stdcall LsaSetDomainInformationPolicy(ptr long ptr)
# @ stub LsaSetForestTrustInformation
@ stdcall LsaSetInformationPolicy(long long ptr)
@ stub LsaSetForestTrustInformation @ stub LsaSetForestTrustInformation
@ stdcall LsaSetInformationPolicy(long long ptr)
@ stub LsaSetInformationTrustedDomain @ stub LsaSetInformationTrustedDomain
@ stub LsaSetQuotasForAccount @ stub LsaSetQuotasForAccount
@ stdcall LsaSetSecret(ptr ptr ptr) @ stdcall LsaSetSecret(ptr ptr ptr)

View file

@ -95,8 +95,9 @@ PLSAPR_SERVER_NAME_unbind(PLSAPR_SERVER_NAME pszSystemName,
/* /*
* @implemented * @implemented
*/ */
NTSTATUS WINAPI NTSTATUS
LsaClose(LSA_HANDLE ObjectHandle) WINAPI
LsaClose(IN LSA_HANDLE ObjectHandle)
{ {
NTSTATUS Status; NTSTATUS Status;
@ -119,8 +120,9 @@ LsaClose(LSA_HANDLE ObjectHandle)
/* /*
* @implemented * @implemented
*/ */
NTSTATUS WINAPI NTSTATUS
LsaDelete(LSA_HANDLE ObjectHandle) WINAPI
LsaDelete(IN LSA_HANDLE ObjectHandle)
{ {
NTSTATUS Status; NTSTATUS Status;
@ -156,6 +158,33 @@ LsaAddAccountRights(
} }
/*
* @implemented
*/
NTSTATUS
WINAPI
LsaAddPrivilegesToAccount(IN LSA_HANDLE AccountHandle,
IN PPRIVILEGE_SET PrivilegeSet)
{
NTSTATUS Status;
TRACE("(%p,%p) stub\n", AccountHandle, PrivilegeSet);
RpcTryExcept
{
Status = LsarAddPrivilegesToAccount((LSAPR_HANDLE)AccountHandle,
(PLSAPR_PRIVILEGE_SET)PrivilegeSet);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
RpcEndExcept;
return Status;
}
/* /*
* @implemented * @implemented
*/ */
@ -164,7 +193,7 @@ WINAPI
LsaCreateAccount(IN LSA_HANDLE PolicyHandle, LsaCreateAccount(IN LSA_HANDLE PolicyHandle,
IN PSID AccountSid, IN PSID AccountSid,
IN ULONG Flags, IN ULONG Flags,
IN OUT PLSA_HANDLE AccountHandle) OUT PLSA_HANDLE AccountHandle)
{ {
NTSTATUS Status; NTSTATUS Status;
@ -187,6 +216,38 @@ LsaCreateAccount(IN LSA_HANDLE PolicyHandle,
} }
/*
* @implemented
*/
NTSTATUS
WINAPI
LsaCreateTrustedDomain(IN LSA_HANDLE PolicyHandle,
IN PLSA_TRUST_INFORMATION TrustedDomainInformation,
IN ACCESS_MASK DesiredAccess,
OUT PLSA_HANDLE TrustedDomainHandle)
{
NTSTATUS Status;
TRACE("(%p,%p,0x%08x,%p)\n", PolicyHandle, TrustedDomainInformation,
DesiredAccess, TrustedDomainHandle);
RpcTryExcept
{
Status = LsarCreateTrustedDomain((LSAPR_HANDLE)PolicyHandle,
(PLSAPR_TRUST_INFORMATION)TrustedDomainInformation,
DesiredAccess,
(PLSAPR_HANDLE)TrustedDomainHandle);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
RpcEndExcept;
return Status;
}
/* /*
* @unimplemented * @unimplemented
*/ */
@ -205,16 +266,29 @@ LsaCreateTrustedDomainEx(
} }
/* /*
* @unimplemented * @implemented
*/ */
NTSTATUS NTSTATUS
WINAPI WINAPI
LsaDeleteTrustedDomain( LsaDeleteTrustedDomain(IN LSA_HANDLE PolicyHandle,
LSA_HANDLE PolicyHandle, IN PSID TrustedDomainSid)
PSID TrustedDomainSid)
{ {
FIXME("(%p,%p) stub\n", PolicyHandle, TrustedDomainSid); NTSTATUS Status;
return STATUS_SUCCESS;
TRACE("(%p,%p)\n", PolicyHandle, TrustedDomainSid);
RpcTryExcept
{
Status = LsarDeleteTrustedDomain((LSAPR_HANDLE)PolicyHandle,
TrustedDomainSid);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
RpcEndExcept;
return Status;
} }
/* /*
@ -526,7 +600,7 @@ LsaLookupSids(IN LSA_HANDLE PolicyHandle,
* @implemented * @implemented
*/ */
ULONG WINAPI ULONG WINAPI
LsaNtStatusToWinError(NTSTATUS Status) LsaNtStatusToWinError(IN NTSTATUS Status)
{ {
TRACE("(%lx)\n", Status); TRACE("(%lx)\n", Status);
return RtlNtStatusToDosError(Status); return RtlNtStatusToDosError(Status);
@ -541,7 +615,7 @@ WINAPI
LsaOpenAccount(IN LSA_HANDLE PolicyHandle, LsaOpenAccount(IN LSA_HANDLE PolicyHandle,
IN PSID AccountSid, IN PSID AccountSid,
IN ULONG Flags, IN ULONG Flags,
IN OUT PLSA_HANDLE AccountHandle) OUT PLSA_HANDLE AccountHandle)
{ {
NTSTATUS Status; NTSTATUS Status;
@ -573,15 +647,14 @@ LsaOpenAccount(IN LSA_HANDLE PolicyHandle,
* x3 [] * x3 []
* x4 [] * x4 []
* *
* @unimplemented * @implemented
*/ */
NTSTATUS NTSTATUS
WINAPI WINAPI
LsaOpenPolicy( LsaOpenPolicy(IN PLSA_UNICODE_STRING SystemName,
IN PLSA_UNICODE_STRING SystemName, IN PLSA_OBJECT_ATTRIBUTES ObjectAttributes,
IN PLSA_OBJECT_ATTRIBUTES ObjectAttributes, IN ACCESS_MASK DesiredAccess,
IN ACCESS_MASK DesiredAccess, OUT PLSA_HANDLE PolicyHandle)
IN OUT PLSA_HANDLE PolicyHandle)
{ {
NTSTATUS Status; NTSTATUS Status;
@ -615,20 +688,37 @@ LsaOpenPolicy(
/* /*
* @unimplemented * @implemented
*/ */
NTSTATUS NTSTATUS
WINAPI WINAPI
LsaOpenTrustedDomainByName( LsaOpenTrustedDomainByName(IN LSA_HANDLE PolicyHandle,
LSA_HANDLE PolicyHandle, IN PLSA_UNICODE_STRING TrustedDomainName,
PLSA_UNICODE_STRING TrustedDomainName, IN ACCESS_MASK DesiredAccess,
ACCESS_MASK DesiredAccess, OUT PLSA_HANDLE TrustedDomainHandle)
PLSA_HANDLE TrustedDomainHandle)
{ {
FIXME("(%p,%p,0x%08x,%p) stub\n", PolicyHandle, TrustedDomainName, DesiredAccess, TrustedDomainHandle); NTSTATUS Status;
return STATUS_OBJECT_NAME_NOT_FOUND;
TRACE("(%p,%p,0x%08x,%p)\n", PolicyHandle, TrustedDomainName,
DesiredAccess, TrustedDomainHandle);
RpcTryExcept
{
Status = LsarOpenTrustedDomainByName((LSAPR_HANDLE)PolicyHandle,
(PRPC_UNICODE_STRING)TrustedDomainName,
DesiredAccess,
TrustedDomainHandle);
}
RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
RpcEndExcept;
return Status;
} }
/* /*
* @unimplemented * @unimplemented
*/ */
@ -660,10 +750,11 @@ LsaQueryForestTrustInformation(
/* /*
* @implemented * @implemented
*/ */
NTSTATUS WINAPI NTSTATUS
LsaQueryInformationPolicy(LSA_HANDLE PolicyHandle, WINAPI
POLICY_INFORMATION_CLASS InformationClass, LsaQueryInformationPolicy(IN LSA_HANDLE PolicyHandle,
PVOID *Buffer) IN POLICY_INFORMATION_CLASS InformationClass,
OUT PVOID *Buffer)
{ {
PLSAPR_POLICY_INFORMATION PolicyInformation = NULL; PLSAPR_POLICY_INFORMATION PolicyInformation = NULL;
NTSTATUS Status; NTSTATUS Status;

View file

@ -671,15 +671,16 @@ typedef struct _TRUSTED_DOMAIN_FULL_INFORMATION {
BOOLEAN WINAPI RtlGenRandom(PVOID,ULONG); BOOLEAN WINAPI RtlGenRandom(PVOID,ULONG);
NTSTATUS NTAPI LsaAddAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING,ULONG); NTSTATUS NTAPI LsaAddAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING,ULONG);
NTSTATUS NTAPI LsaAddPrivilegesToAccount(LSA_HANDLE, PPRIVILEGE_SET);
NTSTATUS NTAPI LsaCallAuthenticationPackage(HANDLE,ULONG,PVOID,ULONG,PVOID*, NTSTATUS NTAPI LsaCallAuthenticationPackage(HANDLE,ULONG,PVOID,ULONG,PVOID*,
PULONG,PNTSTATUS); PULONG,PNTSTATUS);
NTSTATUS NTAPI LsaClose(LSA_HANDLE); NTSTATUS NTAPI LsaClose(LSA_HANDLE);
NTSTATUS NTAPI LsaConnectUntrusted(PHANDLE); NTSTATUS NTAPI LsaConnectUntrusted(PHANDLE);
NTSTATUS NTAPI LsaCreateAccount(LSA_HANDLE, PSID, ULONG, PLSA_HANDLE); NTSTATUS NTAPI LsaCreateAccount(LSA_HANDLE, PSID, ULONG, PLSA_HANDLE);
NTSTATUS NTAPI LsaCreateTrustedDomainEx(LSA_HANDLE, NTSTATUS NTAPI LsaCreateTrustedDomain(LSA_HANDLE, PLSA_TRUST_INFORMATION,
PTRUSTED_DOMAIN_INFORMATION_EX, ACCESS_MASK, PLSA_HANDLE);
PTRUSTED_DOMAIN_AUTH_INFORMATION,ACCESS_MASK, NTSTATUS NTAPI LsaCreateTrustedDomainEx(LSA_HANDLE, PTRUSTED_DOMAIN_INFORMATION_EX,
PLSA_HANDLE); PTRUSTED_DOMAIN_AUTH_INFORMATION, ACCESS_MASK, PLSA_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);
@ -707,6 +708,8 @@ ULONG NTAPI LsaNtStatusToWinError(NTSTATUS);
NTSTATUS NTAPI LsaOpenAccount(LSA_HANDLE, PSID, ULONG, PLSA_HANDLE); NTSTATUS NTAPI LsaOpenAccount(LSA_HANDLE, PSID, ULONG, 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 LsaOpenTrustedDomainByName(LSA_HANDLE, PLSA_UNICODE_STRING,
ACCESS_MASK, PLSA_HANDLE);
NTSTATUS NTAPI LsaQueryDomainInformationPolicy(LSA_HANDLE, NTSTATUS NTAPI LsaQueryDomainInformationPolicy(LSA_HANDLE,
POLICY_DOMAIN_INFORMATION_CLASS,PVOID*); POLICY_DOMAIN_INFORMATION_CLASS,PVOID*);
NTSTATUS NTAPI LsaQueryInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID*); NTSTATUS NTAPI LsaQueryInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID*);