Module: wine Branch: master Commit: fef28ec6cb1a0573d03a67de90b59d618ecef17c URL: http://source.winehq.org/git/wine.git/?a=commit;h=fef28ec6cb1a0573d03a67de90...
Author: Rob Shearman rob@codeweavers.com Date: Mon Jan 7 15:20:50 2008 +0000
rpcrt4: Add stubs for asynchronous functions.
---
dlls/rpcrt4/Makefile.in | 1 + dlls/rpcrt4/rpc_async.c | 131 +++++++++++++++++++++++++++++++++++++++++++++++ dlls/rpcrt4/rpcrt4.spec | 20 ++++---- 3 files changed, 142 insertions(+), 10 deletions(-)
diff --git a/dlls/rpcrt4/Makefile.in b/dlls/rpcrt4/Makefile.in index abfea12..5cb090b 100644 --- a/dlls/rpcrt4/Makefile.in +++ b/dlls/rpcrt4/Makefile.in @@ -20,6 +20,7 @@ C_SRCS = \ ndr_ole.c \ ndr_stubless.c \ rpc_assoc.c \ + rpc_async.c \ rpc_binding.c \ rpc_epmap.c \ rpc_message.c \ diff --git a/dlls/rpcrt4/rpc_async.c b/dlls/rpcrt4/rpc_async.c new file mode 100644 index 0000000..c57337a --- /dev/null +++ b/dlls/rpcrt4/rpc_async.c @@ -0,0 +1,131 @@ +/* + * Asynchronous Call Support Functions + * + * Copyright 2007 Robert Shearman (for CodeWeavers) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + */ + +#include <stdarg.h> + +#include "rpc.h" +#include "rpcndr.h" +#include "rpcasync.h" + +#include "wine/debug.h" + +#include "rpc_binding.h" +#include "rpc_message.h" + +WINE_DEFAULT_DEBUG_CHANNEL(rpc); + +/*********************************************************************** + * RpcAsyncInitializeHandle [RPCRT4.@] + * + * Initialises an asynchronous state so it can be used in other asynchronous + * functions and for use in asynchronous calls. + * + * PARAMS + * pAsync [I] Asynchronous state to initialise. + * Size [I] Size of the memory pointed to by pAsync. + * + * RETURNS + * Success: RPC_S_OK. + * Failure: Any error code. + */ +RPC_STATUS WINAPI RpcAsyncInitializeHandle(PRPC_ASYNC_STATE pAsync, unsigned int Size) +{ + FIXME("(%p, %d): stub\n", pAsync, Size); + return RPC_S_INVALID_ASYNC_HANDLE; +} + +/*********************************************************************** + * RpcAsyncGetCallStatus [RPCRT4.@] + * + * Retrieves the current status of the asynchronous call taking place. + * + * PARAMS + * pAsync [I] Asynchronous state to initialise. + * + * RETURNS + * RPC_S_OK - The call was successfully completed. + * RPC_S_INVALID_ASYNC_HANDLE - The asynchronous structure is not valid. + * RPC_S_ASYNC_CALL_PENDING - The call is still in progress and has not been completed. + * Any other error code - The call failed. + */ +RPC_STATUS WINAPI RpcAsyncGetCallStatus(PRPC_ASYNC_STATE pAsync) +{ + FIXME("(%p): stub\n", pAsync); + return RPC_S_INVALID_ASYNC_HANDLE; +} + +/*********************************************************************** + * RpcAsyncCompleteCall [RPCRT4.@] + * + * Completes a client or server asynchronous call. + * + * PARAMS + * pAsync [I] Asynchronous state to initialise. + * Reply [I] The return value of the asynchronous function. + * + * RETURNS + * Success: RPC_S_OK. + * Failure: Any error code. + */ +RPC_STATUS WINAPI RpcAsyncCompleteCall(PRPC_ASYNC_STATE pAsync, void *Reply) +{ + FIXME("(%p, %p): stub\n", pAsync, Reply); + return RPC_S_INVALID_ASYNC_HANDLE; +} + +/*********************************************************************** + * RpcAsyncAbortCall [RPCRT4.@] + * + * Aborts the asynchronous server call taking place. + * + * PARAMS + * pAsync [I] Asynchronous server state to abort. + * ExceptionCode [I] Exception code to return to the client in a fault packet. + * + * RETURNS + * Success: RPC_S_OK. + * Failure: Any error code. + */ +RPC_STATUS WINAPI RpcAsyncAbortCall(PRPC_ASYNC_STATE pAsync, ULONG ExceptionCode) +{ + FIXME("(%p, %d/0x%x): stub\n", pAsync, ExceptionCode, ExceptionCode); + return RPC_S_INVALID_ASYNC_HANDLE; +} + +/*********************************************************************** + * RpcAsyncCancelCall [RPCRT4.@] + * + * Cancels the asynchronous client call taking place. + * + * PARAMS + * pAsync [I] Asynchronous client state to abort. + * fAbortCall [I] If TRUE, then send a cancel to the server, otherwise + * just wait for the call to complete. + * + * RETURNS + * Success: RPC_S_OK. + * Failure: Any error code. + */ +RPC_STATUS WINAPI RpcAsyncCancelCall(PRPC_ASYNC_STATE pAsync, BOOL fAbortCall) +{ + FIXME("(%p, %s): stub\n", pAsync, fAbortCall ? "TRUE" : "FALSE"); + return RPC_S_INVALID_ASYNC_HANDLE; +} diff --git a/dlls/rpcrt4/rpcrt4.spec b/dlls/rpcrt4/rpcrt4.spec index 224d3a8..3dc9edc 100644 --- a/dlls/rpcrt4/rpcrt4.spec +++ b/dlls/rpcrt4/rpcrt4.spec @@ -362,12 +362,12 @@ @ stub NdrpSetRpcSsDefaults @ stub NdrpVarVtOfTypeDesc # wxp @ stub PerformRpcInitialization -@ stub RpcAbortAsyncCall -@ stub RpcAsyncAbortCall -@ stub RpcAsyncCancelCall -@ stub RpcAsyncCompleteCall -@ stub RpcAsyncGetCallStatus -@ stub RpcAsyncInitializeHandle +@ stdcall RpcAbortAsyncCall(ptr long) RpcAsyncAbortCall +@ stdcall RpcAsyncAbortCall(ptr long) +@ stdcall RpcAsyncCancelCall(ptr long) +@ stdcall RpcAsyncCompleteCall(ptr ptr) +@ stdcall RpcAsyncGetCallStatus(ptr) +@ stdcall RpcAsyncInitializeHandle(ptr long) @ stub RpcAsyncRegisterInfo @ stdcall RpcBindingCopy(ptr ptr) @ stdcall RpcBindingFree(ptr) @@ -394,12 +394,12 @@ @ stdcall RpcBindingToStringBindingA(ptr ptr) @ stdcall RpcBindingToStringBindingW(ptr ptr) @ stdcall RpcBindingVectorFree(ptr) -@ stub RpcCancelAsyncCall +@ stdcall RpcCancelAsyncCall(ptr long) RpcAsyncCancelCall @ stdcall RpcCancelThread(ptr) @ stub RpcCancelThreadEx @ stub RpcCertGeneratePrincipalNameA @ stub RpcCertGeneratePrincipalNameW -@ stub RpcCompleteAsyncCall +@ stdcall RpcCompleteAsyncCall(ptr ptr) RpcAsyncCompleteCall @ stdcall RpcEpRegisterA(ptr ptr ptr str) @ stub RpcEpRegisterNoReplaceA @ stub RpcEpRegisterNoReplaceW @@ -416,11 +416,11 @@ @ stub RpcErrorSaveErrorInfo # wxp @ stdcall RpcErrorStartEnumeration(ptr) @ stub RpcFreeAuthorizationContext # wxp -@ stub RpcGetAsyncCallStatus +@ stdcall RpcGetAsyncCallStatus(ptr) RpcAsyncGetCallStatus @ stub RpcIfIdVectorFree @ stub RpcIfInqId @ stdcall RpcImpersonateClient(ptr) -@ stub RpcInitializeAsyncHandle +@ stdcall RpcInitializeAsyncHandle(ptr long) RpcAsyncInitializeHandle @ stub RpcMgmtBindingInqParameter # win9x @ stub RpcMgmtBindingSetParameter # win9x @ stdcall RpcMgmtEnableIdleCleanup()