duanran
驱动牛犊
驱动牛犊
  • 注册日期2003-11-04
  • 最后登录2015-03-20
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望57点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2005-06-04 16:45
arthurtu 老师:
…………………………………………………………
boot加载的驱动,这时候还没有文件系统,who给你dosname?RtlVolumeDeviceToDosName也是发个irp下去问的volume的symbolic link,然后一个个比较的
………………………………………………………………
我也认为BOOT加载的驱动,这个时候还没有文件系统。
但确实有些类似sfilter的驱动,StartType = 0。对此不太理解。

是不是和PNP枚举设备的顺序有关?

lgh41
驱动小牛
驱动小牛
  • 注册日期2004-12-14
  • 最后登录2006-09-24
  • 粉丝0
  • 关注0
  • 积分203分
  • 威望28点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2005-06-04 23:39
duanran:我在xp里,先是假死!如果我在主机的windbg再按f5,将使目标机器在引导,第二次把目标机器搞成蓝屏!
能把您的代码发给我吗?,向您学习学习!
lgh@mobileelife.com
lgh41
duanran
驱动牛犊
驱动牛犊
  • 注册日期2003-11-04
  • 最后登录2015-03-20
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望57点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2005-06-05 20:45
lgh41:

代码你可以参考一下windwos源代码。

private\\nots\\rtl\\dev2dos.c
lgh41
驱动小牛
驱动小牛
  • 注册日期2004-12-14
  • 最后登录2006-09-24
  • 粉丝0
  • 关注0
  • 积分203分
  • 威望28点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2005-06-06 10:38
duanran:谢谢您的回复!
   但我没理解您的“ 代码你可以参考一下windwos源代码。

private\\nots\\rtl\\dev2dos.c”?

您如何得到Device\\HarddiskVolume1这样的名字?
lgh41
lgh41
驱动小牛
驱动小牛
  • 注册日期2004-12-14
  • 最后登录2006-09-24
  • 粉丝0
  • 关注0
  • 积分203分
  • 威望28点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2005-06-07 18:02
请专家近来帮助分析我用windbg命令的输出的部分显示:
Use !analyze -v to get detailed debugging information.
BugCheck C2, {7, cd4, 81bca330, f888e2ac}
Probably caused by : Sfilter.sys ( Sfilter!SfCreate+11e )  
这里的SfCreate+11e是加16进制的语句吗?

BAD_POOL_CALLER (c2)
The current thread is making a bad pool request. Typically this is at a bad IRQL level or double freeing the same allocation, etc.
在Sfilter.c里应该如何设置IRQL level?这里的或者double freeing the same allocation, etc.是否是我们使用的ExFreePool与函数RtlVolumeDeviceToDosName或IoVolumeDeviceToDosName里的释放内存池2次了?

Arguments:
Arg1: 00000007, Attempt to free pool which was already freed而我们不使用ExFreePool,照样,是假死机!请指教?
Arg2: 00000cd4, (reserved)
Arg3: 81bca330, Memory contents of the pool block
Arg4: f888e2ac, Address of the block of pool being deallocated

lgh41
yunyanrong
驱动小牛
驱动小牛
  • 注册日期2003-04-18
  • 最后登录2013-03-02
  • 粉丝0
  • 关注0
  • 积分1040分
  • 威望457点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2005-06-17 09:56
26个盘符进行循环


很有道理。

dev2dos.c,哪里找的到啊,GOOGLE都没结果。
yunyanrong
驱动小牛
驱动小牛
  • 注册日期2003-04-18
  • 最后登录2013-03-02
  • 粉丝0
  • 关注0
  • 积分1040分
  • 威望457点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2005-06-18 10:58
【[quote]我也刚遇到了这个问题,
RtlVolumeDeviceToDosName (irpSp->FileObject->DeviceObject, dosname )
我的过滤驱动是boot启动的,还没有启动完毕就蓝屏了,也不知道怎么回事。

楼上的,我遇到的问题和你一样,也是在boot过程中蓝屏的,我实在SfCreate中调用的这个函数。

我现在也遇到这个问题了,怎么解决的你们??



本人部分测试、理解如下:

设置为BOOT,在MJ_CREATE中,当SfDebug =0xffffffff时,即想打印所有消息时,就会兰屏;而当SfDebug = SFDEBUG_DISPLAY_ATTACHMENT_NAMES|SFDEBUG_DISPLAY_CREATE_NAMES;(或者其他一些标志组合,未经过完全测试),就会停顿在这里,但不会兰屏或者重启。


在MJ_READ中,确实很难很难。连MS FILE SYSTEM GROUP的人都建议在应用层通过GetVolumeNameForVolumeMountPoint() and GetVolumePathNamesForVolumeName()来做了。


There is not support in the kernel for getting DOS drive letters.

The reason for this is that dos drive letters are a \"user mode\" concept
and can actually be different from one user to the next on the same
machine (especially with terminal server).

If you want to report a drive letter to a user, I recommend you send the
NT Device name (or GUID device name) to a user mode component that runs
in the session of the user you want.  You can then use
GetVolumeNameForVolumeMountPoint() and GetVolumePathNamesForVolumeName()
to get the DOS drive letter.

If you want it just for debug purposes, get used to the NT device names.

Neal Christiansen
Microsoft File System Filter Group
上一页 下一页
游客

返回顶部