- 注册时间
- 2011-3-6
- 最后登录
- 1970-1-1
该用户从未签到
|
代码1
#define _WIN32_WINNT 0x0400
#define WIN32_LEAN_AND_MEAN // 从 Windows 头中排除极少使用的资料
#include <iostream>
#include <windows.h>
#include <Winbase.h>
using namespace std;
DWORD WINAPI WorkThread(LPVOID pParam)
{
HANDLE Event = (HANDLE)pParam;
for(;;)
{
DWORD dwRet = WaitForSingleObjectEx(Event, INFINITE, TRUE);
if(dwRet == WAIT_OBJECT_0)
break;
else
if(dwRet == WAIT_IO_COMPLETION)
printf("WAIT_IO_COMPLETION\n");
return 0;
}
}
VOID WINAPI APCProc(LPVOID dwParam)
{
printf("%s", (PVOID)dwParam);
}
void TestAPC(BOOL bFast)
{
HANDLE QuitEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
HANDLE hThread = CreateThread(NULL,
,
WorkThread,
(LPVOID)QuitEvent,
,
NULL);
Sleep(100); // Wait for WorkThread initialized.
for(int i=5; i>0; i--)
{
QueueUserAPC((PAPCFUNC)APCProc, hThread, (DWORD)(PVOID)"APC here\n");
if(!bFast)
Sleep(1000);
}
SetEvent(QuitEvent);
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
}
int main()
{
TestAPC(true);
return 0;
} |
|