阅读:1861回复:6
怎么关闭在DriverEntry()中打开的文件?
在DriverEntry()中打开了一个文件, 结果在IRP_MJ_DEVICE_CONTROL的处理函数中用zwclose()关闭失败, 返回为STATUS_INVALID_HANDLE.
我的handle声明是全局的. 怎么办? ZwCreateFile( &handle, GENERIC_READ, &objectAttributes, &iostatus, NULL, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ, FILE_OPEN,//对文件打开,如果不存在则返回错误 FILE_NON_DIRECTORY_FILE, NULL, 0 ); zwclose()中说: a handle that ZwCreateKey returns to a DriverEntry routine cannot subsequently be closed by the same driver's dispatch routines. |
|
沙发#
发布于:2012-02-16 21:45
放在设备的扩展中呢?
|
|
板凳#
发布于:2012-02-17 11:52
我试了, 放在设备扩展中也不行.
|
|
地板#
发布于:2012-02-19 17:46
声明一个static的HANDLE放在.h文件中使用。初始化为NULL
|
|
地下室#
发布于:2012-02-20 11:31
我试了, 声明为static 也不行.
|
|
5楼#
发布于:2012-02-20 17:30
InitializeObjectAttributes() 第3个参数中加入| OBJ_KERNEL_HANDLE.
问题就解决了. |
|
6楼#
发布于:2012-02-26 10:21
学习了,帮顶一下!
|
|
|