卸载驱动蓝屏
#pragma INITCODE
void A()
{
PVOID Pointer = NULL;
KdPrint(("Enter ProbeTest\n"));
__try
{
KdPrint(("Enter __try block\n"));
KdPrint(("Leave __try block\n"));
}
__finally
{
KdPrint(("Catch the exception\n"));
KdPrint(("The program will keep going\n"));
}
KdPrint(("Leave ProbeTest\n"));
}
#pragma INITCODE
NTSTATUS B()
{
NTSTATUS status = STATUS_SUCCESS;
__try
{
}
__finally
{
KdPrint(("Enter finallly block\n"));
}
return status;
}
#pragma INITCODE
NTSTATUS C()
{
KdPrint(("Enter Foo\n"));
KdPrint(("Leave Foo\n"));
return STATUS_SUCCESS;
}
#pragma INITCODE
extern "C" NTSTATUS DriverEntry (
IN PDRIVER_OBJECT pDriverObject,
IN PUNICODE_STRING pRegistryPath )
{
//创建一个设备的代码,没有问题
//
//..........
//
//加上这3个函数,就会在卸载驱动的时候蓝屏
//蓝屏错误码: PAGE_FAULT_IN_NONPAGED_AREA
A();
B();
C();
}
//A,B,C函数是我简化了,为了方便观看。
//注释A,B,C任何一个函数都不会蓝屏。就是在三个同时存在的时候就蓝了。
//注释一个KdPrint也不蓝。太诡异了。
//程序是在checked下测试的。。。寻找原因和解答?????