lilylily
驱动牛犊
驱动牛犊
  • 注册日期2002-07-11
  • 最后登录2004-03-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2553回复:12

微软支持-文件系统开发技术问题征集!!!

楼主#
更多 发布于:2003-07-08 16:31
因合作关系,最近微软将来我处提供Windows下产品开发的技术支持,鉴于Windows下的文件系统驱动开发与许多底层技术相关,
欢迎大家提供相关问题,本人将代为向微软转达。
特别希望各位高手们能将大家在文件系统驱动开发过程遇到的主要技术难题整理提出,也请斑竹多多参与,机不可失。
希望这次活动能对该版有较大帮助!
else
驱动小牛
驱动小牛
  • 注册日期2002-10-21
  • 最后登录2004-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-07-24 17:01
vxd中在IFS层有办法得到磁盘类型吗?
由如API的GetDirveType的函数吗?
我想区分USB,CDROM.

由答案请发到 yxh@mail.bcl.com.cn
多谢了


用ISP_GET_DCB可以得到一部分信息
yuxuehu
驱动小牛
驱动小牛
  • 注册日期2002-05-13
  • 最后登录2008-04-03
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-24 14:47
vxd中在IFS层有办法得到磁盘类型吗?
由如API的GetDirveType的函数吗?
我想区分USB,CDROM.

由答案请发到 yxh@mail.bcl.com.cn
多谢了
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-20 17:17
to nustzhua:
  用gina。再不行在注册表中加放一个你的应用程序,在登录前一定会加载的。

请教,我该在哪一项里加呢/
谢谢。
不限容量的免费邮箱 www.k65.net
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-10 09:45
我的问题重新整一下,如下:

IFS 问题:

1.当Attach到network file system FILE_DEVICE_NETWORK_FILE_SYSTEM)时,在IRP_MJ_CREATE中,如何得到其完整的文件名?(注:该IRP还未传给lower file system 处理,也就是说我想在传给lower file system之前进行一些处理?)

2.如何在IFS FILTER取得与该GetDriveType() WIN API返回相同的信息?,也就是说如何正确取得其设备的类型?(更通俗地说,我要区分出U盘/RAM disk等)。(注:自已目前所有方法太土,特殊是U盘,有部分U盘会判断错误。)

问题3:用IoRegisterPlugPlayNotification后,为何不到其硬件的插入/拨出通知,其正确用法该如何做?我用如下方法为何不到?,KfUsbKeyNotification没有被调用过,可我的硬件是发生改变了。
DEFINE_GUID(GUID_CLASS_USBKEY, ,0x36FC9E60, 0xC465, 0x11CF, 0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x000, 0x00);
NTSTATUS KfRegisterPlugPlayNotification()
{
KdPrint((\"Kfilter: Register USB KEY Plug Play Notification.\\n\"));

return IoRegisterPlugPlayNotification(EventCategoryDeviceInterfaceChange,
PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES,
(PVOID)&GUID_CLASS_USBKEY,
g_KfilterDriverObject,
KfUsbKeyNotification,
NULL,
&g_pNotificationEntry
);

}
NTSTATUS KfUsbKeyNotification (
IN PVOID pNotificationStructure,
IN PVOID Context
)
{
PDEVICE_INTERFACE_CHANGE_NOTIFICATION pInfo;

pInfo = (PDEVICE_INTERFACE_CHANGE_NOTIFICATION) pNotificationStructure;

KdPrint((\"Kfilter:KfUsbKeyNotification is Call.\\n\"));

if(pInfo->Event == GUID_DEVICE_INTERFACE_ARRIVAL)
{
KdPrint((\"Kfilter:USB KEY is inserting to computer.\\n\"));
}
else if(pInfo->Event == GUID_DEVICE_INTERFACE_REMOVAL)
{
KdPrint((\"Kfilter:USB KEY is removeing from computer.\\n\"));

}

return STATUS_SUCCESS;
}

就这两个问题,有答案能发个MAIL告诉我吗?
vcmfc@vip.sina.com

谢谢这位兄弟了。

vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-10 09:43
to else:


师弟,我已搞定。MAIL联系。
else
驱动小牛
驱动小牛
  • 注册日期2002-10-21
  • 最后登录2004-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-09 23:23
为什么我动态加载我的驱动(start = 3 )的时候,只要一调用
IoRegisterFsRegistrationChange系统就会崩溃?

VCMFC你搞清楚这个问题没有?DDK没有说动态加载的时候不能调用
 IoRegisterFsRegistrationChange啊。
else
驱动小牛
驱动小牛
  • 注册日期2002-10-21
  • 最后登录2004-06-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-07-09 23:17
我用 ExAllocatePoolWithTag(NonPagedPool, 1024, \'aaa\');分配了一块内存,之后存取的时候为什么会出现以下错误?

Bug Check 0x50: PAGE_FAULT_IN_NONPAGED_AREA

*** Fatal System Error: 0x00000050
                       (0xFC6AF000,0x00000000,0xFC852DAF,0x00000000)

Driver at fault:
***  TESTXP.SYS - Address FC852DAF base at FC848000, DateStamp 3f0a4ea2
.
Break instruction exception - code 80000003 (first chance)


分配内存肯定是成功的,并且还用这片内存获取了文件名。
并且肯定没有越界存取,就是读的这片内存的开始几个字节。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以上问题以解决,因为一个意外导至内存存取的时候越界了

[编辑 -  7/10/03 by  else]
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-07-09 18:01


谢谢这位兄弟了。
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-07-09 18:01
问题3:用IoRegisterPlugPlayNotification后,为何不到其硬件的插入/拨出通知,其正确用法该如何做?我用如下方法为何不到?,KfUsbKeyNotification没有被调用过,可我的硬件是发生改变了。
DEFINE_GUID(GUID_CLASS_USBKEY, ,0x36FC9E60, 0xC465, 0x11CF, 0x80, 0x56, 0x44, 0x45, 0x53, 0x54, 0x000, 0x00);
NTSTATUS KfRegisterPlugPlayNotification()
{
KdPrint((\"Kfilter: Register USB KEY Plug Play Notification.\\n\"));

return IoRegisterPlugPlayNotification(EventCategoryDeviceInterfaceChange,
PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES,
(PVOID)&GUID_CLASS_USBKEY,
g_KfilterDriverObject,
KfUsbKeyNotification,
NULL,
&g_pNotificationEntry
);

}
NTSTATUS KfUsbKeyNotification (
    IN PVOID pNotificationStructure,
    IN PVOID Context
    )
{
PDEVICE_INTERFACE_CHANGE_NOTIFICATION pInfo;

pInfo = (PDEVICE_INTERFACE_CHANGE_NOTIFICATION) pNotificationStructure;

KdPrint((\"Kfilter:KfUsbKeyNotification is Call.\\n\"));

if(pInfo->Event == GUID_DEVICE_INTERFACE_ARRIVAL)
{
KdPrint((\"Kfilter:USB KEY is inserting to computer.\\n\"));
}
else if(pInfo->Event == GUID_DEVICE_INTERFACE_REMOVAL)
{
KdPrint((\"Kfilter:USB KEY is removeing from computer.\\n\"));

}

return STATUS_SUCCESS;
}
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-07-09 17:43
to nustzhua:
  用gina。再不行在注册表中加放一个你的应用程序,在登录前一定会加载的。
vcmfc
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-01-28
  • 粉丝0
  • 关注0
  • 积分528分
  • 威望53点
  • 贡献值0点
  • 好评度52点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-07-09 17:42
IFS 问题:

1.当Attach到network file system FILE_DEVICE_NETWORK_FILE_SYSTEM)时,在IRP_MJ_CREATE中,如何得到其完整的文件名?(注:该IRP还未传给lower file system 处理,也就是说我想在传给lower file system之前进行一些处理?)

2.如何在IFS FILTER取得与该GetDriveType() WIN API返回相同的信息?,也就是说如何正确取得其设备的类型?(更通俗地说,我要区分出U盘/RAM disk等)。(注:自已目前所有方法太土,特殊是U盘,有部分U盘会判断错误。)

就这两个问题,有答案能发个MAIL告诉我吗?
vcmfc@vip.sina.com
nustzhua
驱动中牛
驱动中牛
  • 注册日期2002-06-19
  • 最后登录2015-09-27
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-07-09 17:29
1.windwos 操作系统所在的硬盘是否一定为0x80,2.如何在登陆windows前让我们的应用程序启动,如显示一个界面。有了答案告诉一声thx!
不限容量的免费邮箱 www.k65.net
游客

返回顶部