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 會傳回下列其中一個值:
傳回碼 | 描述 |
---|---|
|
此函式不會在作用中的作系統上實作。 |
|
表示例程已成功建立散佈/收集清單。
重要 請參閱。
|
|
HwDeviceExtension 傳遞 NULL。 |
|
呼叫是在無效的 IRQL 進行。 |
|
系統沒有足夠的地圖緩存器可供傳輸使用。 |
|
Length 參數太大,無法放入緩衝區內。 |
言論
迷你埠驅動程式會呼叫 StorPortPutScatterGatherList,以釋放在建構散佈/收集清單時配置 StorPortBuildScatterGather List 的資源。
迷你埠驅動程序必須先呼叫 StorPortPutScatterGatherList,才能釋放或重複使用配置給散佈/收集清單的記憶體。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | storport.h (包括 Storport.h) |
IRQL | DISPATCH_LEVEL |