IQueueCallbackDeviceIoControl::OnDeviceIoControl method (wudfddi.h)

[Warning: UMDF 2 is the latest version of UMDF and supersedes UMDF 1. All new UMDF drivers should be written using UMDF 2. No new features are being added to UMDF 1 and there is limited support for UMDF 1 on newer versions of Windows 10. Universal Windows drivers must use UMDF 2. For more info, see Getting Started with UMDF.]

The OnDeviceIoControl method is called to handle a device I/O control request when an application performs a specific operation on a device through the Microsoft Win32 OnDeviceIoControl function.


void OnDeviceIoControl(
  IWDFIoQueue   *pWdfQueue,
  IWDFIoRequest *pWdfRequest,
  ULONG         ControlCode,
  SIZE_T        InputBufferSizeInBytes,
  SIZE_T        OutputBufferSizeInBytes



[in] A pointer to the IWDFIoQueue interface for the I/O queue object that the request arrives from.


[in] A pointer to the IWDFIoRequest interface that represents the framework request object.


[in] The driver-defined or system-defined I/O control code (IOCTL) that identifies the specific operation to be performed and that is associated with the request.



Return value



A driver registers the IQueueCallbackDeviceIoControl interface when the driver calls the IWDFDevice::CreateIoQueue method to create an I/O queue or to configure the default I/O queue.

A driver can implement a single OnDeviceIoControl method for all I/O queues or separate OnDeviceIoControl methods for each I/O queue.

The OnDeviceIoControl method receives every device I/O control request type from a queue. (The request type is identified by the WdfRequestDeviceIoControl value of the WDF_REQUEST_TYPE enumeration type for the request.)

For more information about the driver's methods that are associated with queues and that the framework calls, see I/O Queue Event Callback Functions. The OnDeviceIoControl method must process each received device I/O control request. For more information about how UMDF drivers process I/O requests, see Processing I/O Requests.

The driver can call the IWDFIoRequest::GetDeviceIoControlParameters, IWDFIoRequest::GetInputMemory, and IWDFIoRequest::GetOutputMemory methods to retrieve information about the request and the input and output buffers.


Target Platform Windows
Header wudfddi.h (include Wudfddi.h)

See also