usbdPipeIO
Purpose
Initiates I/O process to and from a logical device.
Syntax
#include <usbdi.h>
USBstatus usbdPipeIO(handle, irp)
USBhandle handle;
PIRP irp;
Parameter
Item | Description |
---|---|
handle | Handle of open USB logical device that is returned by the USBD_OPEN_DEVICE fp_ioctl. |
irp | Pointer to an initialized I/O request packet (IRP) structure. |
Description
The USB client driver uses this function to starts USB device I/O. Multiple IRPs for the same USB logical device might be grouped together and presented through one call to this function. The pipe handle in the IRP identifies the pipe and the type of data transfer to be started. The IRPs are enqueued to the logical USB device in the order that they are received from the client driver. The IRPs are posted in the order that they are processed by the pipe that might not be the order in which they were received. The function returns to the caller after the IRPs are enqueued to the pipe.
This function is also called internally by the USB protocol driver during enumeration, topology discovery, and device configuration.
Upon receiving this call, the USB Protocol driver breaks down the received IRP into several page sized requests that are called Input/Output Blocks (IOB). It builds the IOBs based on the transfer type that is associated with the pipe. The transfer types such as control, bulk, isochronous, and interrupt are supported. It groups the IOBs and transfers them to adapter driver.
Execution Environment
This function might be called from the interrupt (USBDINTRLEVEL priority or lower) or process environment.
Return Values
Value | Description |
---|---|
USBD_SUCCESS | Success |
All others | Failure (no IRPs delivered) |