DK-boy
驱动中牛
驱动中牛
  • 注册日期2001-07-22
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1506回复:8

问Rayyang2000,关于IRP_MN_QUERY_CAPABILITIES的一个问题!

楼主#
更多 发布于:2002-08-15 11:03
在2000DDK中编程如下:
...
switch( MinorFunction)
{
case IRP_MN_QUERY_CAPABILITIES:
status=PnpQueryCapabilitiesHandler(fdo,Irp);
break;
case IRP_MN_START_DEVICE:
status = PnpStartDeviceHandler(fdo,Irp);
...
函数内容如下:
/////////////////////////////////////////////////////////////////////////////
NTSTATUS PnpQueryCapabilitiesHandler( IN PDEVICE_OBJECT fdo, IN PIRP Irp)
{
        PDEVICE_EXTENSION dx=(PDEVICE_EXTENSION)fdo->DeviceExtension;
dx->DeviceCapabilities.SurpriseRemovalOK=TRUE;
dx->DeviceCapabilities.Removable=TRUE;
dx->DeviceCapabilities.EjectSupported=TRUE;
dx->DeviceCapabilities.WarmEjectSupported=TRUE;
return PnpDefaultHandler(fdo, Irp);
}

但在Win2000下拔出设备,总要弹出“不安全的设备删除“消息框,请大侠出手!!!
喜欢清静?享受人生
DK-boy
驱动中牛
驱动中牛
  • 注册日期2001-07-22
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-08-15 12:00
没有人做过吗???
喜欢清静?享受人生
DK-boy
驱动中牛
驱动中牛
  • 注册日期2001-07-22
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-08-15 13:10
没有人做过吗???

请关注!
喜欢清静?享受人生
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-08-15 13:30
你把顺序搞错了!要先发下去,再修改里面的内容。

你这样修改了,再发下去,lower device又会把这些值改掉,没有用的。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
DK-boy
驱动中牛
驱动中牛
  • 注册日期2001-07-22
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-08-15 13:39
你把顺序搞错了!要先发下去,再修改里面的内容。

你这样修改了,再发下去,lower device又会把这些值改掉,没有用的。

我还是不明白,如何做到先发下去再修改里面的内容???
多谢!
喜欢清静?享受人生
DK-boy
驱动中牛
驱动中牛
  • 注册日期2001-07-22
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-08-15 16:04
你把顺序搞错了!要先发下去,再修改里面的内容。

你这样修改了,再发下去,lower device又会把这些值改掉,没有用的。

再次求教Rayyang2000!!!
喜欢清静?享受人生
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-08-16 09:46
NTSTATUS PnpQueryCapabilitiesHandler( IN PDEVICE_OBJECT fdo, IN PIRP Irp)
{
...
IoSetCompletionRoutine(Irp, Complete);
NTSTATUS status = PnpDefaultHandler(fdo, Irp);
...
}

NTSTATUS Complete( IN PDEVICE_OBJECT fdo, IN PIRP Irp)
{
..
PDEVICE_EXTENSION dx=(PDEVICE_EXTENSION)fdo->DeviceExtension;
dx->DeviceCapabilities.SurpriseRemovalOK=TRUE;
dx->DeviceCapabilities.Removable=TRUE;
dx->DeviceCapabilities.EjectSupported=TRUE;
dx->DeviceCapabilities.WarmEjectSupported=TRUE;
..
return STATUS_SUCCESS;
}
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
DK-boy
驱动中牛
驱动中牛
  • 注册日期2001-07-22
  • 最后登录2005-09-21
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-08-16 12:40
非常感谢,我已经可以了!
喜欢清静?享受人生
Jon
Jon
驱动牛犊
驱动牛犊
  • 注册日期2001-07-26
  • 最后登录2008-01-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-09-25 19:03
怎么解决的?我按着说得做了可是死机??,
Jonh
游客

返回顶部