Storport 的介面與 Storport Miniport 驅動程式
Storport 驅動程式與 Storport 迷你埠驅動程式之間的通訊是透過 SCSI 要求區塊 (SRB) 和迷你埠驅動程式回呼常式進行。 如需 Storport 迷你埠驅動程式回呼常式的詳細討論,請參閱 Storport Miniport 驅動程式常式。
如需個別 SRB 函式、SRB 旗標和 SRB 狀態值的概觀和定義,請參閱 SCSI_REQUEST_BLOCK。
如需迷你埠驅動程式如何回應每個個別 SRB 函式的討論,請參閱 HwStorStartIo。
Storport 會將 SRB 轉送至 Storport 迷你埠驅動程式,以進行非同步處理。 一般而言,迷你埠驅動程式需要一些時間才能實際完成要求。 主機匯流排配接器 (支援標記佇列的 HBA) 可以在內部排入佇列要求,並以 Storport 指派給每個要求的標籤所指示的順序加以處理。 SCSI_REQUEST_BLOCK (SRB) 結構包含 Storport 和迷你埠驅動程式用來指定主機配接器內部佇列中應如何排序 SRB 的兩個成員:
QueueTag:Storport 會將計數或 「tag」 值指派給每個 SRB 的 QueuedTag 成員。 此標籤表示配接器應該處理封包的順序。 標籤值也允許 Storport 追蹤哪些 SRB 仍然未完成、已成功完成,以及已逾時。
QueueAction:指出在 SRB 中設定SRB_FLAGS_QUEUE_ACTION_ENABLE旗標時,要使用的標記佇列訊息 。SrbFlags。 Miniport 的 QueueAction 使用是迷你埠特定的。 如果 HBA 支援 SCSI,SCSI 型迷你埠可以遵循 SCSI 規格。 QueueAction 可以是下列其中一個值:
值 | 意義 |
---|---|
SRB_SIMPLE_TAG_REQUEST | 將要求排入佇列,並在所有較舊的SRB_HEAD_OF_QUEUE_TAG_REQUEST和SRB_ORDERED_QUEUE_TAG_REQUEST要求結束之後,依任何循序執行。 |
SRB_ORDERED_QUEUE_TAG_REQUEST | 只有在所有較舊的SRB_HEAD_OF_QUEUE_TAG_REQUEST和所有較舊的要求都已完成之後,才執行要求。 |
SRB_HEAD_OF_QUEUE_TAG_REQUEST | 將要求放在佇列前端,並在佇列中所有其他要求之前執行,包括所有其他SRB_HEAD_OF_QUEUE_TAG_REQUEST標記的要求。 |
如需詳細資訊,請參閱 SCSI 規格。