在驱动中停止等待很容易是哼歌系统陷入"停顿",最后只能重启电脑,但是一个单独的线程长期等待,还不至于对系统造成致命的影响。有些任务是希望长期不断的执行,比如 不断的写入日志,为此,启动一个特殊的线程来执行他们是最好的办法,
驱动中生成的线程一般是系统线程。系统线程所在的进程名:“System”,用到的内核API 函数原型如下:
NTSTATUS PsCreateSystemThread( _Out_ PHANDLE ThreadHandle, _In_ ULONG DesiredAccess, _In_opt_ POBJECT_ATTRIBUTES ObjectAttributes, _In_opt_ HANDLE ProcessHandle, _Out_opt_ PCLIENT_ID ClientId, _In_ PKSTART_ROUTINE StartRoutine, _In_opt_ PVOID StartContext );这个函数参数也是够多的, 但是参数传入很简单: ThreadHandle 用来返回句柄,放入一个句柄指针即可; DesiredAddress 总是填写 0, 后面的3个参数都填写 NULL;最后的2个参数有一个用于该线程启动的时候去执行的函数,剩下的一个是用于传入该函数的参数。
这个就是启动函数的原型:
VOID CustomThreadProc(IN PVOID context);