SPB_TRANSFER_DIRECTION enumeration (spb.h)
The SPB_TRANSFER_DIRECTION enumeration describes the direction (read or write) of a single transfer in an I/O transfer sequence.
Syntax
typedef enum SPB_TRANSFER_DIRECTION {
SpbTransferDirectionNone,
SpbTransferDirectionFromDevice,
SpbTransferDirectionToDevice,
SpbTransferDirectionMax
} *PSPB_TRANSFER_DIRECTION;
Constants
SpbTransferDirectionNone The data transfer direction is undefined. |
SpbTransferDirectionFromDevice The data transfer direction is from the device to system memory (read from device). |
SpbTransferDirectionToDevice The data transfer direction is from system memory to the device (write to device). |
SpbTransferDirectionMax Reserved for use by the operating system. |
Remarks
The values in this enumeration indicate the directions of the individual transfers in an I/O transfer sequence. The input buffer for an IOCTL_SPB_EXECUTE_SEQUENCE I/O control request is an SPB_TRANSFER_LIST structure that specifies a list of transfers for the sequence. Each transfer is described by an SPB_TRANSFER_LIST_ENTRY structure that contains the transfer parameters, which include the transfer direction. The transfer direction is SpbTransferDirectionFromDevice for a read operation, and is SpbTransferDirectionToDevice for a write operation.
Your SPB controller driver can call the SpbRequestGetParameters method to retrieve a set of SPB-specific parameters from an I/O request. One of these parameters is an SPB_TRANSFER_DIRECTION enumeration value that indicates the transfer direction of the previous I/O request. The SPB controller driver can use this direction value to determine whether the current read or write (IRP_MJ_READ or IRP_MJ_WRITE) request requires a change in transfer direction on the bus.
In addition, SpbRequestGetParameters retrieves a position value that indicates the relative position of a read or write request in the list of transfers for the multiple-request sequence. If a read request or a write request has a position value of SpbRequestSequencePositionSingle or SpbRequestSequencePositionFirst, the direction value for the previous transfer is SpbTransferDirectionNone (that is, there is no previous transfer direction). For a read or write request that has a position value of SpbRequestSequencePositionMiddle or SpbRequestSequencePositionLast, the direction value indicates whether the previous transfer was a read or a write. For an unlock (IOCTL_SPB_UNLOCK_CONTROLLER) request, which has a position value of SpbRequestSequencePositionLast, the direction value indicates whether the last transfer in the sequence was a read or a write.
A lock (IOCTL_SPB_LOCK_CONTROLLER) request has no previous direction. Similarly, an I/O control request that is passed to the EvtSpbControllerIoOther callback function has no previous direction. For either of these requests, the previous direction value retrieved by SpbRequestGetParameters is SpbTransferDirectionNone.
Requirements
Requirement | Value |
---|---|
Minimum supported client | Supported starting with Windows 8. |
Header | spb.h |