共用方式為


SPB_REQUEST_SEQUENCE_POSITION列舉 (spbcx.h)

SPB_REQUEST_SEQUENCE_POSITION 列舉表示 I/O 要求在 I/O 傳輸順序的傳輸清單中的位置。

語法

typedef enum _SPB_REQUEST_SEQUENCE_POSITION {
  SpbRequestSequencePositionInvalid,
  SpbRequestSequencePositionSingle,
  SpbRequestSequencePositionFirst,
  SpbRequestSequencePositionContinue,
  SpbRequestSequencePositionLast,
  SpbRequestSequencePositionMax
} SPB_REQUEST_SEQUENCE_POSITION, *PSPB_REQUEST_SEQUENCE_POSITION;

常數

 
SpbRequestSequencePositionInvalid
僅供內部使用。
SpbRequestSequencePositionSingle
單一傳輸 I/O 要求。 此要求是不屬於序列一部分的讀取或寫入(IRP_MJ_READIRP_MJ_WRITE)要求,或它是由單一傳輸所組成的序列 IOCTL_SPB_EXECUTE_SEQUENCE I/O 控制要求。

控制器應該先選取目標,再執行傳輸,並在傳輸完成之後釋放目標。
SpbRequestSequencePositionFirst
序列中的第一個 I/O 要求。 此要求是緊接在鎖定 (IOCTL_SPB_LOCK_CONTROLLER) I/O 控制要求之後的讀取或寫入要求,會發出序列開頭的訊號。

控制器應該先選取目標,再執行此傳輸,而且目標應該在傳輸完成之後仍保持選取狀態。
SpbRequestSequencePositionContinue
序列中間的 I/O 要求。 此要求是讀取或寫入要求,不是序列中的第一個或最後一個傳輸。

在某些情況下,SPB 架構延伸模組 (SpbCx) 無法將最後一個傳輸識別為 SpbRequestSequencePositionContinue,而不是 SpbRequestSequencePositionLast。 如需詳細資訊,請參閱下列一節。

控制器應該已在啟動此傳輸之前選取目標,而且目標應該會在傳輸完成之後保持選取狀態。
SpbRequestSequencePositionLast
序列中的最後一個 I/O 要求。 此要求是在解除鎖定 (IOCTL_SPB_UNLOCK_CONTROLLER) I/O 控制要求之前立即發出序列結尾的讀取或寫入要求。

在某些情況下,SpbCx 無法將上次傳輸識別為 SpbRequestSequencePositionContinue,而不是 SpbRequestSequencePositionLast。 如需詳細資訊,請參閱下列一節。

控制器應該已在啟動此傳輸之前選取目標,並在傳輸完成之後釋放目標。
SpbRequestSequencePositionMax
僅供內部使用。

言論

SPB 控制器的用戶端(周邊驅動程式)可以將一系列讀取和寫入要求傳送至總線上的目標裝置,以執行 I/O 傳輸序列。 數列中的每個讀取或寫入要求都會佔用序列傳輸清單中的位置。 SPB_REQUEST_SEQUENCE_POSITION 列舉中的值表示此列表中讀取和寫入要求的相對位置。

SpbRequestGetParameters 方法會從 I/O 要求擷取 SPB 特定的參數值,並將其寫入至 SPB_REQUEST_PARAMETERS 結構。 包含在這些參數中的是 SPB_REQUEST_SEQUENCE_POSITION 列舉值,指出 I/O 要求在 I/O 傳輸序列中的位置,而 I/O 要求是其中的一部分。

如果呼叫 SpbRequestGetParameters 來擷取不屬於序列之 I/O 要求的位置值,這個方法會將適當的 SPB_REQUEST_SEQUENCE_POSITION 列舉值指派給要求。

針對讀取和寫入要求,位置值會設定為下列其中一個值:SpbRequestSequencePositionSingleSpbRequestSequencePositionFirstSpbRequestSequencePositionContinueSpbRequestSequencePositionLast

如果客戶端傳送不屬於序列的簡單讀取或寫入(IRP_MJ_READIRP_MJ_WRITE)要求,則位置值會設定為 SpbRequestSequencePositionSingle

如果用戶端傳送鎖定 (IOCTL_SPB_LOCK_CONTROLLER) 要求以發出序列開頭的訊號,則序列中第一個傳輸(讀取或寫入要求)的位置值 SpbRequestSequencePositionFirst,而序列中剩餘傳輸的位置值 SpbRequestSequencePositionContinue。 在此情況下,SpbCx 無法將 SpbRequestSequencePositionLast 指派給最後一個傳輸,因為它不知道用戶端已傳送最後一個讀取或寫入要求,直到用戶端傳送結束序列的解除鎖定 (IOCTL_SPB_UNLOCK_CONTROLLER) 要求為止。

針對鎖定要求,位置值會設定為 SpbRequestSequencePositionFirst。 針對解除鎖定要求,位置值會設定為 SpbRequestSequencePositionLast

某些控制器可能支援特殊作業,例如可同時讀取和寫入目標裝置的全雙工總線傳輸。 用戶端可以藉由鎖定控制器並傳送一系列自定義 I/O 要求來執行自定義序列作業,SpbCx 會傳遞至 SPB 控制器驅動程式的 EvtSpbControllerIoOther 回呼函式。 在此情況下,序列中第一個自定義 I/O 要求的位置值是 SpbRequestSequencePositionFirst,而序列中其餘自定義 I/O 要求的位置值 SpbRequestSequencePositionContinue。 當用戶端解除鎖定控制器時,順序就會結束。 如果 EvtSpbControllerIoOther 回呼函式收到不屬於序列的自定義 I/O 要求,則此要求的位置值會 SpbRequestSequencePositionSingle

針對 SpbRequestSequencePositionLast的位置值,長度SPB_REQUEST_PARAMETERS 結構的成員可以是 0,表示應該只釋放目標,而且應該傳輸任何 I/O 數據(或者,同樣地,表示應該發生 0 位元組傳輸,如果控制器無法釋放裝置而不執行時鐘)。

針對 SpbRequestSequencePositionContinueSpbRequestSequencePositionLast的位置值,傳輸方向可能已從先前的傳輸變更變更,SPB 控制器驅動程式可能需要指出總線上可能發生的方向變更(例如 I2C 控制器會發出新的 START 條件)。 如需傳輸指示的詳細資訊,請參閱 SPB_TRANSFER_DIRECTION

要求

要求 價值
最低支援的用戶端 從 Windows 8 開始支援。
標頭 spbcx.h (包括 Spb.h)

另請參閱