阅读:3101回复:8
USB驱动里怎样设置才能让设备插上后不要在右下角显示安全删除图标?
我最近学着用DriverStudio2.7生成了一个USB驱动,插上USB设备安装好驱动程序后,在屏幕右下角显示一个"安全删除设备"的图标,可我不想要这个图标显示,请问在驱动源文件里该修改那个参数才能隐藏这个图标呢?
|
|
最新喜欢:hzjman
|
沙发#
发布于:2007-05-31 13:32
没有知道吗????
|
|
|
板凳#
发布于:2007-05-31 14:15
用户被禁言,该主题自动屏蔽! |
|
地板#
发布于:2007-05-31 15:12
谢谢楼上的,我也看了关于这方面的文章,和你说的一样,可我就是找不到DEVICE_CAPABILITIES的结构,我刚学写驱动不太清楚,谁能帮我把代码帖出来.
|
|
|
地下室#
发布于:2007-05-31 15:22
用户被禁言,该主题自动屏蔽! |
|
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小图标显示 |
|
6楼#
发布于:2007-06-01 16:04
感谢hoguowi,我在驱动文件里加入你上面的代码编译OK(当然类名要改一下),安装后USB图标不显示了,再一次感谢给我帮助的朋友,感谢!!!
|
|
|
7楼#
发布于:2008-06-24 18:02
我试了一下,只需要.DeviceCapabilities()->SurpriseRemovalOK = TRUE;
就可以了. 谢谢! |
|
驱动小牛
|
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 |