阅读:1532回复:6
关于设备对象的引用计数
我想对设备\\\\Device\\\\A进行过滤 ,首先调用IoGetDeviceObjectPointer(DeviceName,……)得到设备\\\\Device\\\\A的指针,然后调用ObReferenceObjectByPointer(DeviceObject,FILE_ALL_ACCESS, NULL, KernelMode);增加引用计数。
请问我在删除我的过滤设备时,是否需要调用ObDereferenceObject(DeviceObject);减少设备\\\\Device\\\\A的引用计数呢? :( :( 谢了…… |
|
沙发#
发布于:2002-08-07 13:52
必须,ddk文档中有说明。
|
|
|
板凳#
发布于:2002-08-07 13:58
我想对设备\\\\Device\\\\A进行过滤 ,首先调用IoGetDeviceObjectPointer(DeviceName,……)得到设备\\\\Device\\\\A的指针,然后调用ObReferenceObjectByPointer(DeviceObject,FILE_ALL_ACCESS, NULL, KernelMode);增加引用计数。 这是原则。 |
|
|
地板#
发布于:2002-08-07 14:05
这是显然的
|
|
|
地下室#
发布于:2002-08-07 14:07
嗯
|
|
5楼#
发布于:2002-08-07 14:22
我也觉得应该这样
可是我这样做了,程序就会出现异常,而不减少引用计数时,程序运行正常,没见出什么乱子 我想知道如果不减少引用计数,那会有怎样的情况发生? 另,程序我是用driverstudio做的,这些增加、减少引用计数的操作是不是由KDevice、KLOwerDevice做了? |
|
6楼#
发布于:2002-08-07 14:37
ds中KLowerDevice的析构函数的底层服务函数就是ObDereferenceObje。
|
|
|