能力值:
( LV2,RANK:10 )
2 楼
书上是
// 拷贝重要标志位。
if(oldobj->Flags & DO_BUFFERED_IO)
(*fltobj)->Flags |= DO_BUFFERED_IO;
if(oldobj->Flags & DO_DIRECT_IO)
(*fltobj)->Flags |= DO_DIRECT_IO; 标志位是 |= 你怎么是&=
if(targetdevice.Flags & DO_BUFFERED_IO)//拷贝重要标志位
newdevice.Flags &= DO_BUFFERED_IO;
if(targetdevice.Flags & DO_DIRECT_IO)
newdevice.Flags &= DO_DIRECT_IO;
看看是不是这个原因呢
能力值:
( LV2,RANK:10 )
3 楼
感谢指出,我粗心了。
但是改之后还是蓝,还是运行到IoAttachDeviceToDeviceStack这个函数就蓝屏了
能力值:
( LV2,RANK:10 )
4 楼
DEVICE_OBJECT newdevice;//过滤设备对象
status = IoCreateDevice(driver, 0, NULL, targetdevice.DeviceType, 0, FALSE, &newdevice);//创建过滤设备
poutdevice = IoAttachDeviceToDeviceStack(&newdevice, &targetdevice);//绑定设备
书上
PDEVICE_OBJECT *fltobj,
// 生成设备,然后绑定之。
status = IoCreateDevice(driver,0,NULL, oldobj->DeviceType,0,
FALSE,fltobj);
topdev = IoAttachDeviceToDeviceStack(*fltobj,oldobj);
DEVICE_OBJECT newdevice;//过滤设备对象
PDEVICE_OBJECT *fltobj,
newdevice是对象 &newdevice 相当于*fltobj 不是fltobj
能力值:
( LV2,RANK:10 )
5 楼
DEVICE_OBJECT newdevice;
&newdevice就是PDEVICE_OBJECT
...
能力值:
( LV12,RANK:270 )
6 楼
淡定……
NTSTATUS
IoCreateDevice(
IN PDRIVER_OBJECT DriverObject,
IN ULONG DeviceExtensionSize,
IN PUNICODE_STRING DeviceName OPTIONAL,
IN DEVICE_TYPE DeviceType,
IN ULONG DeviceCharacteristics,
IN BOOLEAN Exclusive,
OUT PDEVICE_OBJECT *DeviceObject
);
注意最后一个参数……
能力值:
( LV2,RANK:10 )
7 楼
DEVICE_OBJECT newdevice;
&newdevice就是PDEVICE_OBJECT pdev_obj;
pdev_obj=&newdevice;
pdev_obj是指针;
但是PDEVICE_OBJECT *fltobj;
fltobj=&pdev_obj;相当于指针的指针
能力值:
( LV2,RANK:10 )
8 楼
多谢各位指出。
tunesmith不好意思,对刚刚言语向你道歉
能力值:
( LV2,RANK:10 )
9 楼
哈,算了,讨论程序而已,没啥事。