From 6141cc800c05246c7267c2734e7579545dc623d5 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Fri, 15 Apr 2016 15:35:13 +0200 Subject: [PATCH] rpcrt4: Added RpcServerRegisterIf3 implementation. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/rpcrt4/rpc_server.c | 21 +++++++++++++++++---- dlls/rpcrt4/rpcrt4.spec | 1 + include/rpcdce.h | 5 +++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/dlls/rpcrt4/rpc_server.c b/dlls/rpcrt4/rpc_server.c index 9c3dea743ec..809ecefd219 100644 --- a/dlls/rpcrt4/rpc_server.c +++ b/dlls/rpcrt4/rpc_server.c @@ -1101,7 +1101,7 @@ void RPCRT4_destroy_all_protseqs(void) RPC_STATUS WINAPI RpcServerRegisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv ) { TRACE("(%p,%s,%p)\n", IfSpec, debugstr_guid(MgrTypeUuid), MgrEpv); - return RpcServerRegisterIf2( IfSpec, MgrTypeUuid, MgrEpv, 0, RPC_C_LISTEN_MAX_CALLS_DEFAULT, (UINT)-1, NULL ); + return RpcServerRegisterIf3( IfSpec, MgrTypeUuid, MgrEpv, 0, RPC_C_LISTEN_MAX_CALLS_DEFAULT, (UINT)-1, NULL, NULL ); } /*********************************************************************** @@ -1111,7 +1111,7 @@ RPC_STATUS WINAPI RpcServerRegisterIfEx( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid UINT Flags, UINT MaxCalls, RPC_IF_CALLBACK_FN* IfCallbackFn ) { TRACE("(%p,%s,%p,%u,%u,%p)\n", IfSpec, debugstr_guid(MgrTypeUuid), MgrEpv, Flags, MaxCalls, IfCallbackFn); - return RpcServerRegisterIf2( IfSpec, MgrTypeUuid, MgrEpv, Flags, MaxCalls, (UINT)-1, IfCallbackFn ); + return RpcServerRegisterIf3( IfSpec, MgrTypeUuid, MgrEpv, Flags, MaxCalls, (UINT)-1, IfCallbackFn, NULL ); } /*********************************************************************** @@ -1119,13 +1119,26 @@ RPC_STATUS WINAPI RpcServerRegisterIfEx( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid */ RPC_STATUS WINAPI RpcServerRegisterIf2( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv, UINT Flags, UINT MaxCalls, UINT MaxRpcSize, RPC_IF_CALLBACK_FN* IfCallbackFn ) +{ + return RpcServerRegisterIf3( IfSpec, MgrTypeUuid, MgrEpv, Flags, MaxCalls, MaxRpcSize, IfCallbackFn, NULL ); +} + +/*********************************************************************** + * RpcServerRegisterIf3 (RPCRT4.@) + */ +RPC_STATUS WINAPI RpcServerRegisterIf3( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv, + UINT Flags, UINT MaxCalls, UINT MaxRpcSize, RPC_IF_CALLBACK_FN* IfCallbackFn, void* SecurityDescriptor) { PRPC_SERVER_INTERFACE If = IfSpec; RpcServerInterface* sif; unsigned int i; - TRACE("(%p,%s,%p,%u,%u,%u,%p)\n", IfSpec, debugstr_guid(MgrTypeUuid), MgrEpv, Flags, MaxCalls, - MaxRpcSize, IfCallbackFn); + TRACE("(%p,%s,%p,%u,%u,%u,%p,%p)\n", IfSpec, debugstr_guid(MgrTypeUuid), MgrEpv, Flags, MaxCalls, + MaxRpcSize, IfCallbackFn, SecurityDescriptor); + + if (SecurityDescriptor) + FIXME("Unsupported SecurityDescriptor argument.\n"); + TRACE(" interface id: %s %d.%d\n", debugstr_guid(&If->InterfaceId.SyntaxGUID), If->InterfaceId.SyntaxVersion.MajorVersion, If->InterfaceId.SyntaxVersion.MinorVersion); diff --git a/dlls/rpcrt4/rpcrt4.spec b/dlls/rpcrt4/rpcrt4.spec index af8d639bba4..f85d263e483 100644 --- a/dlls/rpcrt4/rpcrt4.spec +++ b/dlls/rpcrt4/rpcrt4.spec @@ -434,6 +434,7 @@ @ stdcall RpcServerRegisterAuthInfoA(str long ptr ptr) @ stdcall RpcServerRegisterAuthInfoW(wstr long ptr ptr) @ stdcall RpcServerRegisterIf2(ptr ptr ptr long long long ptr) +@ stdcall RpcServerRegisterIf3(ptr ptr ptr long long long ptr ptr) @ stdcall RpcServerRegisterIf(ptr ptr ptr) @ stdcall RpcServerRegisterIfEx(ptr ptr ptr long long ptr) @ stub RpcServerTestCancel diff --git a/include/rpcdce.h b/include/rpcdce.h index 84f63300ed2..f5f031c262b 100644 --- a/include/rpcdce.h +++ b/include/rpcdce.h @@ -452,6 +452,11 @@ RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerRegisterIf2( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv, unsigned int Flags, unsigned int MaxCalls, unsigned int MaxRpcSize, RPC_IF_CALLBACK_FN* IfCallbackFn ); +RPCRTAPI RPC_STATUS RPC_ENTRY + RpcServerRegisterIf3( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, RPC_MGR_EPV* MgrEpv, + unsigned int Flags, unsigned int MaxCalls, unsigned int MaxRpcSize, + RPC_IF_CALLBACK_FN* IfCallbackFn, void* SecurityDescriptor ); + RPCRTAPI RPC_STATUS RPC_ENTRY RpcServerUnregisterIf( RPC_IF_HANDLE IfSpec, UUID* MgrTypeUuid, unsigned int WaitForCallsToComplete );