/*
* 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
*
*/
-
#include <advapi32.h>
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(advapi);
-static handle_t LSABindingHandle = NULL;
-
-static VOID
-LSAHandleUnbind(handle_t *Handle)
+/* imported from wine 1.1.14 */
+static void* ADVAPI_GetDomainName(unsigned sz, unsigned ofs)
{
- RPC_STATUS status;
+ HKEY key;
+ LONG ret;
+ BYTE* ptr = NULL;
+ UNICODE_STRING* ustr;
- if (*Handle == NULL)
- return;
+ static const WCHAR wVNETSUP[] = {
+ 'S','y','s','t','e','m','\\',
+ 'C','u','r','r','e','n','t','C','o','n','t','r','o','l','S','e','t','\\',
+ 'S','e','r','v','i','c','e','s','\\',
+ 'V','x','D','\\','V','N','E','T','S','U','P','\0'};
- status = RpcBindingFree(Handle);
- if (status)
+ ret = RegOpenKeyExW(HKEY_LOCAL_MACHINE, wVNETSUP, 0, KEY_READ, &key);
+ if (ret == ERROR_SUCCESS)
{
- TRACE("RpcBindingFree returned 0x%x\n", status);
+ DWORD size = 0;
+ static const WCHAR wg[] = { 'W','o','r','k','g','r','o','u','p',0 };
+
+ ret = RegQueryValueExW(key, wg, NULL, NULL, NULL, &size);
+ if (ret == ERROR_MORE_DATA || ret == ERROR_SUCCESS)
+ {
+ ptr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sz + size);
+ if (!ptr) return NULL;
+ ustr = (UNICODE_STRING*)(ptr + ofs);
+ ustr->MaximumLength = size;
+ ustr->Buffer = (WCHAR*)(ptr + sz);
+ ret = RegQueryValueExW(key, wg, NULL, NULL, (LPBYTE)ustr->Buffer, &size);
+ if (ret != ERROR_SUCCESS)
+ {
+ HeapFree(GetProcessHeap(), 0, ptr);
+ ptr = NULL;
+ }
+ else ustr->Length = size - sizeof(WCHAR);
+ }
+ RegCloseKey(key);
}
+ if (!ptr)
+ {
+ static const WCHAR wDomain[] = {'D','O','M','A','I','N','\0'};
+ ptr = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
+ sz + sizeof(wDomain));
+ if (!ptr) return NULL;
+ ustr = (UNICODE_STRING*)(ptr + ofs);
+ ustr->MaximumLength = sizeof(wDomain);
+ ustr->Buffer = (WCHAR*)(ptr + sz);
+ ustr->Length = sizeof(wDomain) - sizeof(WCHAR);
+ memcpy(ustr->Buffer, wDomain, sizeof(wDomain));
+ }
+ return ptr;
}
-static VOID
-LSAHandleBind(VOID)
+handle_t __RPC_USER
+PLSAPR_SERVER_NAME_bind(PLSAPR_SERVER_NAME pszSystemName)
{
+ handle_t hBinding = NULL;
LPWSTR pszStringBinding;
RPC_STATUS status;
- handle_t Handle;
- if (LSABindingHandle != NULL)
- return;
+ TRACE("PLSAPR_SERVER_NAME_bind() called\n");
status = RpcStringBindingComposeW(NULL,
L"ncacn_np",
- NULL,
+ pszSystemName,
L"\\pipe\\lsarpc",
NULL,
&pszStringBinding);
if (status)
{
TRACE("RpcStringBindingCompose returned 0x%x\n", status);
- return;
+ return NULL;
}
/* Set the binding handle that will be used to bind to the server. */
status = RpcBindingFromStringBindingW(pszStringBinding,
- &Handle);
+ &hBinding);
if (status)
{
TRACE("RpcBindingFromStringBinding returned 0x%x\n", status);
TRACE("RpcStringFree returned 0x%x\n", status);
}
- if (InterlockedCompareExchangePointer(&LSABindingHandle,
- (PVOID)Handle,
- NULL) != NULL)
+ return hBinding;
+}
+
+
+void __RPC_USER
+PLSAPR_SERVER_NAME_unbind(PLSAPR_SERVER_NAME pszSystemName,
+ handle_t hBinding)
+{
+ RPC_STATUS status;
+
+ TRACE("PLSAPR_SERVER_NAME_unbind() called\n");
+
+ status = RpcBindingFree(&hBinding);
+ if (status)
{
- LSAHandleUnbind(&Handle);
+ TRACE("RpcBindingFree returned 0x%x\n", status);
}
}
/*
* @implemented
*/
-NTSTATUS STDCALL
+NTSTATUS WINAPI
LsaClose(LSA_HANDLE ObjectHandle)
{
+ NTSTATUS Status;
+
TRACE("LsaClose(0x%p) called\n", ObjectHandle);
- LSAHandleBind();
+ RpcTryExcept
+ {
+ Status = LsarClose((PLSAPR_HANDLE)&ObjectHandle);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Status = I_RpcMapWin32Status(RpcExceptionCode());
+ }
+ RpcEndExcept;
- return LsarClose(LSABindingHandle,
- (unsigned long)ObjectHandle);
+ return Status;
}
/*
* @implemented
*/
-NTSTATUS STDCALL
+NTSTATUS WINAPI
LsaDelete(LSA_HANDLE ObjectHandle)
{
+ NTSTATUS Status;
+
TRACE("LsaDelete(0x%p) called\n", ObjectHandle);
- LSAHandleBind();
+ RpcTryExcept
+ {
+ Status = LsarDelete((LSAPR_HANDLE)ObjectHandle);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Status = I_RpcMapWin32Status(RpcExceptionCode());
+ }
+ RpcEndExcept;
- return LsarDelete(LSABindingHandle,
- (unsigned long)ObjectHandle);
+ return Status;
}
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaAddAccountRights(
LSA_HANDLE PolicyHandle,
PSID AccountSid,
PLSA_UNICODE_STRING UserRights,
ULONG CountOfRights)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,%p,0x%08x) stub\n", PolicyHandle, AccountSid, UserRights, CountOfRights);
+ return STATUS_OBJECT_NAME_NOT_FOUND;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaCreateTrustedDomainEx(
LSA_HANDLE PolicyHandle,
PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
ACCESS_MASK DesiredAccess,
PLSA_HANDLE TrustedDomainHandle)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,%p,0x%08x,%p) stub\n", PolicyHandle, TrustedDomainInformation, AuthenticationInformation,
+ DesiredAccess, TrustedDomainHandle);
+ return STATUS_NOT_IMPLEMENTED;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaDeleteTrustedDomain(
LSA_HANDLE PolicyHandle,
PSID TrustedDomainSid)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p) stub\n", PolicyHandle, TrustedDomainSid);
+ return STATUS_SUCCESS;
}
/*
- * @unimplemented
+ * @implemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaEnumerateAccountRights(
LSA_HANDLE PolicyHandle,
PSID AccountSid,
PLSA_UNICODE_STRING *UserRights,
PULONG 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;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaEnumerateAccountsWithUserRight(
LSA_HANDLE PolicyHandle,
OPTIONAL PLSA_UNICODE_STRING UserRights,
PVOID *EnumerationBuffer,
PULONG CountReturned)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,%p,%p) stub\n", PolicyHandle, UserRights, EnumerationBuffer, CountReturned);
+ return STATUS_NO_MORE_ENTRIES;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaEnumerateTrustedDomains(
LSA_HANDLE PolicyHandle,
PLSA_ENUMERATION_HANDLE EnumerationContext,
ULONG PreferedMaximumLength,
PULONG CountReturned)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,%p,0x%08x,%p) stub\n", PolicyHandle, EnumerationContext,
+ Buffer, PreferedMaximumLength, CountReturned);
+
+ if (CountReturned) *CountReturned = 0;
+ return STATUS_SUCCESS;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaEnumerateTrustedDomainsEx(
LSA_HANDLE PolicyHandle,
PLSA_ENUMERATION_HANDLE EnumerationContext,
ULONG PreferedMaximumLength,
PULONG CountReturned)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,%p,0x%08x,%p) stub\n", PolicyHandle, EnumerationContext, Buffer,
+ PreferedMaximumLength, CountReturned);
+ if (CountReturned) *CountReturned = 0;
+ return STATUS_SUCCESS;
}
/*
* @implemented
*/
-NTSTATUS STDCALL
+NTSTATUS
+WINAPI
LsaFreeMemory(PVOID Buffer)
{
- return RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer);
+ TRACE("(%p)\n", Buffer);
+ return RtlFreeHeap(RtlGetProcessHeap(), 0, Buffer);
}
/*
ULONG i;
NTSTATUS Status;
+ TRACE("(%p,0x%08x,%p,%p,%p)\n", PolicyHandle, Count, Names,
+ ReferencedDomains, Sids);
+
/* Call LsaLookupNames2, which supersedes this function */
Status = LsaLookupNames2(PolicyHandle, Count, 0, Names, ReferencedDomains, &Sids2);
if (!NT_SUCCESS(Status))
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaLookupNames2(
LSA_HANDLE PolicyHandle,
ULONG Flags,
PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
PLSA_TRANSLATED_SID2 *Sids)
{
- return STATUS_NOT_IMPLEMENTED;
+ 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_REFERENCED_DOMAIN_LIST LocalDomains;
PLSA_TRANSLATED_NAME LocalNames;
+ TRACE("(%p,%u,%p,%p,%p) stub\n", PolicyHandle, Count, Sids,
+ ReferencedDomains, Names);
+
WARN("LsaLookupSids(): stub. Always returning 'Administrator'\n");
if (Count != 1)
return STATUS_NONE_MAPPED;
*
* @implemented
*/
-ULONG STDCALL
+ULONG WINAPI
LsaNtStatusToWinError(NTSTATUS Status)
{
- return RtlNtStatusToDosError(Status);
+ TRACE("(%lx)\n", Status);
+ return RtlNtStatusToDosError(Status);
}
/******************************************************************************
*
* @unimplemented
*/
-NTSTATUS STDCALL
-LsaOpenPolicy(PLSA_UNICODE_STRING lsaucs,
- PLSA_OBJECT_ATTRIBUTES lsaoa,
- ACCESS_MASK access,
- PLSA_HANDLE PolicyHandle)
+NTSTATUS
+WINAPI
+LsaOpenPolicy(
+ IN PLSA_UNICODE_STRING SystemName,
+ IN PLSA_OBJECT_ATTRIBUTES ObjectAttributes,
+ IN ACCESS_MASK DesiredAccess,
+ IN OUT PLSA_HANDLE PolicyHandle)
{
- static int count = 0;
- if (count++ < 20)
- {
- FIXME("%s() not implemented!\n", __FUNCTION__);
- }
- return STATUS_SUCCESS;
+ NTSTATUS Status;
+
+ TRACE("LsaOpenPolicy (%s,%p,0x%08x,%p)\n",
+ SystemName ? debugstr_w(SystemName->Buffer) : "(null)",
+ ObjectAttributes, DesiredAccess, PolicyHandle);
+
+ RpcTryExcept
+ {
+ *PolicyHandle = NULL;
+
+ Status = LsarOpenPolicy(SystemName ? SystemName->Buffer : NULL,
+ (PLSAPR_OBJECT_ATTRIBUTES)ObjectAttributes,
+ DesiredAccess,
+ PolicyHandle);
+ }
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
+ {
+ Status = I_RpcMapWin32Status(RpcExceptionCode());
+ }
+ RpcEndExcept;
+
+ TRACE("LsaOpenPolicy() done (Status: 0x%08lx)\n", Status);
+
+ return Status;
}
+
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaOpenTrustedDomainByName(
LSA_HANDLE PolicyHandle,
PLSA_UNICODE_STRING TrustedDomainName,
ACCESS_MASK DesiredAccess,
PLSA_HANDLE TrustedDomainHandle)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,0x%08x,%p) stub\n", PolicyHandle, TrustedDomainName, DesiredAccess, TrustedDomainHandle);
+ return STATUS_OBJECT_NAME_NOT_FOUND;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaQueryDomainInformationPolicy(
LSA_HANDLE PolicyHandle,
- POLICY_DOMAIN_INFORMATION_CLASS pic,
+ POLICY_DOMAIN_INFORMATION_CLASS InformationClass,
PVOID *Buffer)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,0x%08x,%p)\n", PolicyHandle, InformationClass, Buffer);
+ return STATUS_NOT_IMPLEMENTED;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaQueryForestTrustInformation(
LSA_HANDLE PolicyHandle,
PLSA_UNICODE_STRING TrustedDomainName,
PLSA_FOREST_TRUST_INFORMATION * ForestTrustInfo)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,%p) stub\n", PolicyHandle, TrustedDomainName, ForestTrustInfo);
+ return STATUS_NOT_IMPLEMENTED;
}
/*
* @unimplemented
*/
-NTSTATUS STDCALL
+NTSTATUS WINAPI
LsaQueryInformationPolicy(LSA_HANDLE PolicyHandle,
- POLICY_INFORMATION_CLASS pic,
- PVOID *Buffer)
-{
- TRACE("(%p,0x%08x,%p):LsaQueryInformationPolicy stub\n",
- PolicyHandle, pic, Buffer);
-
- if (!Buffer)
- return FALSE;
-
- switch (pic)
- {
- case PolicyAuditEventsInformation: /* 2 */
- {
- PPOLICY_AUDIT_EVENTS_INFO p = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(POLICY_AUDIT_EVENTS_INFO));
- p->AuditingMode = FALSE; /* no auditing */
- *Buffer = p;
- }
- break;
- case PolicyPrimaryDomainInformation: /* 3 */
- case PolicyAccountDomainInformation: /* 5 */
- {
- struct di
- { POLICY_PRIMARY_DOMAIN_INFO ppdi;
- SID sid;
- };
- SID_IDENTIFIER_AUTHORITY localSidAuthority = {SECURITY_NT_AUTHORITY};
-
- struct di * xdi = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(xdi));
- HKEY key;
- BOOL useDefault = TRUE;
- LONG ret;
-
- if ((ret = RegOpenKeyExA(HKEY_LOCAL_MACHINE,
- "System\\CurrentControlSet\\Services\\VxD\\VNETSUP", 0,
- KEY_READ, &key)) == ERROR_SUCCESS)
- {
- DWORD size = 0;
- WCHAR wg[] = { 'W','o','r','k','g','r','o','u','p',0 };
-
- ret = RegQueryValueExW(key, wg, NULL, NULL, NULL, &size);
- if (ret == ERROR_MORE_DATA || ret == ERROR_SUCCESS)
- {
- xdi->ppdi.Name.Buffer = RtlAllocateHeap(RtlGetProcessHeap(),
- HEAP_ZERO_MEMORY, size);
- if ((ret = RegQueryValueExW(key, wg, NULL, NULL,
- (LPBYTE)xdi->ppdi.Name.Buffer, &size)) == ERROR_SUCCESS)
- {
- xdi->ppdi.Name.Length = (USHORT)size;
- useDefault = FALSE;
- }
- else
- {
- RtlFreeHeap(RtlGetProcessHeap(), 0, xdi->ppdi.Name.Buffer);
- xdi->ppdi.Name.Buffer = NULL;
- }
- }
- RegCloseKey(key);
- }
- if (useDefault)
- RtlCreateUnicodeStringFromAsciiz(&(xdi->ppdi.Name), "DOMAIN");
- TRACE("setting domain to \n");
-
- xdi->ppdi.Sid = &(xdi->sid);
- xdi->sid.Revision = SID_REVISION;
- xdi->sid.SubAuthorityCount = 1;
- xdi->sid.IdentifierAuthority = localSidAuthority;
- xdi->sid.SubAuthority[0] = SECURITY_LOCAL_SYSTEM_RID;
- *Buffer = xdi;
- }
- break;
- case PolicyAuditLogInformation:
- case PolicyPdAccountInformation:
- case PolicyLsaServerRoleInformation:
- case PolicyReplicaSourceInformation:
- case PolicyDefaultQuotaInformation:
- case PolicyModificationInformation:
- case PolicyAuditFullSetInformation:
- case PolicyAuditFullQueryInformation:
- case PolicyDnsDomainInformation:
- case PolicyEfsInformation:
- {
- FIXME("category not implemented\n");
- return FALSE;
- }
- }
- return TRUE;
+ POLICY_INFORMATION_CLASS InformationClass,
+ PVOID *Buffer)
+{
+ TRACE("(%p,0x%08x,%p)\n", PolicyHandle, InformationClass, Buffer);
+
+ if(!Buffer) return STATUS_INVALID_PARAMETER;
+ switch (InformationClass)
+ {
+ case PolicyAuditEventsInformation: /* 2 */
+ {
+ PPOLICY_AUDIT_EVENTS_INFO p = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY,
+ sizeof(POLICY_AUDIT_EVENTS_INFO));
+ p->AuditingMode = FALSE; /* no auditing */
+ *Buffer = p;
+ }
+ break;
+ case PolicyPrimaryDomainInformation: /* 3 */
+ {
+ /* Only the domain name is valid for the local computer.
+ * All other fields are zero.
+ */
+ PPOLICY_PRIMARY_DOMAIN_INFO pinfo;
+
+ pinfo = ADVAPI_GetDomainName(sizeof(*pinfo), offsetof(POLICY_PRIMARY_DOMAIN_INFO, Name));
+
+ TRACE("setting domain to %s\n", debugstr_w(pinfo->Name.Buffer));
+
+ *Buffer = pinfo;
+ }
+ case PolicyAccountDomainInformation: /* 5 */
+ {
+ struct di
+ {
+ POLICY_ACCOUNT_DOMAIN_INFO info;
+ SID sid;
+ DWORD padding[3];
+ WCHAR domain[MAX_COMPUTERNAME_LENGTH + 1];
+ };
+ SID_IDENTIFIER_AUTHORITY localSidAuthority = {SECURITY_NT_AUTHORITY};
+
+ DWORD dwSize = MAX_COMPUTERNAME_LENGTH + 1;
+ struct di * xdi = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*xdi));
+
+ xdi->info.DomainName.MaximumLength = dwSize * sizeof(WCHAR);
+ xdi->info.DomainName.Buffer = xdi->domain;
+ if (GetComputerNameW(xdi->info.DomainName.Buffer, &dwSize))
+ xdi->info.DomainName.Length = dwSize * sizeof(WCHAR);
+
+ TRACE("setting name to %s\n", debugstr_w(xdi->info.DomainName.Buffer));
+
+ xdi->info.DomainSid = &xdi->sid;
+ xdi->sid.Revision = SID_REVISION;
+ xdi->sid.SubAuthorityCount = 1;
+ xdi->sid.IdentifierAuthority = localSidAuthority;
+ xdi->sid.SubAuthority[0] = SECURITY_LOCAL_SYSTEM_RID;
+
+ *Buffer = xdi;
+ }
+ break;
+ case PolicyDnsDomainInformation: /* 12 (0xc) */
+ {
+ /* Only the domain name is valid for the local computer.
+ * All other fields are zero.
+ */
+ PPOLICY_DNS_DOMAIN_INFO pinfo;
+
+ pinfo = ADVAPI_GetDomainName(sizeof(*pinfo), offsetof(POLICY_DNS_DOMAIN_INFO, Name));
+
+ TRACE("setting domain to %s\n", debugstr_w(pinfo->Name.Buffer));
+
+ *Buffer = pinfo;
+ }
+ break;
+ case PolicyAuditLogInformation:
+ case PolicyPdAccountInformation:
+ case PolicyLsaServerRoleInformation:
+ case PolicyReplicaSourceInformation:
+ case PolicyDefaultQuotaInformation:
+ case PolicyModificationInformation:
+ case PolicyAuditFullSetInformation:
+ case PolicyAuditFullQueryInformation:
+ case PolicyEfsInformation:
+ {
+ FIXME("category not implemented\n");
+ return STATUS_UNSUCCESSFUL;
+ }
+ }
+ return STATUS_SUCCESS;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaQueryTrustedDomainInfoByName(
LSA_HANDLE PolicyHandle,
PLSA_UNICODE_STRING TrustedDomainName,
- TRUSTED_INFORMATION_CLASS pic,
+ TRUSTED_INFORMATION_CLASS InformationClass,
PVOID *Buffer)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,%d,%p) stub\n", PolicyHandle, TrustedDomainName, InformationClass, Buffer);
+ return STATUS_OBJECT_NAME_NOT_FOUND;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaQueryTrustedDomainInfo(
LSA_HANDLE PolicyHandle,
PSID TrustedDomainSid,
- TRUSTED_INFORMATION_CLASS pic,
+ TRUSTED_INFORMATION_CLASS InformationClass,
PVOID *Buffer)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,%d,%p) stub\n", PolicyHandle, TrustedDomainSid, InformationClass, Buffer);
+ return STATUS_OBJECT_NAME_NOT_FOUND;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaRemoveAccountRights(
LSA_HANDLE PolicyHandle,
PSID AccountSid,
PLSA_UNICODE_STRING UserRights,
ULONG CountOfRights)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,%d,%p,0x%08x) stub\n", PolicyHandle, AccountSid, AllRights, UserRights, CountOfRights);
+ return STATUS_SUCCESS;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaRetrievePrivateData(
LSA_HANDLE PolicyHandle,
PLSA_UNICODE_STRING KeyName,
PLSA_UNICODE_STRING *PrivateData)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,%p) stub\n", PolicyHandle, KeyName, PrivateData);
+ return STATUS_NOT_IMPLEMENTED;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaSetDomainInformationPolicy(
LSA_HANDLE PolicyHandle,
- POLICY_DOMAIN_INFORMATION_CLASS pic,
+ POLICY_DOMAIN_INFORMATION_CLASS InformationClass,
PVOID Buffer)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,0x%08x,%p) stub\n", PolicyHandle, InformationClass, Buffer);
+ return STATUS_NOT_IMPLEMENTED;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaSetInformationPolicy(
LSA_HANDLE PolicyHandle,
- POLICY_INFORMATION_CLASS pic,
+ POLICY_INFORMATION_CLASS InformationClass,
PVOID Buffer)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,0x%08x,%p) stub\n", PolicyHandle, InformationClass, Buffer);
+ return STATUS_UNSUCCESSFUL;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaSetForestTrustInformation(
LSA_HANDLE PolicyHandle,
PLSA_UNICODE_STRING TrustedDomainName,
BOOL CheckOnly,
PLSA_FOREST_TRUST_COLLISION_INFORMATION *CollisionInfo)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,%p,%d,%p) stub\n", PolicyHandle, TrustedDomainName, ForestTrustInfo, CheckOnly, CollisionInfo);
+ return STATUS_NOT_IMPLEMENTED;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaSetTrustedDomainInfoByName(
LSA_HANDLE PolicyHandle,
PLSA_UNICODE_STRING TrustedDomainName,
- TRUSTED_INFORMATION_CLASS pic,
+ TRUSTED_INFORMATION_CLASS InformationClass,
PVOID Buffer)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,%d,%p) stub\n", PolicyHandle, TrustedDomainName, InformationClass, Buffer);
+ return STATUS_SUCCESS;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaSetTrustedDomainInformation(
LSA_HANDLE PolicyHandle,
PSID TrustedDomainSid,
- TRUSTED_INFORMATION_CLASS pic,
+ TRUSTED_INFORMATION_CLASS InformationClass,
PVOID Buffer)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,%d,%p) stub\n", PolicyHandle, TrustedDomainSid, InformationClass, Buffer);
+ return STATUS_SUCCESS;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaStorePrivateData(
LSA_HANDLE PolicyHandle,
PLSA_UNICODE_STRING KeyName,
PLSA_UNICODE_STRING PrivateData)
{
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p,%p) stub\n", PolicyHandle, KeyName, PrivateData);
+ return STATUS_OBJECT_NAME_NOT_FOUND;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaGetUserName(
PUNICODE_STRING *UserName,
PUNICODE_STRING *DomainName)
{
- FIXME("%s() not implemented!\n", __FUNCTION__);
-
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%p,%p) stub\n", UserName, DomainName);
+ return STATUS_NOT_IMPLEMENTED;
}
/*
* @unimplemented
*/
NTSTATUS
-STDCALL
+WINAPI
LsaQueryInfoTrustedDomain (DWORD Unknonw0,
DWORD Unknonw1,
DWORD Unknonw2)
{
- FIXME("%s() not implemented!\n", __FUNCTION__);;
-
- return STATUS_NOT_IMPLEMENTED;
+ FIXME("(%d,%d,%d) stub\n", Unknonw0, Unknonw1, Unknonw2);
+ return STATUS_NOT_IMPLEMENTED;
}