阅读:1462回复:2
由Handle得到文件完整路径的问题
我的做法是:
先由ObReferenceObjectByHandle得到FileObject 然后: 文件名(不带盘符):FileObject->FileName 盘符:RtlVolumeDeviceToDosName(FileObject->DeviceObject, ...) 这个方法我发现, RtlVolumeDeviceToDosName的使用有两个问题: 1。 有时静态加载驱动时在Windows登陆前系统卡死 2。 有时运行在别的驱动中bsod,具体如下 KERNEL_MODE_EXCEPTION_NOT_HANDLED_M TRAP_FRAME: ba593778 -- (.trap 0xffffffffba593778) ErrCode = 00000000 eax=8a395898 ebx=00000000 ecx=00000000 edx=8a395828 esi=89c4f2b8 edi=8a395828 eip=a6a2c93a esp=ba5937ec ebp=ba593860 iopl=0 nv up ei pl zr na pe nc cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010246 vmnetuserif+0x93a: a6a2c93a 8b510c mov edx,dword ptr [ecx+0Ch] ds:0023:0000000c=???????? TACK_TEXT: WARNING: Stack unwind information not available. Following frames may be wrong. ba593860 804f018f 89d92ed8 8a395828 00000200 vmnetuserif+0x93a ba593ac0 b84bdcb0 89d92ed8 ba593af0 ba593d30 nt!IoBuildPartialMdl+0xed ba593b18 b84be4f0 0000006c ba593b30 00000000 flprtct+0xcb0----------------------------------------->> (RtlVolumeDeviceToDosName) ba593d38 8054261c 0000006c 00000000 00000000 flprtct+0x14f0 ba593ddc 805470de 80627dc4 00000003 00000000 nt!KeReleaseInStackQueuedSpinLockFromDpcLevel+0xb74 ba593de0 80627dc4 00000003 00000000 0000027f nt!KiDispatchInterrupt+0x72e ba593de4 00000000 00000000 0000027f 00000000 nt!LsaDeregisterLogonProcess+0xe756 错误在vmnetuserif.sys flprtct是我的驱动 怎样解决?或是改用其他方法 ? 谨请高手赐教, 不胜感激。 |
|
沙发#
发布于:2008-11-29 21:47
明白了,用QueryNameString 然后遍历盘符比较
不过 我的一个虚拟机用了raid0动态卷,结果从盘符查到的设备名都与Query的不同 引用第1楼x-star于2008-11-26 09:15发表的 : |
|
板凳#
发布于:2008-11-26 09:15
看楚狂人的文件过滤驱动教程第二版
|
|