LSA: Get rid of the globally created binding handle and use the WIDL-generated custom...
authorEric Kohl <eric.kohl@reactos.org>
Sun, 26 Oct 2008 22:53:30 +0000 (22:53 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Sun, 26 Oct 2008 22:53:30 +0000 (22:53 +0000)
svn path=/trunk/; revision=37006

reactos/dll/win32/advapi32/sec/lsa.c
reactos/dll/win32/lsasrv/lsarpc.c
reactos/include/reactos/idl/lsa.idl

index 831c6ea..9cb5d4b 100644 (file)
 
 WINE_DEFAULT_DEBUG_CHANNEL(advapi);
 
-static handle_t LSABindingHandle = NULL;
 
-static VOID
-LSAHandleUnbind(handle_t *Handle)
-{
-    RPC_STATUS status;
-
-    if (*Handle == NULL)
-        return;
-
-    status = RpcBindingFree(Handle);
-    if (status)
-    {
-        TRACE("RpcBindingFree returned 0x%x\n", status);
-    }
-}
-
-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,
+    status = RpcStringBindingComposeW(pszSystemName,
                                       L"ncacn_np",
                                       NULL,
                                       L"\\pipe\\lsarpc",
@@ -52,12 +35,12 @@ LSAHandleBind(VOID)
     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);
@@ -69,11 +52,22 @@ LSAHandleBind(VOID)
         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);
     }
 }
 
@@ -90,10 +84,7 @@ LsaClose(LSA_HANDLE ObjectHandle)
     if (ObjectHandle == (LSA_HANDLE)0xcafe)
         return STATUS_SUCCESS;
 
-    LSAHandleBind();
-
-    return LsarClose(LSABindingHandle,
-                     (unsigned long *)&ObjectHandle);
+    return LsarClose((PLSAPR_HANDLE)&ObjectHandle);
 }
 
 
@@ -105,10 +96,7 @@ LsaDelete(LSA_HANDLE ObjectHandle)
 {
     TRACE("LsaDelete(0x%p) called\n", ObjectHandle);
 
-    LSAHandleBind();
-
-    return LsarDelete(LSABindingHandle,
-                      (unsigned long)ObjectHandle);
+    return LsarDelete((LSAPR_HANDLE)ObjectHandle);
 }
 
 
index b0d51b3..19d0715 100644 (file)
@@ -123,9 +123,14 @@ LsarStartRpcServer(VOID)
 }
 
 
+void __RPC_USER LSAPR_HANDLE_rundown(LSAPR_HANDLE hHandle)
+{
+
+}
+
+
 /* Function 0 */
 NTSTATUS LsarClose(
-    handle_t hBinding,
     LSAPR_HANDLE *ObjectHandle)
 {
 #if 0
@@ -153,7 +158,6 @@ NTSTATUS LsarClose(
 
 /* Function 1 */
 NTSTATUS LsarDelete(
-    handle_t hBinding,
     LSAPR_HANDLE ObjectHandle)
 {
     /* Deprecated */
@@ -163,7 +167,6 @@ NTSTATUS LsarDelete(
 
 /* Function 2 */
 NTSTATUS LsarEnumeratePrivileges(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     DWORD *EnumerationContext,
     PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer,
@@ -176,7 +179,6 @@ NTSTATUS LsarEnumeratePrivileges(
 
 /* Function 3 */
 NTSTATUS LsarQuerySecurityObject(
-    handle_t hBinding,
     LSAPR_HANDLE ObjectHandle,
     SECURITY_INFORMATION SecurityInformation,
     PLSAPR_SR_SECURITY_DESCRIPTOR *SecurityDescriptor)
@@ -188,7 +190,6 @@ NTSTATUS LsarQuerySecurityObject(
 
 /* Function 4 */
 NTSTATUS LsarSetSecurityObject(
-    handle_t hBinding,
     LSAPR_HANDLE ObjectHandle,
     SECURITY_INFORMATION SecurityInformation,
     PLSAPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor)
@@ -200,7 +201,7 @@ NTSTATUS LsarSetSecurityObject(
 
 /* Function 5 */
 NTSTATUS LsarChangePassword(
-    handle_t hBinding,
+    handle_t hBinding,  /* FIXME */
     PRPC_UNICODE_STRING String1,
     PRPC_UNICODE_STRING String2,
     PRPC_UNICODE_STRING String3,
@@ -214,7 +215,6 @@ NTSTATUS LsarChangePassword(
 
 /* Function 6 */
 NTSTATUS LsarOpenPolicy(
-    handle_t hBinding,
     LPWSTR SystemName,
     PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes,
     ACCESS_MASK DesiredAccess,
@@ -227,7 +227,6 @@ NTSTATUS LsarOpenPolicy(
 
 /* 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,7 @@ NTSTATUS LsarLookupPrivilegeName(
 
 /* Function 33 */
 NTSTATUS LsarLookupPrivilegeDisplayName(
-    handle_t hBinding,
+    LSAPR_HANDLE PolicyHandle,  /* FIXME */
     USHORT *LanguageReturned)
 {
     UNIMPLEMENTED;
@@ -557,7 +532,6 @@ NTSTATUS LsarLookupPrivilegeDisplayName(
 
 /* Function 34 */
 NTSTATUS LsarDeleteObject(
-    handle_t hBinding,
     LSAPR_HANDLE *ObjectHandle)
 {
     UNIMPLEMENTED;
@@ -567,7 +541,6 @@ NTSTATUS LsarDeleteObject(
 
 /* Function 35 */
 NTSTATUS LsarEnumerateAccountsWithUserRight(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING UserRight,
     PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer)
@@ -579,7 +552,6 @@ NTSTATUS LsarEnumerateAccountsWithUserRight(
 
 /* Function 36 */
 NTSTATUS LsarEnmuerateAccountRights(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_SID AccountSid,
     PLSAPR_USER_RIGHT_SET UserRights)
@@ -591,7 +563,6 @@ NTSTATUS LsarEnmuerateAccountRights(
 
 /* Function 37 */
 NTSTATUS LsarAddAccountRights(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_SID AccountSid,
     PLSAPR_USER_RIGHT_SET UserRights)
@@ -603,7 +574,6 @@ NTSTATUS LsarAddAccountRights(
 
 /* Function 38 */
 NTSTATUS LsarRemoveAccountRights(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_SID AccountSid,
     BOOL AllRights,
@@ -616,7 +586,6 @@ NTSTATUS LsarRemoveAccountRights(
 
 /* Function 39 */
 NTSTATUS LsarQueryTrustedDomainInfo(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_SID TrustedDomainSid,
     TRUSTED_INFORMATION_CLASS InformationClass,
@@ -629,7 +598,6 @@ NTSTATUS LsarQueryTrustedDomainInfo(
 
 /* Function 40 */
 NTSTATUS LsarSetTrustedDomainInfo(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_SID TrustedDomainSid,
     TRUSTED_INFORMATION_CLASS InformationClass,
@@ -642,7 +610,6 @@ NTSTATUS LsarSetTrustedDomainInfo(
 
 /* Function 41 */
 NTSTATUS LsarDeleteTrustedDomain(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_SID TrustedDomainSid)
 {
@@ -653,7 +620,6 @@ NTSTATUS LsarDeleteTrustedDomain(
 
 /* Function 42 */
 NTSTATUS LsarStorePrivateData(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING KeyName,
     PLSAPR_CR_CIPHER_VALUE EncryptedData)
@@ -665,7 +631,6 @@ NTSTATUS LsarStorePrivateData(
 
 /* Function 43 */
 NTSTATUS LsarRetrievePrivateData(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING KeyName,
     PLSAPR_CR_CIPHER_VALUE *EncryptedData)
@@ -677,7 +642,6 @@ NTSTATUS LsarRetrievePrivateData(
 
 /* Function 44 */
 NTSTATUS LsarOpenPolicy2(
-    handle_t hBinding,
     LPWSTR SystemName,
     PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes,
     ACCESS_MASK DesiredAccess,
@@ -690,7 +654,6 @@ NTSTATUS LsarOpenPolicy2(
 
 /* Function 45 */
 NTSTATUS LsarGetUserName(
-    handle_t hBinding,
     LPWSTR SystemName,
     PRPC_UNICODE_STRING *UserName,
     PRPC_UNICODE_STRING *DomainName)
@@ -702,7 +665,6 @@ NTSTATUS LsarGetUserName(
 
 /* Function 46 */
 NTSTATUS LsarQueryInformationPolicy2(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     POLICY_INFORMATION_CLASS InformationClass,
     unsigned long *PolicyInformation)
@@ -714,7 +676,6 @@ NTSTATUS LsarQueryInformationPolicy2(
 
 /* Function 47 */
 NTSTATUS LsarSetInformationPolicy2(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     POLICY_INFORMATION_CLASS InformationClass,
     unsigned long PolicyInformation)
@@ -726,7 +687,6 @@ NTSTATUS LsarSetInformationPolicy2(
 
 /* Function 48 */
 NTSTATUS LsarQueryTrustedDomainInfoByName(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING TrustedDomainName,
     POLICY_INFORMATION_CLASS InformationClass,
@@ -739,7 +699,6 @@ NTSTATUS LsarQueryTrustedDomainInfoByName(
 
 /* Function 49 */
 NTSTATUS LsarSetTrustedDomainInfoByName(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING TrustedDomainName,
     POLICY_INFORMATION_CLASS InformationClass,
@@ -752,7 +711,6 @@ NTSTATUS LsarSetTrustedDomainInfoByName(
 
 /* Function 50 */
 NTSTATUS LsarEnumerateTrustedDomainsEx(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     DWORD *EnumerationContext,
     PLSAPR_TRUSTED_ENUM_BUFFER_EX EnumerationBuffer,
@@ -765,7 +723,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 +736,6 @@ NTSTATUS LsarCreateTrustedDomainEx(
 
 /* Function 52 */
 NTSTATUS LsarSetPolicyReplicationHandle(
-    handle_t hBinding,
     PLSAPR_HANDLE PolicyHandle)
 {
     /* Deprecated */
@@ -789,7 +745,6 @@ NTSTATUS LsarSetPolicyReplicationHandle(
 
 /* Function 53 */
 NTSTATUS LsarQueryDomainInformationPolicy(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     POLICY_INFORMATION_CLASS InformationClass,
     unsigned long *PolicyInformation)
@@ -801,7 +756,6 @@ NTSTATUS LsarQueryDomainInformationPolicy(
 
 /* Function 54 */
 NTSTATUS LsarSetDomainInformationPolicy(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     POLICY_INFORMATION_CLASS InformationClass,
     unsigned long PolicyInformation)
@@ -813,7 +767,6 @@ NTSTATUS LsarSetDomainInformationPolicy(
 
 /* Function 55 */
 NTSTATUS LsarOpenTrustedDomainByName(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PRPC_UNICODE_STRING TrustedDomainName,
     ACCESS_MASK DesiredAccess,
@@ -835,7 +788,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 +804,6 @@ NTSTATUS LsarLookupSids2(
 
 /* Function 58 */
 NTSTATUS LsarLookupNames2(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     DWORD Count,
     PRPC_UNICODE_STRING Names,
@@ -870,7 +821,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 +906,6 @@ NTSTATUS CredrProfileLoaded(
 
 /* Function 68 */
 NTSTATUS LsarLookupNames3(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     DWORD Count,
     PRPC_UNICODE_STRING Names,
@@ -1010,7 +959,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 +971,6 @@ NTSTATUS LsarQueryForestTrustInformation(
 
 /* Function 74 */
 NTSTATUS LsarSetForestTrustInformation(
-    handle_t hBinding,
     LSAPR_HANDLE PolicyHandle,
     PLSA_UNICODE_STRING TrustedDomainName,
     LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType,
@@ -1114,5 +1061,4 @@ NTSTATUS LsarAdtReportSecurityEvent(
     return STATUS_NOT_IMPLEMENTED;
 }
 
-
 /* EOF */
index a09896c..621bf27 100644 (file)
@@ -4,7 +4,9 @@
 
 #include <ms-dtyp.idl>
 
-typedef /*[context_handle]*/ unsigned long LSAPR_HANDLE;
+typedef [handle] LPWSTR PLSAPR_SERVER_NAME;
+
+typedef [context_handle] PVOID LSAPR_HANDLE;
 typedef LSAPR_HANDLE *PLSAPR_HANDLE;
 
 cpp_quote("#ifndef _WINNT_H")
@@ -599,17 +601,14 @@ interface lsarpc
 {
     /* Function 0 */
     NTSTATUS LsarClose(
-        [in] handle_t hBinding,
         [in, out] LSAPR_HANDLE *ObjectHandle);
 
     /* Function 1 */
     NTSTATUS LsarDelete(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE ObjectHandle);
 
     /* Function 2 */
     NTSTATUS LsarEnumeratePrivileges(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in, out] DWORD *EnumerationContext,
         [out] PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer,
@@ -617,21 +616,19 @@ interface lsarpc
 
     /* Function 3 */
     NTSTATUS LsarQuerySecurityObject(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE ObjectHandle,
         [in] SECURITY_INFORMATION SecurityInformation,
         [out] PLSAPR_SR_SECURITY_DESCRIPTOR *SecurityDescriptor);
 
     /* Function 4 */
     NTSTATUS LsarSetSecurityObject(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE ObjectHandle,
         [in] SECURITY_INFORMATION SecurityInformation,
         [in] PLSAPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor);
 
     /* Function 5 */
     NTSTATUS LsarChangePassword(
-        [in] handle_t hBinding,
+        [in] handle_t hBinding,  /* FIXME */
         [in] PRPC_UNICODE_STRING String1,
         [in] PRPC_UNICODE_STRING String2,
         [in] PRPC_UNICODE_STRING String3,
@@ -640,15 +637,13 @@ interface lsarpc
 
     /* Function 6 */
     NTSTATUS LsarOpenPolicy(
-        [in] handle_t hBinding,
-        [in, unique] LPWSTR SystemName,
+        [in, unique] PLSAPR_SERVER_NAME SystemName,
         [in] PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes,
         [in] ACCESS_MASK DesiredAccess,
         [out] LSAPR_HANDLE *PolicyHandle);
 
     /* Function 7 */
     NTSTATUS LsarQueryInformationPolicy(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] POLICY_INFORMATION_CLASS InformationClass,
         [in] unsigned long PolicyInformation);
@@ -656,7 +651,6 @@ interface lsarpc
 
     /* Function 8 */
     NTSTATUS LsarSetInformationPolicy(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] POLICY_INFORMATION_CLASS InformationClass,
         [out] unsigned long *PolicyInformation);
@@ -664,19 +658,17 @@ interface lsarpc
 
     /* Function 9 */
     NTSTATUS LsarClearAuditLog(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE ObjectHandle);
 
     /* Function 10 */
     NTSTATUS LsarCreateAccount(
-        [in] handle_t hBinding,
+        [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_SID AccountSid,
         [in] ACCESS_MASK DesiredAccess,
         [out] LSAPR_HANDLE *AccountHandle);
 
     /* Function 11 */
     NTSTATUS LsarEnumerateAccounts(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in, out] DWORD *EnumerationContext,
         [out] PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer,
@@ -684,7 +676,6 @@ interface lsarpc
 
     /* Function 12 */
     NTSTATUS LsarCreateTrustedDomain(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PLSAPR_TRUST_INFORMATION TrustedDomainInformation,
         [in] ACCESS_MASK DesiredAccess,
@@ -692,7 +683,6 @@ interface lsarpc
 
     /* Function 13 */
     NTSTATUS LsarEnumerateTrustedDomains(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in, out] DWORD *EnumerationContext,
         [out] PLSAPR_TRUSTED_ENUM_BUFFER EnumerationBuffer,
@@ -700,7 +690,6 @@ interface lsarpc
 
     /* Function 14 */
     NTSTATUS LsarLookupNames(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] DWORD Count,
         [in, size_is(Count)] PRPC_UNICODE_STRING Names,
@@ -711,7 +700,6 @@ interface lsarpc
 
     /* Function 15 */
     NTSTATUS LsarLookupSids(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
         [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
@@ -721,7 +709,6 @@ interface lsarpc
 
     /* Function 16 */
     NTSTATUS LsarCreateSecret(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_UNICODE_STRING SecretName,
         [in] ACCESS_MASK DesiredAccess,
@@ -729,7 +716,6 @@ interface lsarpc
 
     /* Function 17 */
     NTSTATUS LsarOpenAccount(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_SID AccountSid,
         [in] ACCESS_MASK DesiredAccess,
@@ -737,50 +723,42 @@ interface lsarpc
 
     /* Function 18 */
     NTSTATUS LsarEnumeratePrivilegesAccount(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE AccountHandle,
         [out] PLSAPR_PRIVILEGE_SET *Privileges);
 
     /* Function 19 */
     NTSTATUS LsarAddPrivilegesToAccount(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE AccountHandle,
         [in] PLSAPR_PRIVILEGE_SET Privileges);
 
     /* Function 20 */
     NTSTATUS LsarRemovePrivilegesFromAccount(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE AccountHandle,
         [in] BOOL AllPrivileges,
         [in, unique] PLSAPR_PRIVILEGE_SET Privileges);
 
     /* Function 21 */
     NTSTATUS LsarGetQuotasForAccount(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE AccountHandle,
         [out] PQUOTA_LIMITS QuotaLimits);
 
     /* Function 22 */
     NTSTATUS LsarSetQuotasForAccount(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE AccountHandle,
         [in] PQUOTA_LIMITS QuotaLimits);
 
     /* Function 23 */
     NTSTATUS LsarGetSystemAccessAccount(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE AccountHandle,
         [out] ACCESS_MASK *SystemAccess);
 
     /* Function 24 */
     NTSTATUS LsarSetSystemAccessAccount(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE AccountHandle,
         [in] ACCESS_MASK SystemAccess);
 
     /* Function 25 */
     NTSTATUS LsarOpenTrustedDomain(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_SID TrustedDomainSid,
         [in] ACCESS_MASK DesiredAccess,
@@ -788,21 +766,18 @@ interface lsarpc
 
     /* Function 26 */
     NTSTATUS LsarQueryInfoTrustedDomain(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE TrustedDomainHandle,
         [in] TRUSTED_INFORMATION_CLASS InformationClass,
         [out, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO *TrustedDomainInformation);
 
     /* Function 27 */
     NTSTATUS LsarSetInformationTrustedDomain(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE TrustedDomainHandle,
         [in] TRUSTED_INFORMATION_CLASS InformationClass,
         [in, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation);
 
     /* Function 28 */
     NTSTATUS LsarOpenSecret(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_UNICODE_STRING SecretName,
         [in] ACCESS_MASK DesiredAccess,
@@ -810,14 +785,12 @@ interface lsarpc
 
     /* Function 29 */
     NTSTATUS LsarSetSecret(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE *SecretHandle,
         [in, unique] PLSAPR_CR_CIPHER_VALUE EncryptedCurrentValue,
         [in, unique] PLSAPR_CR_CIPHER_VALUE EncryptedOldValue);
 
     /* Function 30 */
     NTSTATUS LsarQuerySecret(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE SecretHandle,
         [in, out, unique] PLSAPR_CR_CIPHER_VALUE *EncryptedCurrentValue,
         [in, out, unique] PLARGE_INTEGER CurrentValueSetTime,
@@ -826,23 +799,20 @@ interface lsarpc
 
     /* Function 31 */
     NTSTATUS LsarLookupPrivilegeValue(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_UNICODE_STRING Name,
         [out] PLUID Value);
 
     /* Function 32 */
     NTSTATUS LsarLookupPrivilegeName(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PLUID Value,
         [out] PRPC_UNICODE_STRING *Name);
 
     /* Function 33 */
     NTSTATUS LsarLookupPrivilegeDisplayName(
-        [in] handle_t hBinding,
-        /*[in] LSAPR_HANDLE PolicyHandle,
-        [in] PRPC_UNICODE_STRING Name,
+        [in] LSAPR_HANDLE PolicyHandle,  /* FIXME */
+        /*[in] PRPC_UNICODE_STRING Name,
         [in] USHORT ClientLanguage,
         [in] USHORT ClientSystemDefaultLanguage,
         [out] PRPC_UNICODE_STRING *DisplayName,*/
@@ -850,35 +820,30 @@ interface lsarpc
 
     /* Function 34 */
     NTSTATUS LsarDeleteObject(
-        [in] handle_t hBinding,
         [in, out] LSAPR_HANDLE *ObjectHandle);
 
 cpp_quote("#if _WIN32_WINNT >= 0x0351")
 
     /* Function 35 */
     NTSTATUS LsarEnumerateAccountsWithUserRight(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in, unique] PRPC_UNICODE_STRING UserRight,
         [out] PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer);
 
     /* Function 36 */
     NTSTATUS LsarEnmuerateAccountRights(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_SID AccountSid,
         [out] PLSAPR_USER_RIGHT_SET UserRights);
 
     /* Function 37 */
     NTSTATUS LsarAddAccountRights(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_SID AccountSid,
         [in] PLSAPR_USER_RIGHT_SET UserRights);
 
     /* Function 38 */
     NTSTATUS LsarRemoveAccountRights(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_SID AccountSid,
         [in] BOOL AllRights,
@@ -886,7 +851,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0351")
 
     /* Function 39 */
     NTSTATUS LsarQueryTrustedDomainInfo(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_SID TrustedDomainSid,
         [in] TRUSTED_INFORMATION_CLASS InformationClass,
@@ -894,7 +858,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0351")
 
     /* Function 40 */
     NTSTATUS LsarSetTrustedDomainInfo(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_SID TrustedDomainSid,
         [in] TRUSTED_INFORMATION_CLASS InformationClass,
@@ -902,36 +865,31 @@ cpp_quote("#if _WIN32_WINNT >= 0x0351")
 
     /* Function 41 */
     NTSTATUS LsarDeleteTrustedDomain(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_SID TrustedDomainSid);
 
     /* Function 42 */
     NTSTATUS LsarStorePrivateData(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_UNICODE_STRING KeyName,
         [in, unique] PLSAPR_CR_CIPHER_VALUE EncryptedData);
 
     /* Function 43 */
     NTSTATUS LsarRetrievePrivateData(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_UNICODE_STRING KeyName,
         [in, out] PLSAPR_CR_CIPHER_VALUE *EncryptedData);
 
     /* Function 44 */
     NTSTATUS LsarOpenPolicy2(
-        [in] handle_t hBinding,
-        [in, unique, string] LPWSTR SystemName,
+        [in, unique, string] PLSAPR_SERVER_NAME SystemName,
         [in] PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes,
         [in] ACCESS_MASK DesiredAccess,
         [out] LSAPR_HANDLE *PolicyHandle);
 
     /* Function 45 */
     NTSTATUS LsarGetUserName(
-        [in] handle_t hBinding,
-        [in, unique, string] LPWSTR SystemName,
+        [in, unique, string] PLSAPR_SERVER_NAME SystemName,
         [in, out] PRPC_UNICODE_STRING *UserName,
         [in, out, unique] PRPC_UNICODE_STRING *DomainName);
 
@@ -939,7 +897,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0500")
 
     /* Function 46 */
     NTSTATUS LsarQueryInformationPolicy2(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] POLICY_INFORMATION_CLASS InformationClass,
         [out] unsigned long *PolicyInformation);
@@ -947,7 +904,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0500")
 
     /* Function 47 */
     NTSTATUS LsarSetInformationPolicy2(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] POLICY_INFORMATION_CLASS InformationClass,
         [in] unsigned long PolicyInformation);
@@ -955,7 +911,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0500")
 
     /* Function 48 */
     NTSTATUS LsarQueryTrustedDomainInfoByName(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_UNICODE_STRING TrustedDomainName,
         [in] POLICY_INFORMATION_CLASS InformationClass,
@@ -964,7 +919,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0500")
 
     /* Function 49 */
     NTSTATUS LsarSetTrustedDomainInfoByName(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_UNICODE_STRING TrustedDomainName,
         [in] POLICY_INFORMATION_CLASS InformationClass,
@@ -973,7 +927,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0500")
 
     /* Function 50 */
     NTSTATUS LsarEnumerateTrustedDomainsEx(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in, out] DWORD *EnumerationContext,
         [out] PLSAPR_TRUSTED_ENUM_BUFFER_EX EnumerationBuffer,
@@ -981,7 +934,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0500")
 
     /* Function 51 */
     NTSTATUS LsarCreateTrustedDomainEx(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
         [in] PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION AuthentificationInformation,
@@ -990,12 +942,10 @@ cpp_quote("#if _WIN32_WINNT >= 0x0500")
 
     /* Function 52 */
     NTSTATUS LsarSetPolicyReplicationHandle(
-        [in] handle_t hBinding,
         [in, out] PLSAPR_HANDLE PolicyHandle);
 
     /* Function 53 */
     NTSTATUS LsarQueryDomainInformationPolicy(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] POLICY_INFORMATION_CLASS InformationClass,
         [out] unsigned long *PolicyInformation);
@@ -1003,7 +953,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0500")
 
     /* Function 54 */
     NTSTATUS LsarSetDomainInformationPolicy(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] POLICY_INFORMATION_CLASS InformationClass,
         [in] unsigned long PolicyInformation);
@@ -1011,7 +960,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0500")
 
     /* Function 55 */
     NTSTATUS LsarOpenTrustedDomainByName(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PRPC_UNICODE_STRING TrustedDomainName,
         [in] ACCESS_MASK DesiredAccess,
@@ -1023,7 +971,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0500")
 
     /* Function 57 */
     NTSTATUS LsarLookupSids2(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
         [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
@@ -1035,7 +982,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0500")
 
     /* Function 58 */
     NTSTATUS LsarLookupNames2(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] DWORD Count,
         [in, size_is(Count)] PRPC_UNICODE_STRING Names,
@@ -1048,7 +994,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0500")
 
     /* Function 59 */
     NTSTATUS LsarCreateTrustedDomainEx2(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
         [in] PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL AuthentificationInformation,
@@ -1091,7 +1036,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0501")
 
     /* Function 68 */
     NTSTATUS LsarLookupNames3(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] DWORD Count,
         [in, size_is(Count)] PRPC_UNICODE_STRING Names,
@@ -1120,7 +1064,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0501")
 
     /* Function 73 */
     NTSTATUS LsarQueryForestTrustInformation(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PLSA_UNICODE_STRING TrustedDomainName,
         [in] LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType,
@@ -1128,7 +1071,6 @@ cpp_quote("#if _WIN32_WINNT >= 0x0501")
 
     /* Function 74 */
     NTSTATUS LsarSetForestTrustInformation(
-        [in] handle_t hBinding,
         [in] LSAPR_HANDLE PolicyHandle,
         [in] PLSA_UNICODE_STRING TrustedDomainName,
         [in] LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType,
@@ -1142,7 +1084,7 @@ cpp_quote("#if _WIN32_WINNT >= 0x0501")
 
     /* Function 76 */
     NTSTATUS LsarLookupSids3(
-        [in] handle_t hBinding,
+        [in] handle_t hBinding, /* FIXME */
         [in] PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
         [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
         [in, out] PLSAPR_TRANSLATED_NAMES_EX TranslatedNames,
@@ -1153,7 +1095,7 @@ cpp_quote("#if _WIN32_WINNT >= 0x0501")
 
     /* Function 77 */
     NTSTATUS LsarLookupNames4(
-        [in] handle_t hBinding,
+        [in] handle_t hBinding, /* FIXME */
         [in] handle_t RpcHandle,
         [in] DWORD Count,
         [in, size_is(Count)] PRPC_UNICODE_STRING Names,