Rob Shearman : rpcrt4: Implement RpcCancelThreadEx.
Alexandre Julliard
julliard at winehq.org
Mon Jul 14 05:57:13 CDT 2008
Module: wine
Branch: master
Commit: 7551b82cca1240375ccdd0f3d574851efe3d70b9
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7551b82cca1240375ccdd0f3d574851efe3d70b9
Author: Rob Shearman <robertshearman at gmail.com>
Date: Mon Jul 14 08:08:03 2008 +0100
rpcrt4: Implement RpcCancelThreadEx.
Implement RpcCancelThreadEx using existing code moved into a new
function, rpc_ccancel_thread.
Implement RpcCancelThread based on RpcCancelThreadEx with timeout of 0.
---
dlls/rpcrt4/rpcrt4_main.c | 36 ++++++++++++++++++++++++------------
1 files changed, 24 insertions(+), 12 deletions(-)
diff --git a/dlls/rpcrt4/rpcrt4_main.c b/dlls/rpcrt4/rpcrt4_main.c
index f70892c..1f0b1bb 100644
--- a/dlls/rpcrt4/rpcrt4_main.c
+++ b/dlls/rpcrt4/rpcrt4_main.c
@@ -968,20 +968,10 @@ NDR_SCONTEXT RPCRT4_PopThreadContextHandle(void)
return context_handle;
}
-/******************************************************************************
- * RpcCancelThread (rpcrt4.@)
- */
-RPC_STATUS RPC_ENTRY RpcCancelThread(void* ThreadHandle)
+static RPC_STATUS rpc_cancel_thread(DWORD target_tid)
{
- DWORD target_tid;
struct threaddata *tdata;
- TRACE("(%p)\n", ThreadHandle);
-
- target_tid = GetThreadId(ThreadHandle);
- if (!target_tid)
- return RPC_S_INVALID_ARG;
-
EnterCriticalSection(&threaddata_cs);
LIST_FOR_EACH_ENTRY(tdata, &threaddata_list, struct threaddata, entry)
if (tdata->thread_id == target_tid)
@@ -997,10 +987,32 @@ RPC_STATUS RPC_ENTRY RpcCancelThread(void* ThreadHandle)
}
/******************************************************************************
+ * RpcCancelThread (rpcrt4.@)
+ */
+RPC_STATUS RPC_ENTRY RpcCancelThread(void* ThreadHandle)
+{
+ TRACE("(%p)\n", ThreadHandle);
+ return RpcCancelThreadEx(ThreadHandle, 0);
+}
+
+/******************************************************************************
* RpcCancelThreadEx (rpcrt4.@)
*/
RPC_STATUS RPC_ENTRY RpcCancelThreadEx(void* ThreadHandle, LONG Timeout)
{
+ DWORD target_tid;
+
FIXME("(%p, %d)\n", ThreadHandle, Timeout);
- return RPC_S_OK;
+
+ target_tid = GetThreadId(ThreadHandle);
+ if (!target_tid)
+ return RPC_S_INVALID_ARG;
+
+ if (Timeout)
+ {
+ FIXME("(%p, %d)\n", ThreadHandle, Timeout);
+ return RPC_S_OK;
+ }
+ else
+ return rpc_cancel_thread(target_tid);
}
More information about the wine-cvs
mailing list