IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX IOCTL (ntddscsi.h)
The IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT_EX control code request is the extended version of the IOCTL_MPIO_PASS_THROUGH_PATH_DIRECT request. This request provides support for bidirectional data transfers and allows a command data block (CDB) > 16 bytes.
This I/O control code allows an application or kernel driver to send a SCSI command to a designated real LUN. The following restrictions apply to the use of this I/O control code:
- If a class driver for the pseudo LUN exists, the application must send the request to that class driver. Thus, an application can send this request directly to an MPIO only if there is no class driver for the device.
- All pass-through requests must be synchronous.
- Applications do not require administrative privileges to send a pass-through request to a device, but they must have read/write access to the device.
- The request comprises a SCSI pass-through request (in an embedded SCSI_PASS_THROUGH_DIRECT structure) as well as certain directives.
- The SCSI pass-through structure should meet the requirements for such, as described in SCSI_PASS_THROUGH_DIRECT.
- If the request is to be sent through the DSM that claimed the real LUN, that must be indicated. In such a case, the DSM itself must indicate the same real LUN. Otherwise, the request will fail.
- The request must specify the real LUN that is comprised by the pseudo LUN in terms of the former's SCSI address or its MPIO PathId, but not both.
Major code
Input buffer
Parameters.DeviceIoControl.InputBufferLength indicates the size, in bytes, of the buffer at Irp->AssociatedIrp.SystemBuffer.
Input buffer length
The buffer must be at least sizeof(MPIO_PASS_THROUGH_PATH_DIRECT_EX) or, if sent by a 32-bit application in a 64-bit operating system, sizeof(MPIO_PASS_THROUGH_PATH_DIRECT32_EX).
Output buffer
The port driver returns any request-sense data and any data that is transferred from the device to the buffer at Irp->AssociatedIrp.SystemBuffer.
Output buffer length
The SenseInfoLength and DataOutTransferLength in the embedded SCSI_PASS_THROUGH_DIRECT_EX structure are updated to indicate the amount of data that is transferred.
Status block
The Information field is set to the number of bytes returned in the output buffer at Irp->AssociatedIrp.SystemBuffer. The Status field is set to STATUS_SUCCESS, or possibly to STATUS_BUFFER_TOO_SMALL or STATUS_INVALID_PARAMETER if the input Length value in the embedded SCSI_PASS_THROUGH_DIRECT_EX is improperly set.
Requirements
Requirement | Value |
---|---|
Header | ntddscsi.h (include Ntddscsi.h) |