=?UTF-8?Q?Andr=C3=A9=20Hentschel=20?=: rpcrt4: Implement RpcEpRegisterNoReplaceA.

Alexandre Julliard julliard at winehq.org
Wed Nov 30 14:19:22 CST 2011


Module: wine
Branch: master
Commit: d2f3463a01fc38aa350db6f52091808d6fa4c997
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d2f3463a01fc38aa350db6f52091808d6fa4c997

Author: André Hentschel <nerv at dawncrow.de>
Date:   Wed Nov 30 03:19:53 2011 +0100

rpcrt4: Implement RpcEpRegisterNoReplaceA.

---

 dlls/rpcrt4/rpc_epmap.c |   31 +++++++++++++++++++++++--------
 dlls/rpcrt4/rpcrt4.spec |    2 +-
 2 files changed, 24 insertions(+), 9 deletions(-)

diff --git a/dlls/rpcrt4/rpc_epmap.c b/dlls/rpcrt4/rpc_epmap.c
index ac7f25b..5929a4b 100644
--- a/dlls/rpcrt4/rpc_epmap.c
+++ b/dlls/rpcrt4/rpc_epmap.c
@@ -172,11 +172,8 @@ static LONG WINAPI rpc_filter(EXCEPTION_POINTERS *__eptr)
     }
 }
 
-/***********************************************************************
- *             RpcEpRegisterA (RPCRT4.@)
- */
-RPC_STATUS WINAPI RpcEpRegisterA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *BindingVector,
-                                  UUID_VECTOR *UuidVector, RPC_CSTR Annotation )
+static RPC_STATUS epm_register( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *BindingVector,
+                                UUID_VECTOR *UuidVector, RPC_CSTR Annotation, BOOL replace )
 {
   PRPC_SERVER_INTERFACE If = IfSpec;
   ULONG i;
@@ -185,7 +182,7 @@ RPC_STATUS WINAPI RpcEpRegisterA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *Bind
   ept_entry_t *entries;
   handle_t handle;
 
-  TRACE("(%p,%p,%p,%s)\n", IfSpec, BindingVector, UuidVector, debugstr_a((char*)Annotation));
+  TRACE("(%p,%p,%p,%s) replace=%d\n", IfSpec, BindingVector, UuidVector, debugstr_a((char*)Annotation), replace);
   TRACE(" ifid=%s\n", debugstr_guid(&If->InterfaceId.SyntaxGUID));
   for (i=0; i<BindingVector->Count; i++) {
     RpcBinding* bind = BindingVector->BindingH[i];
@@ -239,7 +236,7 @@ RPC_STATUS WINAPI RpcEpRegisterA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *Bind
           __TRY
           {
               ept_insert(handle, BindingVector->Count * (UuidVector ? UuidVector->Count : 1),
-                         entries, TRUE, &status2);
+                         entries, replace, &status2);
           }
           __EXCEPT(rpc_filter)
           {
@@ -273,6 +270,24 @@ RPC_STATUS WINAPI RpcEpRegisterA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *Bind
 }
 
 /***********************************************************************
+ *             RpcEpRegisterA (RPCRT4.@)
+ */
+RPC_STATUS WINAPI RpcEpRegisterA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *BindingVector,
+                                  UUID_VECTOR *UuidVector, RPC_CSTR Annotation )
+{
+    return epm_register(IfSpec, BindingVector, UuidVector, Annotation, TRUE);
+}
+
+/***********************************************************************
+ *             RpcEpRegisterNoReplaceA (RPCRT4.@)
+ */
+RPC_STATUS WINAPI RpcEpRegisterNoReplaceA( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *BindingVector,
+                                           UUID_VECTOR *UuidVector, RPC_CSTR Annotation )
+{
+    return epm_register(IfSpec, BindingVector, UuidVector, Annotation, FALSE);
+}
+
+/***********************************************************************
  *             RpcEpRegisterW (RPCRT4.@)
  */
 RPC_STATUS WINAPI RpcEpRegisterW( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *BindingVector,
@@ -281,7 +296,7 @@ RPC_STATUS WINAPI RpcEpRegisterW( RPC_IF_HANDLE IfSpec, RPC_BINDING_VECTOR *Bind
   LPSTR annA = RPCRT4_strdupWtoA(Annotation);
   RPC_STATUS status;
 
-  status = RpcEpRegisterA(IfSpec, BindingVector, UuidVector, (RPC_CSTR)annA);
+  status = epm_register(IfSpec, BindingVector, UuidVector, (RPC_CSTR)annA, TRUE);
 
   HeapFree(GetProcessHeap(), 0, annA);
   return status;
diff --git a/dlls/rpcrt4/rpcrt4.spec b/dlls/rpcrt4/rpcrt4.spec
index 38d29e8..942fbab 100644
--- a/dlls/rpcrt4/rpcrt4.spec
+++ b/dlls/rpcrt4/rpcrt4.spec
@@ -369,7 +369,7 @@
 @ stub RpcCertGeneratePrincipalNameW
 @ stdcall RpcCompleteAsyncCall(ptr ptr) RpcAsyncCompleteCall
 @ stdcall RpcEpRegisterA(ptr ptr ptr str)
-@ stub RpcEpRegisterNoReplaceA
+@ stdcall RpcEpRegisterNoReplaceA(ptr ptr ptr str)
 @ stub RpcEpRegisterNoReplaceW
 @ stdcall RpcEpRegisterW(ptr ptr ptr wstr)
 @ stdcall RpcEpResolveBinding(ptr ptr)




More information about the wine-cvs mailing list