From: akapoor on 10 Mar 2010 14:19 I am writing a KMDF filter driver attached to the boot drive, so it loads with start_type = 0. I only want one read/write request in flight at a time. When I set the following in addDevice, I get a crash with "Inaccessible Boot Device:" WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE (&ioQueueConfig,WdfIoQueueDispatchSequential); ioQueueConfig.EvtIoRead = FilterEvtIoReadWrite; ioQueueConfig.EvtIoWrite = FilterEvtIoReadWrite; ioQueueConfig.EvtIoDeviceControl = FilterEvtIoDeviceControl; status = WdfIoQueueCreate(device, &ioQueueConfig, WDF_NO_OBJECT_ATTRIBUTES, WDF_NO_HANDLE ); The above also works fine if the drive isn't the boot drive, and the following works even if it is the boot device: WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE(&ioQueueConfig, WdfIoQueueDispatchParallel); ioQueueConfig.EvtIoRead = FilterEvtIoReadWrite; ioQueueConfig.EvtIoWrite = FilterEvtIoReadWrite; ioQueueConfig.EvtIoDeviceControl = FilterEvtIoDeviceControl; status = WdfIoQueueCreate(device, &ioQueueConfig, WDF_NO_OBJECT_ATTRIBUTES, WDF_NO_HANDLE ); However, I wanted the queue to be sequential. Thanks for your help.
From: Don Burn on 10 Mar 2010 14:24 You are changing the semantics of the device model by making the disk requests sequential that is why it crashes. Even if it does work, your performance will stink, so this is a bad desing. Don Burn (MVP, Windows DKD) Windows Filesystem and Driver Consulting Website: http://www.windrvr.com Blog: http://msmvps.com/blogs/WinDrvr > -----Original Message----- > From: akapoor [mailto:akapoor(a)discussions.microsoft.com] > Posted At: Wednesday, March 10, 2010 2:19 PM > Posted To: microsoft.public.development.device.drivers > Conversation: Filter driver on boot device > Subject: Filter driver on boot device > > I am writing a KMDF filter driver attached to the boot drive, so it > loads with start_type = 0. I only want one read/write request in > flight at a time. > > > When I set the following in addDevice, I get a crash with "Inaccessible > Boot > Device:" > > WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE > (&ioQueueConfig,WdfIoQueueDispatchSequential); > ioQueueConfig.EvtIoRead = FilterEvtIoReadWrite; > ioQueueConfig.EvtIoWrite = FilterEvtIoReadWrite; > ioQueueConfig.EvtIoDeviceControl = FilterEvtIoDeviceControl; > status = WdfIoQueueCreate(device, &ioQueueConfig, > WDF_NO_OBJECT_ATTRIBUTES, > WDF_NO_HANDLE > ); > > The above also works fine if the drive isn't the boot drive, and the > following works even if it is the boot device: > > WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE(&ioQueueConfig, > WdfIoQueueDispatchParallel); > ioQueueConfig.EvtIoRead = FilterEvtIoReadWrite; > ioQueueConfig.EvtIoWrite = FilterEvtIoReadWrite; > ioQueueConfig.EvtIoDeviceControl = FilterEvtIoDeviceControl; > status = WdfIoQueueCreate(device, &ioQueueConfig, > WDF_NO_OBJECT_ATTRIBUTES, > WDF_NO_HANDLE > ); > > However, I wanted the queue to be sequential. > > Thanks for your help. > > > __________ Information from ESET Smart Security, version of virus > signature database 4932 (20100310) __________ > > The message was checked by ESET Smart Security. > > http://www.eset.com >
|
Pages: 1 Prev: DevCon to remove ghost devices "remove failed" Next: Linksys WRTP54G-VR |