今天在写创建线程的驱动程序时,发现了PsCreateSystemThread函数的一点小问题
这个函数是用于创建线程的,该函数的原型如下:
NTSTATUS
PsCreateSystemThread(
OUT PHANDLE ThreadHandle,
IN ULONG DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN HANDLE ProcessHandle OPTIONAL,
OUT PCLIENT_ID ClientId OPTIONAL,
IN PKSTART_ROUTINE StartRoutine,
IN PVOID StartContext
);
这个函数里有7个参数,但是我发现我写成了8个参数,在编译的时候,也没有报错,如下:
PsCreateSystemThread(&hMyThread,
0,
NULL,
NULL,
NULL,
NULL,
MyThreadProc,
NULL);
虽然编译的时候,没有报错,但是加载驱动之后,并没有创建成功,这很容易让人误解,明明一个简单
的创建线程的程序,为什么不成功,后来我仔细看了一下参数,才发现这个问题,看来以后写程序,要
多多注意参数的个数。。