共用方式為


MINIPORT_PROCESS_SG_LIST回呼函式 (ndis.h)

總線主機迷你埠驅動程式提供 MiniportProcessSGList 函式來處理網路數據的散佈/收集清單。

注意 您必須使用 MINIPORT_PROCESS_SG_LIST 類型來宣告函式。 如需詳細資訊,請參閱下列範例一節。
 

語法

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 可以在 NDISMAllocateNetBufferSGList 傳回 NDIS 之前或之後呼叫 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 和更新版本支援。
目標平台 Windows
標頭 ndis.h (包含 Ndis.h)
IRQL DISPATCH_LEVEL

另請參閱

NdisMAllocateNetBufferSGList

NdisMRegisterScatterGatherDma