=?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