共用方式為


StorPortBuildScatterGatherList 函式 (storport.h)

StorPortBuildScatterGatherList 例程會為指定的數據緩衝區建立散佈/收集清單。

語法

ULONG StorPortBuildScatterGatherList(
  [in]      PVOID                        HwDeviceExtension,
  [in]      PVOID                        Mdl,
  [in]      PVOID                        CurrentVa,
  [in]      ULONG                        Length,
  [in]      PPOST_SCATTER_GATHER_EXECUTE ExecutionRoutine,
  [in]      PVOID                        Context,
  [in]      BOOLEAN                      WriteToDevice,
  [in, out] PVOID                        ScatterGatherBuffer,
  [in]      ULONG                        ScatterGatherBufferLength
);

參數

[in] HwDeviceExtension

主機總線適配卡 (HBA) 的硬體裝置擴充功能指標。

[in] Mdl

記憶體描述元清單 (MDL) 的指標,描述與數據緩衝區相關聯的記憶體頁面。

[in] CurrentVa

數據緩衝區的虛擬位址。

[in] Length

數據緩衝區的長度,以位元組為單位。

[in] ExecutionRoutine

迷你連接埠驅動程式提供的指標 ExecutionRoutine。 Storport 驅動程式會在建立散佈/收集清單之後呼叫此例程。 迷你埠驅動程式應該執行在執行例程內使用散佈/收集清單的所有作業,而不是在呼叫 storPortBuildScatterGatherList 例程之後的程式代碼中執行。

ExecutionRoutine 宣告如下:

VOID
ExecutionRoutine (
    IN PVOID  *DeviceObject,
    IN PVOID  *Irp,
    IN PSTOR_SCATTER_GATHER_LIST  ScatterGather,
    IN PVOID  Context
    );

DeviceObject

迷你埠驅動程序應該忽略此參數。

Irp

迷你埠驅動程序應該忽略此參數。

ScatterGather

包含指定數據緩衝區之散佈/收集清單之 STOR_SCATTER_GATHER_LIST 結構的指標。

上下文

storPortBuildScatterGatherList StorPortBuildScatterGatherList 中指定的內容值, 函式的 Context 參數。

Storport 驅動程式會在 IRQL = DISPATCH_LEVEL 呼叫迷你埠驅動程序的 ExecutionRoutine

[in] Context

埠驅動程式傳遞至 ExecutionRoutine 參數中指定的執行例程的內容值。 執行例程會使用此值來唯一識別要求。

[in] WriteToDevice

值,表示 DMA 傳輸的方向。 true 值為 TRUE 表示從數據緩衝區傳送到裝置的值,而 FALSE 的值 表示從裝置到數據緩衝區的傳輸。

[in, out] ScatterGatherBuffer

接收散佈/收集清單之迷你埠提供的緩衝區指標。 迷你埠驅動程式可以呼叫 storPortAllocatePool 例程 來配置此緩衝區的記憶體。

[in] ScatterGatherBufferLength

ScatterGatherBuffer 參數所指向之緩衝區的大小,以位元組為單位。

傳回值

StorPortBuildScatterGatherList 會傳回下列其中一個值:

傳回碼 描述
STOR_STATUS_NOT_IMPLEMENTED
此函式不會在作用中的作系統上實作。
STOR_STATUS_SUCCESS
表示例程已成功建立散佈/收集清單。
重要 請參閱。
 
STOR_STATUS_INVALID_PARAMETER
HwDeviceExtension 傳遞 NULL
STOR_STATUS_INVALID_IRQL
呼叫是在無效的 IRQL 進行。
STOR_STATUS_INSUFFICIENT_RESOURCES
系統沒有足夠的地圖緩存器可供傳輸使用。
STOR_STATUS_BUFFER_TOO_SMALL
Length 參數太大,無法放入緩衝區內。

言論

迷你埠驅動程式會呼叫 StorPortPutScatterGatherList,以釋放在建構散佈/收集清單時配置 StorPortBuildScatterGather List 的資源。

迷你埠驅動程序必須先呼叫 StorPortPutScatterGatherList,才能釋放或重複使用配置給散佈/收集清單的記憶體。

注意 如果 StorPortBuildScatterGatherList 傳回STOR_STATUS_SUCCESS,則 ExecutionRoutine 中的回呼已成功排入佇列,以在建立散佈/收集清單之後執行。 迷你埠不得假設呼叫 ExecutionRoutine,或當 StorPortBuildScatterGatherList 傳回 時,散佈/收集清單已就緒。 如有必要,迷你埠可以同步處理執行程序代碼後,StorPortBuildScatterGatherListExecutionRoutine 中的回呼,以確保散佈/收集清單可供使用。
 

要求

要求 價值
目標平臺 普遍
標頭 storport.h (包括 Storport.h)
IRQL DISPATCH_LEVEL

另請參閱

STOR_SCATTER_GATHER_LIST

StorPortAllocatePool

StorPortPutScatterGatherList