阅读:3168回复:2
code_seg("INIT")初始化后UNLoad蓝屏
在code_seg("INIT")区域函数中
UNICODE_STRING symLinkName; RtlInitUnicodeString(&symLinkName,L"\\??\\HelloDDK5");//会因code_seg("INIT")出现蓝屏。。但是,有时有,有时没有 pDevExt->ustrSymLinkName = symLinkName;//保存在设备扩展区中 status = IoCreateSymbolicLink( &symLinkName,&devName ); UnLoad时 PDEVICE_EXTENSION pDevExt = (PDEVICE_EXTENSION)pNextObj->DeviceExtension; //删除符号链接 UNICODE_STRING pLinkName = pDevExt->ustrSymLinkName; IoDeleteSymbolicLink(&pLinkName);//这句不可访问。。。有时出现蓝屏 pNextObj = pNextObj->NextDevice; IoDeleteDevice( pDevExt->pDevice ); 这驱动是根据编译出大小有关出现蓝屏。。6kb时会出现 |
|
|
沙发#
发布于:2009-05-01 11:30
check pLinkName 是否还在
|
|
|
板凳#
发布于:2009-05-08 23:43
回 1楼(guard366) 的帖子
code_seg("INIT")表示运行完后该代码会被卸载,那么其中的变量也就可能是无效的地址了,symLinkName是局部变量,该段代码运行完后它就无效了,把它赋给pDevExt->ustrSymLinkName自然会出错 |
|