Simplify the policy handle creation and destruction. This fixes two winetest failures.
[reactos.git] / reactos / dll / win32 / lsasrv / lsarpc.c
index b0d51b3..d2a3644 100644 (file)
 
 #include <wine/debug.h>
 
-#define POLICY_DELETE (RTL_HANDLE_VALID << 1)
-typedef struct _LSAR_POLICY_HANDLE
+typedef struct _LSA_DB_HANDLE
 {
-    ULONG Flags;
+    ULONG Signature;
+    ULONG Type;
     LONG RefCount;
     ACCESS_MASK AccessGranted;
-} LSAR_POLICY_HANDLE, *PLSAR_POLICY_HANDLE;
+} LSA_DB_HANDLE, *PLSA_DB_HANDLE;
+
+#define LSAP_DB_SIGNATURE 0x12345678
 
 static RTL_CRITICAL_SECTION PolicyHandleTableLock;
-static RTL_HANDLE_TABLE PolicyHandleTable;
 
 WINE_DEFAULT_DEBUG_CHANNEL(lsasrv);
 
+
 /* FUNCTIONS ***************************************************************/
 
-/*static*/ NTSTATUS
-ReferencePolicyHandle(IN LSAPR_HANDLE ObjectHandle,
-                      IN ACCESS_MASK DesiredAccess,
-                      OUT PLSAR_POLICY_HANDLE *Policy)
+static LSAPR_HANDLE
+LsapCreateDbHandle(ULONG Type)
 {
-    PLSAR_POLICY_HANDLE ReferencedPolicy;
-    NTSTATUS Status = STATUS_SUCCESS;
+    PLSA_DB_HANDLE DbHandle;
 
-    RtlEnterCriticalSection(&PolicyHandleTableLock);
+//    RtlEnterCriticalSection(&PolicyHandleTableLock);
 
-    if (RtlIsValidIndexHandle(&PolicyHandleTable,
-                              (ULONG)ObjectHandle,
-                              (PRTL_HANDLE_TABLE_ENTRY*)&ReferencedPolicy) &&
-        !(ReferencedPolicy->Flags & POLICY_DELETE))
+    DbHandle = (PLSA_DB_HANDLE)RtlAllocateHeap(RtlGetProcessHeap(),
+                                               0,
+                                               sizeof(LSA_DB_HANDLE));
+    if (DbHandle != NULL)
     {
-        if (RtlAreAllAccessesGranted(ReferencedPolicy->AccessGranted,
-                                     DesiredAccess))
-        {
-            ReferencedPolicy->RefCount++;
-            *Policy = ReferencedPolicy;
-        }
-        else
-            Status = STATUS_ACCESS_DENIED;
+        DbHandle->Signature = LSAP_DB_SIGNATURE;
+        DbHandle->RefCount = 1;
+        DbHandle->Type = Type;
     }
-    else
-        Status = STATUS_INVALID_HANDLE;
 
-    RtlLeaveCriticalSection(&PolicyHandleTableLock);
+//    RtlLeaveCriticalSection(&PolicyHandleTableLock);
 
-    return Status;
+    return (LSAPR_HANDLE)DbHandle;
 }
 
-/*static*/ VOID
-DereferencePolicyHandle(IN OUT PLSAR_POLICY_HANDLE Policy,
-                        IN BOOLEAN Delete)
+
+static BOOL
+LsapValidateDbHandle(LSAPR_HANDLE Handle)
 {
-    RtlEnterCriticalSection(&PolicyHandleTableLock);
+    PLSA_DB_HANDLE DbHandle = (PLSA_DB_HANDLE)Handle;
+    BOOL bValid = FALSE;
 
-    if (Delete)
+    _SEH2_TRY
     {
-        Policy->Flags |= POLICY_DELETE;
-        Policy->RefCount--;
-
-        ASSERT(Policy->RefCount != 0);
+        if (DbHandle->Signature == LSAP_DB_SIGNATURE)
+            bValid = TRUE;
     }
-
-    if (--Policy->RefCount == 0)
+    _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
     {
-        ASSERT(Policy->Flags & POLICY_DELETE);
-        RtlFreeHandle(&PolicyHandleTable,
-                      (PRTL_HANDLE_TABLE_ENTRY)Policy);
+        bValid = FALSE;
     }
+    _SEH2_END;
 
-    RtlLeaveCriticalSection(&PolicyHandleTableLock);
+
+    return bValid;
 }
 
+
+
+
 VOID
 LsarStartRpcServer(VOID)
 {
     RPC_STATUS Status;
 
     RtlInitializeCriticalSection(&PolicyHandleTableLock);
-    RtlInitializeHandleTable(0x1000,
-                             sizeof(LSAR_POLICY_HANDLE),
-                             &PolicyHandleTable);
 
     TRACE("LsarStartRpcServer() called");
 
@@ -123,37 +113,38 @@ LsarStartRpcServer(VOID)
 }
 
 
+void __RPC_USER LSAPR_HANDLE_rundown(LSAPR_HANDLE hHandle)
+{
+
+}
+
+
 /* Function 0 */
 NTSTATUS LsarClose(
-    handle_t hBinding,
     LSAPR_HANDLE *ObjectHandle)
 {
-#if 0
-    PLSAR_POLICY_HANDLE Policy = NULL;
-    NTSTATUS Status;
+    NTSTATUS Status = STATUS_SUCCESS;
 
     TRACE("0x%p\n", ObjectHandle);
 
-    Status = ReferencePolicyHandle(*ObjectHandle,
-                                   0,
-                                   &Policy);
-    if (NT_SUCCESS(Status))
+//    RtlEnterCriticalSection(&PolicyHandleTableLock);
+
+    if (LsapValidateDbHandle(*ObjectHandle))
     {
-        /* delete the handle */
-        DereferencePolicyHandle(Policy,
-                                TRUE);
+        RtlFreeHeap(RtlGetProcessHeap(), 0, *ObjectHandle);
+        *ObjectHandle = NULL;
     }
+    else
+        Status = STATUS_INVALID_HANDLE;
+
+//    RtlLeaveCriticalSection(&PolicyHandleTableLock);
 
     return Status;
-#endif
-    UNIMPLEMENTED;
-    return STATUS_NOT_IMPLEMENTED;
 }
 
 
 /* Function 1 */
 NTSTATUS LsarDelete(
-    handle_t hBinding,
     LSAPR_HANDLE ObjectHandle)
 {
     /* Deprecated */
@@ -163,7 +154,6 @@ NTSTATUS LsarDelete(
 
 /* Function 2 */
 NTSTATUS LsarEnumeratePrivileges(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     DWORD *EnumerationContext,
     PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer,
@@ -176,7 +166,6 @@ NTSTATUS LsarEnumeratePrivileges(
 
 /* Function 3 */
 NTSTATUS LsarQuerySecurityObject(
-    handle_t hBinding,
     LSAPR_HANDLE ObjectHandle,
     SECURITY_INFORMATION SecurityInformation,
     PLSAPR_SR_SECURITY_DESCRIPTOR *SecurityDescriptor)
@@ -188,7 +177,6 @@ NTSTATUS LsarQuerySecurityObject(
 
 /* Function 4 */
 NTSTATUS LsarSetSecurityObject(
-    handle_t hBinding,
     LSAPR_HANDLE ObjectHandle,
     SECURITY_INFORMATION SecurityInformation,
     PLSAPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor)
@@ -200,7 +188,7 @@ NTSTATUS LsarSetSecurityObject(
 
 /* Function 5 */
 NTSTATUS LsarChangePassword(
-    handle_t hBinding,
+    handle_t IDL_handle,
     PRPC_UNICODE_STRING String1,
     PRPC_UNICODE_STRING String2,
     PRPC_UNICODE_STRING String3,
@@ -214,20 +202,31 @@ NTSTATUS LsarChangePassword(
 
 /* Function 6 */
 NTSTATUS LsarOpenPolicy(
-    handle_t hBinding,
     LPWSTR SystemName,
     PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes,
     ACCESS_MASK DesiredAccess,
     LSAPR_HANDLE *PolicyHandle)
 {
-    UNIMPLEMENTED;
-    return STATUS_NOT_IMPLEMENTED;
+    NTSTATUS Status = STATUS_SUCCESS;
+
+    TRACE("LsarOpenPolicy called!\n");
+
+    RtlEnterCriticalSection(&PolicyHandleTableLock);
+
+    *PolicyHandle = LsapCreateDbHandle(0);
+    if (*PolicyHandle == NULL)
+        Status = STATUS_INSUFFICIENT_RESOURCES;
+
+    RtlLeaveCriticalSection(&PolicyHandleTableLock);
+
+    TRACE("LsarOpenPolicy done!\n");
+
+    return Status;
 }
 
 
 /* Function 7 */
 NTSTATUS LsarQueryInformationPolicy(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     POLICY_INFORMATION_CLASS InformationClass,
     unsigned long PolicyInformation)
@@ -239,7 +238,6 @@ NTSTATUS LsarQueryInformationPolicy(
 
 /* Function 8 */
 NTSTATUS LsarSetInformationPolicy(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     POLICY_INFORMATION_CLASS InformationClass,
     unsigned long *PolicyInformation)
@@ -251,7 +249,6 @@ NTSTATUS LsarSetInformationPolicy(
 
 /* Function 9 */
 NTSTATUS LsarClearAuditLog(
-    handle_t hBinding,
     LSAPR_HANDLE ObjectHandle)
 {
     /* Deprecated */
@@ -261,7 +258,7 @@ NTSTATUS LsarClearAuditLog(
 
 /* Function 10 */
 NTSTATUS LsarCreateAccount(
-    handle_t hBinding,
+    LSAPR_HANDLE PolicyHandle,
     PRPC_SID AccountSid,
     ACCESS_MASK DesiredAccess,
     LSAPR_HANDLE *AccountHandle)
@@ -273,7 +270,6 @@ NTSTATUS LsarCreateAccount(
 
 /* Function 11 */
 NTSTATUS LsarEnumerateAccounts(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     DWORD *EnumerationContext,
     PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer,
@@ -286,7 +282,6 @@ NTSTATUS LsarEnumerateAccounts(
 
 /* Function 12 */
 NTSTATUS LsarCreateTrustedDomain(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PLSAPR_TRUST_INFORMATION TrustedDomainInformation,
     ACCESS_MASK DesiredAccess,
@@ -299,7 +294,6 @@ NTSTATUS LsarCreateTrustedDomain(
 
 /* Function 13 */
 NTSTATUS LsarEnumerateTrustedDomains(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     DWORD *EnumerationContext,
     PLSAPR_TRUSTED_ENUM_BUFFER EnumerationBuffer,
@@ -312,7 +306,6 @@ NTSTATUS LsarEnumerateTrustedDomains(
 
 /* Function 14 */
 NTSTATUS LsarLookupNames(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     DWORD Count,
     PRPC_UNICODE_STRING Names,
@@ -328,7 +321,6 @@ NTSTATUS LsarLookupNames(
 
 /* Function 15 */
 NTSTATUS LsarLookupSids(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
     PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
@@ -343,7 +335,6 @@ NTSTATUS LsarLookupSids(
 
 /* Function 16 */
 NTSTATUS LsarCreateSecret(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING SecretName,
     ACCESS_MASK DesiredAccess,
@@ -356,7 +347,6 @@ NTSTATUS LsarCreateSecret(
 
 /* Function 17 */
 NTSTATUS LsarOpenAccount(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_SID AccountSid,
     ACCESS_MASK DesiredAccess,
@@ -369,7 +359,6 @@ NTSTATUS LsarOpenAccount(
 
 /* Function 18 */
 NTSTATUS LsarEnumeratePrivilegesAccount(
-    handle_t hBinding,
     LSAPR_HANDLE AccountHandle,
     PLSAPR_PRIVILEGE_SET *Privileges)
 {
@@ -380,7 +369,6 @@ NTSTATUS LsarEnumeratePrivilegesAccount(
 
 /* Function 19 */
 NTSTATUS LsarAddPrivilegesToAccount(
-    handle_t hBinding,
     LSAPR_HANDLE AccountHandle,
     PLSAPR_PRIVILEGE_SET Privileges)
 {
@@ -391,7 +379,6 @@ NTSTATUS LsarAddPrivilegesToAccount(
 
 /* Function 20 */
 NTSTATUS LsarRemovePrivilegesFromAccount(
-    handle_t hBinding,
     LSAPR_HANDLE AccountHandle,
     BOOL AllPrivileges,
     PLSAPR_PRIVILEGE_SET Privileges)
@@ -403,7 +390,6 @@ NTSTATUS LsarRemovePrivilegesFromAccount(
 
 /* Function 21 */
 NTSTATUS LsarGetQuotasForAccount(
-    handle_t hBinding,
     LSAPR_HANDLE AccountHandle,
     PQUOTA_LIMITS QuotaLimits)
 {
@@ -414,7 +400,6 @@ NTSTATUS LsarGetQuotasForAccount(
 
 /* Function 22 */
 NTSTATUS LsarSetQuotasForAccount(
-    handle_t hBinding,
     LSAPR_HANDLE AccountHandle,
     PQUOTA_LIMITS QuotaLimits)
 {
@@ -425,7 +410,6 @@ NTSTATUS LsarSetQuotasForAccount(
 
 /* Function 23 */
 NTSTATUS LsarGetSystemAccessAccount(
-    handle_t hBinding,
     LSAPR_HANDLE AccountHandle,
     ACCESS_MASK *SystemAccess)
 {
@@ -436,7 +420,6 @@ NTSTATUS LsarGetSystemAccessAccount(
 
 /* Function 24 */
 NTSTATUS LsarSetSystemAccessAccount(
-    handle_t hBinding,
     LSAPR_HANDLE AccountHandle,
     ACCESS_MASK SystemAccess)
 {
@@ -447,7 +430,6 @@ NTSTATUS LsarSetSystemAccessAccount(
 
 /* Function 25 */
 NTSTATUS LsarOpenTrustedDomain(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_SID TrustedDomainSid,
     ACCESS_MASK DesiredAccess,
@@ -460,7 +442,6 @@ NTSTATUS LsarOpenTrustedDomain(
 
 /* Function 26 */
 NTSTATUS LsarQueryInfoTrustedDomain(
-    handle_t hBinding,
     LSAPR_HANDLE TrustedDomainHandle,
     TRUSTED_INFORMATION_CLASS InformationClass,
     PLSAPR_TRUSTED_DOMAIN_INFO *TrustedDomainInformation)
@@ -472,7 +453,6 @@ NTSTATUS LsarQueryInfoTrustedDomain(
 
 /* Function 27 */
 NTSTATUS LsarSetInformationTrustedDomain(
-    handle_t hBinding,
     LSAPR_HANDLE TrustedDomainHandle,
     TRUSTED_INFORMATION_CLASS InformationClass,
     PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation)
@@ -484,7 +464,6 @@ NTSTATUS LsarSetInformationTrustedDomain(
 
 /* Function 28 */
 NTSTATUS LsarOpenSecret(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING SecretName,
     ACCESS_MASK DesiredAccess,
@@ -497,7 +476,6 @@ NTSTATUS LsarOpenSecret(
 
 /* Function 29 */
 NTSTATUS LsarSetSecret(
-    handle_t hBinding,
     LSAPR_HANDLE *SecretHandle,
     PLSAPR_CR_CIPHER_VALUE EncryptedCurrentValue,
     PLSAPR_CR_CIPHER_VALUE EncryptedOldValue)
@@ -509,7 +487,6 @@ NTSTATUS LsarSetSecret(
 
 /* Function 30 */
 NTSTATUS LsarQuerySecret(
-    handle_t hBinding,
     LSAPR_HANDLE SecretHandle,
     PLSAPR_CR_CIPHER_VALUE *EncryptedCurrentValue,
     PLARGE_INTEGER CurrentValueSetTime,
@@ -523,7 +500,6 @@ NTSTATUS LsarQuerySecret(
 
 /* Function 31 */
 NTSTATUS LsarLookupPrivilegeValue(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING Name,
     PLUID Value)
@@ -535,7 +511,6 @@ NTSTATUS LsarLookupPrivilegeValue(
 
 /* Function 32 */
 NTSTATUS LsarLookupPrivilegeName(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PLUID Value,
     PRPC_UNICODE_STRING *Name)
@@ -547,7 +522,11 @@ NTSTATUS LsarLookupPrivilegeName(
 
 /* Function 33 */
 NTSTATUS LsarLookupPrivilegeDisplayName(
-    handle_t hBinding,
+    LSAPR_HANDLE PolicyHandle,
+    PRPC_UNICODE_STRING Name,
+    USHORT ClientLanguage,
+    USHORT ClientSystemDefaultLanguage,
+    PRPC_UNICODE_STRING *DisplayName,
     USHORT *LanguageReturned)
 {
     UNIMPLEMENTED;
@@ -557,7 +536,6 @@ NTSTATUS LsarLookupPrivilegeDisplayName(
 
 /* Function 34 */
 NTSTATUS LsarDeleteObject(
-    handle_t hBinding,
     LSAPR_HANDLE *ObjectHandle)
 {
     UNIMPLEMENTED;
@@ -567,7 +545,6 @@ NTSTATUS LsarDeleteObject(
 
 /* Function 35 */
 NTSTATUS LsarEnumerateAccountsWithUserRight(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING UserRight,
     PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer)
@@ -579,7 +556,6 @@ NTSTATUS LsarEnumerateAccountsWithUserRight(
 
 /* Function 36 */
 NTSTATUS LsarEnmuerateAccountRights(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_SID AccountSid,
     PLSAPR_USER_RIGHT_SET UserRights)
@@ -591,7 +567,6 @@ NTSTATUS LsarEnmuerateAccountRights(
 
 /* Function 37 */
 NTSTATUS LsarAddAccountRights(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_SID AccountSid,
     PLSAPR_USER_RIGHT_SET UserRights)
@@ -603,7 +578,6 @@ NTSTATUS LsarAddAccountRights(
 
 /* Function 38 */
 NTSTATUS LsarRemoveAccountRights(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_SID AccountSid,
     BOOL AllRights,
@@ -616,7 +590,6 @@ NTSTATUS LsarRemoveAccountRights(
 
 /* Function 39 */
 NTSTATUS LsarQueryTrustedDomainInfo(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_SID TrustedDomainSid,
     TRUSTED_INFORMATION_CLASS InformationClass,
@@ -629,7 +602,6 @@ NTSTATUS LsarQueryTrustedDomainInfo(
 
 /* Function 40 */
 NTSTATUS LsarSetTrustedDomainInfo(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_SID TrustedDomainSid,
     TRUSTED_INFORMATION_CLASS InformationClass,
@@ -642,7 +614,6 @@ NTSTATUS LsarSetTrustedDomainInfo(
 
 /* Function 41 */
 NTSTATUS LsarDeleteTrustedDomain(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_SID TrustedDomainSid)
 {
@@ -653,7 +624,6 @@ NTSTATUS LsarDeleteTrustedDomain(
 
 /* Function 42 */
 NTSTATUS LsarStorePrivateData(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING KeyName,
     PLSAPR_CR_CIPHER_VALUE EncryptedData)
@@ -665,7 +635,6 @@ NTSTATUS LsarStorePrivateData(
 
 /* Function 43 */
 NTSTATUS LsarRetrievePrivateData(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING KeyName,
     PLSAPR_CR_CIPHER_VALUE *EncryptedData)
@@ -677,7 +646,6 @@ NTSTATUS LsarRetrievePrivateData(
 
 /* Function 44 */
 NTSTATUS LsarOpenPolicy2(
-    handle_t hBinding,
     LPWSTR SystemName,
     PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes,
     ACCESS_MASK DesiredAccess,
@@ -690,7 +658,6 @@ NTSTATUS LsarOpenPolicy2(
 
 /* Function 45 */
 NTSTATUS LsarGetUserName(
-    handle_t hBinding,
     LPWSTR SystemName,
     PRPC_UNICODE_STRING *UserName,
     PRPC_UNICODE_STRING *DomainName)
@@ -702,7 +669,6 @@ NTSTATUS LsarGetUserName(
 
 /* Function 46 */
 NTSTATUS LsarQueryInformationPolicy2(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     POLICY_INFORMATION_CLASS InformationClass,
     unsigned long *PolicyInformation)
@@ -714,7 +680,6 @@ NTSTATUS LsarQueryInformationPolicy2(
 
 /* Function 47 */
 NTSTATUS LsarSetInformationPolicy2(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     POLICY_INFORMATION_CLASS InformationClass,
     unsigned long PolicyInformation)
@@ -726,7 +691,6 @@ NTSTATUS LsarSetInformationPolicy2(
 
 /* Function 48 */
 NTSTATUS LsarQueryTrustedDomainInfoByName(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING TrustedDomainName,
     POLICY_INFORMATION_CLASS InformationClass,
@@ -739,7 +703,6 @@ NTSTATUS LsarQueryTrustedDomainInfoByName(
 
 /* Function 49 */
 NTSTATUS LsarSetTrustedDomainInfoByName(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING TrustedDomainName,
     POLICY_INFORMATION_CLASS InformationClass,
@@ -752,7 +715,6 @@ NTSTATUS LsarSetTrustedDomainInfoByName(
 
 /* Function 50 */
 NTSTATUS LsarEnumerateTrustedDomainsEx(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     DWORD *EnumerationContext,
     PLSAPR_TRUSTED_ENUM_BUFFER_EX EnumerationBuffer,
@@ -765,7 +727,6 @@ NTSTATUS LsarEnumerateTrustedDomainsEx(
 
 /* Function 51 */
 NTSTATUS LsarCreateTrustedDomainEx(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
     PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION AuthentificationInformation,
@@ -779,7 +740,6 @@ NTSTATUS LsarCreateTrustedDomainEx(
 
 /* Function 52 */
 NTSTATUS LsarSetPolicyReplicationHandle(
-    handle_t hBinding,
     PLSAPR_HANDLE PolicyHandle)
 {
     /* Deprecated */
@@ -789,7 +749,6 @@ NTSTATUS LsarSetPolicyReplicationHandle(
 
 /* Function 53 */
 NTSTATUS LsarQueryDomainInformationPolicy(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     POLICY_INFORMATION_CLASS InformationClass,
     unsigned long *PolicyInformation)
@@ -801,7 +760,6 @@ NTSTATUS LsarQueryDomainInformationPolicy(
 
 /* Function 54 */
 NTSTATUS LsarSetDomainInformationPolicy(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     POLICY_INFORMATION_CLASS InformationClass,
     unsigned long PolicyInformation)
@@ -813,7 +771,6 @@ NTSTATUS LsarSetDomainInformationPolicy(
 
 /* Function 55 */
 NTSTATUS LsarOpenTrustedDomainByName(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING TrustedDomainName,
     ACCESS_MASK DesiredAccess,
@@ -835,7 +792,6 @@ NTSTATUS LsarTestCall(
 
 /* Function 57 */
 NTSTATUS LsarLookupSids2(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
     PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
@@ -852,7 +808,6 @@ NTSTATUS LsarLookupSids2(
 
 /* Function 58 */
 NTSTATUS LsarLookupNames2(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     DWORD Count,
     PRPC_UNICODE_STRING Names,
@@ -870,7 +825,6 @@ NTSTATUS LsarLookupNames2(
 
 /* Function 59 */
 NTSTATUS LsarCreateTrustedDomainEx2(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
     PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL AuthentificationInformation,
@@ -956,7 +910,6 @@ NTSTATUS CredrProfileLoaded(
 
 /* Function 68 */
 NTSTATUS LsarLookupNames3(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     DWORD Count,
     PRPC_UNICODE_STRING Names,
@@ -1010,7 +963,6 @@ NTSTATUS LsarUnregisterAuditEvent(
 
 /* Function 73 */
 NTSTATUS LsarQueryForestTrustInformation(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PLSA_UNICODE_STRING TrustedDomainName,
     LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType,
@@ -1023,7 +975,6 @@ NTSTATUS LsarQueryForestTrustInformation(
 
 /* Function 74 */
 NTSTATUS LsarSetForestTrustInformation(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PLSA_UNICODE_STRING TrustedDomainName,
     LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType,
@@ -1047,7 +998,7 @@ NTSTATUS CredrRename(
 
 /* Function 76 */
 NTSTATUS LsarLookupSids3(
-    handle_t hBinding,
+    LSAPR_HANDLE PolicyHandle,
     PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
     PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
     PLSAPR_TRANSLATED_NAMES_EX TranslatedNames,
@@ -1063,7 +1014,6 @@ NTSTATUS LsarLookupSids3(
 
 /* Function 77 */
 NTSTATUS LsarLookupNames4(
-    handle_t hBinding,
     handle_t RpcHandle,
     DWORD Count,
     PRPC_UNICODE_STRING Names,
@@ -1115,4 +1065,120 @@ NTSTATUS LsarAdtReportSecurityEvent(
 }
 
 
+/* Function 82 */
+NTSTATUS CredrFindBestCredential(
+    handle_t hBinding)
+{
+    UNIMPLEMENTED;
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+
+/* Function 83 */
+NTSTATUS LsarSetAuditPolicy(
+    handle_t hBinding)
+{
+    UNIMPLEMENTED;
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+
+/* Function 84 */
+NTSTATUS LsarQueryAuditPolicy(
+    handle_t hBinding)
+{
+    UNIMPLEMENTED;
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+
+/* Function 85 */
+NTSTATUS LsarEnumerateAuditPolicy(
+    handle_t hBinding)
+{
+    UNIMPLEMENTED;
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+
+/* Function 86 */
+NTSTATUS LsarEnumerateAuditCategories(
+    handle_t hBinding)
+{
+    UNIMPLEMENTED;
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+
+/* Function 87 */
+NTSTATUS LsarEnumerateAuditSubCategories(
+    handle_t hBinding)
+{
+    UNIMPLEMENTED;
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+
+/* Function 88 */
+NTSTATUS LsarLookupAuditCategoryName(
+    handle_t hBinding)
+{
+    UNIMPLEMENTED;
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+
+/* Function 89 */
+NTSTATUS LsarLookupAuditSubCategoryName(
+    handle_t hBinding)
+{
+    UNIMPLEMENTED;
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+
+/* Function 90 */
+NTSTATUS LsarSetAuditSecurity(
+    handle_t hBinding)
+{
+    UNIMPLEMENTED;
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+
+/* Function 91 */
+NTSTATUS LsarQueryAuditSecurity(
+    handle_t hBinding)
+{
+    UNIMPLEMENTED;
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+
+/* Function 92 */
+NTSTATUS CredReadByTokenHandle(
+    handle_t hBinding)
+{
+    UNIMPLEMENTED;
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+
+/* Function 93 */
+NTSTATUS CredrRestoreCredentials(
+    handle_t hBinding)
+{
+    UNIMPLEMENTED;
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+
+/* Function 94 */
+NTSTATUS CredrBackupCredentials(
+    handle_t hBinding)
+{
+    UNIMPLEMENTED;
+    return STATUS_NOT_IMPLEMENTED;
+}
+
 /* EOF */