【发布时间】:2017-11-24 20:14:30
【问题描述】:
我的服务器正在尝试从线程中调用 RPC 回调函数。遵循示例 How To Use RPC Callback Functions 并稍微扩展这是我正在尝试做的事情
[ SAMPLE.IDL ]
[
uuid(9FEE4F51-0396-101A-AE4F-08002B2D0065),
version(1.0),
pointer_default( unique )
]
{
void RPCProc( [in, string] unsigned char *pszStr );
[callback] void CallbackProc([in,string] unsigned char *pszStr);
}
[ SAMPLEC.C (Client)]
void CallbackProc( unsigned char *pszString )
{
printf("Call from server, printed on client: %s", pszStr );
}
[ SAMPLES.C (Server)]
DWORD WINAPI thread(LPVOID lp)
{
CallbackProc(lp);
return 0;
}
void RPCProc( unsigned char *pszStr )
{
// WORKS
CallbackProc(pszStr);
// WORKS
thread(pszStr);
// Exception: 0x000006A6 binding handle invalid
HANDLE h = CreateThread(NULL, 0, thread, pszStr, 0, NULL);
WaitForSingleObject(h, INFINITE);
}
当 CallbackProc 在线程内被调用时,就是抛出异常的时候。
【问题讨论】:
-
当你在创建线程中所做的只是等待新线程终止时,为什么还要创建一个线程?为什么不直接调用异常处理函数呢?
-
这是一个简单的视图。我的代码做得更多。如果你运行这个示例,它会抛出异常。
标签: c multithreading winapi rpc