KMDF handling of internal IOCTLs
- From: Wilhelm Noeker <wnoeker@xxxxxxxxxxx>
- Date: Fri, 20 Jun 2008 14:36:56 +0200
Hi,
I'm having trouble with my very first KMDF driver. Starting from the KMDF Toaster bus sample, I've tried to add a handler for IRP_MJ_INTERNAL_DEVICE_CONTROL.
Problem is: The function driver above the bus driver still receives STATUS_INVALID_DEVICE_REQUEST for any internal IOCTL that it submits. My handler function, as far as I can tell, is never called, and the WDF trace for my bus driver also tells me "FxPkgIo::Dispatch - No queue configured for WDFDEVICE 0x7DE5F3C8, failing WDFREQUEST 0x7DDBAE08, 0xc0000010 (STATUS_INVALID_DEVICE_REQUEST)".
Here's the part of the Toaster bus function Bus_EvtDeviceAdd(), where the default queue is created, and where I tried to add my handler:
WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE( &queueConfig,
WdfIoQueueDispatchParallel );
queueConfig.EvtIoDeviceControl
= Bus_EvtIoDeviceControl;
queueConfig.EvtIoInternalDeviceControl
= Bus_EvtIoInternalDeviceControl; // <--
status = WdfIoQueueCreate( device, &queueConfig,
WDF_NO_OBJECT_ATTRIBUTES, &queue );
WdfIoQueueCreate() returns success, and handling of regular IOCTLs still works just fine. My own function Bus_EvtIoInternalDeviceControl() is just a stripped-down copy of the original Toaster Bus_EvtIoDeviceControl() (which at the moment does little more than KdPrint() and WdfRequestCompleteWithInformation()).
Is that not how it's done? What detail am I missing?
.
- Follow-Ups:
- Re: KMDF handling of internal IOCTLs
- From: chris . aseltine
- Re: KMDF handling of internal IOCTLs
- Prev by Date: Re: Getting same physical address for 2 different user addresses.
- Next by Date: send an email from an user mode postscript driver
- Previous by thread: how to load user profile in a user mode driver
- Next by thread: Re: KMDF handling of internal IOCTLs
- Index(es):
Relevant Pages
|