MINIPORT_PROCESS_SG_LIST回呼函式 (ndis.h)
總線主要迷你埠驅動程式提供 MiniportProcessSGList 函式來處理網路數據的散佈/收集清單。
語法
MINIPORT_PROCESS_SG_LIST MiniportProcessSgList;
void MiniportProcessSgList(
[in] PDEVICE_OBJECT pDO,
[in] PVOID Reserved,
[in] PSCATTER_GATHER_LIST pSGL,
[in] PVOID Context
)
{...}
參數
[in] pDO
迷你埠驅動程序應該忽略此參數。
[in] Reserved
迷你埠驅動程序應該忽略此參數。
[in] pSGL
散佈/收集清單緩衝區的指標。 這不一定與呼叫 中所指定驅動程序的緩衝區相同 NdisMAllocateNetBufferSGList 函式
[in] Context
迷你埠驅動程式在呼叫 NdisMAllocateNetBufferSGList之前所建立之內容區域的指標。
傳回值
沒有
言論
迷你埠驅動程式呼叫 NdisMRegisterScatterGatherDma 函式來註冊 MiniportProcessSGList 函式。 當迷你埠驅動程式呼叫 NdisMAllocateNetBufferSGList 以建立散佈/收集清單時,NDIS 會呼叫 HAL 來建立清單。
如果 NdisMAllocateNetBufferSGList 成功,NDIS 會呼叫迷你埠驅動程式的 MiniportProcessSGList 函式。 不過,該函式的成功傳回不保證已叫用回呼;它可以以異步方式叫用。
當 NDIS 呼叫 MiniportProcessSGList時,驅動程式可以將NET_BUFFER結構傳送至硬體。 MiniportProcessSGList 會將散佈圖/收集清單的實體位址提交至 NIC 的 DMA,並將傳送命令發出至 NIC。
HAL 可以在 NDIS 從 NdisMAllocateNetBufferSGList傳回之前或之後呼叫 MiniportProcessSGList。 因此,驅動程式寫入器不應該假設呼叫是在 NdisMAllocateNetBufferSGList的內容中進行。
NDIS 會在 IRQL = DISPATCH_LEVEL 呼叫 MiniportProcessSGList。
範例
若要定義 MiniportProcessSGList 函式,您必須先提供函式宣告,以識別您要定義的函式類型。 Windows 提供一組驅動程式的函式類型。 使用函式類型宣告函式有助於 驅動程式的程式代碼分析、靜態驅動程序驗證器 (SDV)和其他驗證工具尋找錯誤,而且是撰寫 Windows作系統驅動程式的需求。例如,若要定義名為 「MyProcessSGList」 的 MiniportProcessSGList 函式,請使用 MINIPORT_PROCESS_SG_LIST 類型,如下列程式代碼範例所示:
MINIPORT_PROCESS_SG_LIST MyProcessSGList;
然後,實作您的函式,如下所示:
_Use_decl_annotations_
VOID
MyProcessSGList(
PDEVICE_OBJECT pDO,
PVOID Reserved,
PSCATTER_GATHER_LIST pSGL,
PVOID Context
)
{...}
MINIPORT_PROCESS_SG_LIST 函式類型定義於 Ndis.h 頭檔中。 若要在執行程式代碼分析工具時更準確地識別錯誤,請務必將 Use_decl_annotations 批註新增至函式定義。 Use_decl_annotations 批注可確保會使用套用至頭檔中 MINIPORT_PROCESS_SG_LIST 函式類型的批注。 如需函式宣告需求的詳細資訊,請參閱 使用 NDIS 驅動程式的函式角色類型來宣告函式。
如需 Use_decl_annotations的相關信息,請參閱 批注函式行為。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平臺 | 窗戶 |
標頭 | ndis.h (包括 Ndis.h) |
IRQL | DISPATCH_LEVEL |