[大体流程]
Win32与Kernel交互,从User层向内核发送2个请求:
0 IOCTL_Start_Thread : 从内核新建一个线程,最多建立MAX_THREAD_NUM个线程;
1 IOCTL_Stop_Thread : 关闭刚才建立的所有线程;
每个线程做同样的事,每次将变量Count增加1,使用一个FAST_MUTEX来同步加1操作。
线程过程如下,没什么特别说明的,其中为了照顾偶的眼球眨动频率,特地做了1s的延时。
DDKAPI VOID CountThreadMain(IN PVOID pContext) { PDEVICE_EX pDevEx = (PDEVICE_EX)pContext; LARGE_INTEGER dt = RtlConvertLongToLargeInteger(/ -10 * 1000 * 1000); ULONG tid = (ULONG)PsGetCurrentThreadId(); PRINT("[%s]entry new thread[id:%d