mfzg
驱动牛犊
驱动牛犊
  • 注册日期2007-05-29
  • 最后登录2009-06-13
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
阅读:3101回复:8

USB驱动里怎样设置才能让设备插上后不要在右下角显示安全删除图标?

楼主#
更多 发布于:2007-05-31 12:49
 我最近学着用DriverStudio2.7生成了一个USB驱动,插上USB设备安装好驱动程序后,在屏幕右下角显示一个"安全删除设备"的图标,可我不想要这个图标显示,请问在驱动源文件里该修改那个参数才能隐藏这个图标呢?

最新喜欢:

hzjmanhzjman
驱网无线,快乐无限
mfzg
驱动牛犊
驱动牛犊
  • 注册日期2007-05-29
  • 最后登录2009-06-13
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-05-31 13:32
没有知道吗????
驱网无线,快乐无限
gutian98
禁止发言
禁止发言
  • 注册日期2003-01-12
  • 最后登录2016-12-11
  • 粉丝4
  • 关注2
  • 积分760分
  • 威望8026点
  • 贡献值1点
  • 好评度364点
  • 原创分0分
  • 专家分21分
  • 金点子奖
  • 社区居民
板凳#
发布于:2007-05-31 14:15
用户被禁言,该主题自动屏蔽!
mfzg
驱动牛犊
驱动牛犊
  • 注册日期2007-05-29
  • 最后登录2009-06-13
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-05-31 15:12
谢谢楼上的,我也看了关于这方面的文章,和你说的一样,可我就是找不到DEVICE_CAPABILITIES的结构,我刚学写驱动不太清楚,谁能帮我把代码帖出来.
驱网无线,快乐无限
gutian98
禁止发言
禁止发言
  • 注册日期2003-01-12
  • 最后登录2016-12-11
  • 粉丝4
  • 关注2
  • 积分760分
  • 威望8026点
  • 贡献值1点
  • 好评度364点
  • 原创分0分
  • 专家分21分
  • 金点子奖
  • 社区居民
地下室#
发布于:2007-05-31 15:22
用户被禁言,该主题自动屏蔽!
hoguowi
驱动牛犊
驱动牛犊
  • 注册日期2006-07-22
  • 最后登录2012-12-20
  • 粉丝0
  • 关注0
  • 积分27分
  • 威望213点
  • 贡献值1点
  • 好评度19点
  • 原创分0分
  • 专家分10分
5楼#
发布于:2007-05-31 16:13
在Isp1581Device.cpp添加
//////////////////////////////////////////////////////////////////////////
NTSTATUS Isp1581Device::OnQueryCapabilities(KIrp I)
{
    //t << "Entering Isp1581Device::OnQueryCapabilities\n";

    I.CopyParametersDown();
    I.SetCompletionRoutine(LinkTo(OnQueryCapabilitiesComplete), this, TRUE, TRUE, TRUE);

    return m_Lower.PnpCall(this, I);
}

NTSTATUS Isp1581Device::OnQueryCapabilitiesComplete(KIrp I)
{
    if (I->PendingReturned)
        I.MarkPending();

    if(!m_bSurpriseRemove)
    {
        I.DeviceCapabilities()->SurpriseRemovalOK    = TRUE;
        I.DeviceCapabilities()->Removable        = TRUE;
        I.DeviceCapabilities()->EjectSupported        = TRUE;
        //I.DeviceCapabilities()->WarmEjectSupported    = TRUE;
    }

    return STATUS_SUCCESS;
}
和class Isp1581Device : public KPnpDevice的
public:
        ULONG m_bSurpriseRemove;
    MEMBER_COMPLETEIRP(Isp1581Device, OnQueryCapabilitiesComplete)
    virtual NTSTATUS OnQueryCapabilities(KIrp I);
即可去掉USB小图标显示
mfzg
驱动牛犊
驱动牛犊
  • 注册日期2007-05-29
  • 最后登录2009-06-13
  • 粉丝0
  • 关注0
  • 积分90分
  • 威望17点
  • 贡献值0点
  • 好评度16点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2007-06-01 16:04
感谢hoguowi,我在驱动文件里加入你上面的代码编译OK(当然类名要改一下),安装后USB图标不显示了,再一次感谢给我帮助的朋友,感谢!!!
驱网无线,快乐无限
powerlinm
驱动牛犊
驱动牛犊
  • 注册日期2006-04-10
  • 最后登录2013-03-01
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望166点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-06-24 18:02
我试了一下,只需要.DeviceCapabilities()->SurpriseRemovalOK    = TRUE;
就可以了.
谢谢!
zhoujiamurong
驱动小牛
驱动小牛
  • 注册日期2006-03-20
  • 最后登录2009-05-06
  • 粉丝4
  • 关注0
  • 积分1081分
  • 威望360点
  • 贡献值0点
  • 好评度215点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2008-06-30 10:15
我是用的DDK
参考:

根据即插即用规则,驱动程序应在将 IRP 传递给设备堆栈中的较低驱动程序之前,在 IRP_MN_QUERY_CAPABILITIES IRP 中设置 SurpriseRemovalOK 字段。因为 Windows 2000 USB 集线器驱动程序会错误地将该字段重新设置为 FALSE,所以用于 USB 设备的 Windows 2000 驱动程序在运行时必须设置 SurpriseRemovalOK 字段。

代码示例
http://support.microsoft.com/default.aspx/kb/298504/zh-cn
游客

返回顶部