DriverObject->DriverUnload = DriverUnload;
DriverObject->MajorFunction[IRP_MJ_CREATE] = DriverObject->MajorFunction[IRP_MJ_CLOSE] = Dispatch;
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchDeviceControl;
经测试,在Dispatch和DispatchDeviceControl等派遣例程中,建、删、读、写文件(为了输出调试信息)总会失败,而在DriverEntry和DriverUnload中却正常,就算使用DriverEntry中已经打开成功的FILE HANDLE,在这些派遣例程中也会失败,可DriverUnload中使用正常,成功输出.
无奈,不知何解?
9 个解决方案
#1
驱动中写文件比较麻烦,还要考虑IRP重入问题,你可以用DebugView来监视你打出的LOG,顺便DebugView也可以写将log写入文件(需要事先指定文件名)
#2
#3
<table cellspacing="0" cellpadding="0" class="mtxt"><tr><td csdnid="rbody_71387953" id="rbody_71387953"><div class="msgfont"></div><!--End_rbody_71387953//--></td></tr>
<tr><td csdnid="rmodify_71387953"><p class="be">该回复于2011-01-24 16:38:28被管理员删除 </p></td></tr></table>
<tr><td csdnid="rmodify_71387953"><p class="be">该回复于2011-01-24 16:38:28被管理员删除 </p></td></tr></table>
#4
有道理
#5
你就用KdPrint、DbgPrint输出,DebugView中查看
#6
log4cpp
#7
感谢大家的回复。
但现在问题是,如果一定要操作文件怎么办?(不限于输出调试信息)。
不知道为什么不行。
但现在问题是,如果一定要操作文件怎么办?(不限于输出调试信息)。
不知道为什么不行。
#8
有关调试信息输出问题,可以保存到Buffer中,在DriverUnload中统一输出。
但是问题来了。。。。。。。。。。。。。。。。。。。。见上楼
但是问题来了。。。。。。。。。。。。。。。。。。。。见上楼
#9
没落了。。。。。。。
#1
驱动中写文件比较麻烦,还要考虑IRP重入问题,你可以用DebugView来监视你打出的LOG,顺便DebugView也可以写将log写入文件(需要事先指定文件名)
#2
#3
<table cellspacing="0" cellpadding="0" class="mtxt"><tr><td csdnid="rbody_71387953" id="rbody_71387953"><div class="msgfont"></div><!--End_rbody_71387953//--></td></tr>
<tr><td csdnid="rmodify_71387953"><p class="be">该回复于2011-01-24 16:38:28被管理员删除 </p></td></tr></table>
<tr><td csdnid="rmodify_71387953"><p class="be">该回复于2011-01-24 16:38:28被管理员删除 </p></td></tr></table>
#4
有道理
#5
你就用KdPrint、DbgPrint输出,DebugView中查看
#6
log4cpp
#7
感谢大家的回复。
但现在问题是,如果一定要操作文件怎么办?(不限于输出调试信息)。
不知道为什么不行。
但现在问题是,如果一定要操作文件怎么办?(不限于输出调试信息)。
不知道为什么不行。
#8
有关调试信息输出问题,可以保存到Buffer中,在DriverUnload中统一输出。
但是问题来了。。。。。。。。。。。。。。。。。。。。见上楼
但是问题来了。。。。。。。。。。。。。。。。。。。。见上楼
#9
没落了。。。。。。。