阅读:1505回复:8
问Rayyang2000,关于IRP_MN_QUERY_CAPABILITIES的一个问题!
在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下拔出设备,总要弹出“不安全的设备删除“消息框,请大侠出手!!! |
|
|
沙发#
发布于:2002-08-15 12:00
没有人做过吗???
|
|
|
板凳#
发布于:2002-08-15 13:10
没有人做过吗??? 请关注! |
|
|
地板#
发布于:2002-08-15 13:30
你把顺序搞错了!要先发下去,再修改里面的内容。
你这样修改了,再发下去,lower device又会把这些值改掉,没有用的。 |
|
|
地下室#
发布于:2002-08-15 13:39
你把顺序搞错了!要先发下去,再修改里面的内容。 我还是不明白,如何做到先发下去再修改里面的内容??? 多谢! |
|
|
5楼#
发布于:2002-08-15 16:04
你把顺序搞错了!要先发下去,再修改里面的内容。 再次求教Rayyang2000!!! |
|
|
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; } |
|
|
7楼#
发布于:2002-08-16 12:40
非常感谢,我已经可以了!
|
|
|
8楼#
发布于:2003-09-25 19:03
怎么解决的?我按着说得做了可是死机??,
|
|
|