SPB_TRANSFER_DIRECTION列挙 (spb.h)
SPB_TRANSFER_DIRECTION列挙は、I/O 転送シーケンスにおける 1 回の転送の方向 (読み取りまたは書き込み) を表します。
構文
typedef enum SPB_TRANSFER_DIRECTION {
SpbTransferDirectionNone,
SpbTransferDirectionFromDevice,
SpbTransferDirectionToDevice,
SpbTransferDirectionMax
} *PSPB_TRANSFER_DIRECTION;
定数
SpbTransferDirectionNone データ転送の方向は未定義です。 |
SpbTransferDirectionFromDevice データ転送の方向は、デバイスからシステム メモリ (デバイスから読み取られます) です。 |
SpbTransferDirectionToDevice データ転送の方向は、システム メモリからデバイス (デバイスへの書き込み) です。 |
SpbTransferDirectionMax オペレーティング システムで使用するために予約されています。 |
注釈
この列挙の値は、I/O 転送シーケンス内の個々の転送の方向を示します。 IOCTL_SPB_EXECUTE_SEQUENCE I/O 制御要求の入力バッファーは、シーケンスの転送のリストを指定するSPB_TRANSFER_LIST構造体です。 各転送は、転送方向を含む転送パラメーターを含む SPB_TRANSFER_LIST_ENTRY 構造体によって記述されます。 転送方向は読み取り操作の 場合は SpbTransferDirectionFromDevice で、書き込み操作の 場合は SpbTransferDirectionToDevice です。
SPB コントローラー ドライバーは 、SpbRequestGetParameters メソッドを呼び出して、I/O 要求から一連の SPB 固有のパラメーターを取得できます。 これらのパラメーターの 1 つは、前の I/O 要求の転送方向を示す SPB_TRANSFER_DIRECTION 列挙値です。 SPB コントローラー ドライバーは、この方向の値を使用して、現在の読み取りまたは書き込み (IRP_MJ_READ または IRP_MJ_WRITE) 要求がバスの転送方向の変更を必要とするかどうかを判断できます。
さらに、 SpbRequestGetParameters は、複数要求シーケンスの転送のリスト内の読み取りまたは書き込み要求の相対位置を示す位置値を取得します。 読み取り要求または書き込み要求の位置値が SpbRequestSequencePositionSingle または SpbRequestSequencePositionFirst の場合、前の転送の方向の値は SpbTransferDirectionNone です (つまり、以前の転送方向はありません)。 SpbRequestSequencePositionMiddle または SpbRequestSequencePositionLast の位置値を持つ読み取りまたは書き込み要求の場合、方向の値は、前の転送が読み取りまたは書き込みのいずれであったかを示します。 spbRequestSequencePositionLast の位置値を持つロック解除 (IOCTL_SPB_UNLOCK_CONTROLLER) 要求の場合、方向の値は、シーケンス内の最後の転送が読み取りまたは書き込みであったかどうかを示します。
ロック (IOCTL_SPB_LOCK_CONTROLLER) 要求には前の方向がありません。 同様に、 EvtSpbControllerIoOther コールバック関数に渡される I/O コントロール要求には、前の方向がありません。 これらの要求の場合、 SpbRequestGetParameters によって取得される前の方向の値は SpbTransferDirectionNone です。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 以降でサポートされています。 |
Header | spb.h |