PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS回呼函式 (ndis.h)
ProtocolCoReceiveNetBufferLists 函式進程會接收基礎驅動程式的指示。
語法
PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS ProtocolCoReceiveNetBufferLists;
void ProtocolCoReceiveNetBufferLists(
[in] NDIS_HANDLE ProtocolBindingContext,
[in] NDIS_HANDLE ProtocolVcContext,
[in] PNET_BUFFER_LIST NetBufferLists,
[in] ULONG NumberOfNetBufferLists,
[in] ULONG ReceiveFlags
)
{...}
參數
[in] ProtocolBindingContext
通訊協定驅動程式為維護系結狀態資訊所配置之內容區域的句柄。 此句柄在先前呼叫 NdisOpenAdapterEx中傳遞至 NDIS。
[in] ProtocolVcContext
此驅動程式會維護每個虛擬連線 (VC) 執行時間狀態資訊的通訊協定驅動程式配置內容區域的句柄。 當用戶端或獨立呼叫管理員呼叫 NdisCoCreateVc 函式時,或從其 ProtocolCoCreateVc 函式,提供此句柄。
[in] NetBufferLists
基礎驅動程式配置之 NET_BUFFER_LIST 結構的連結清單。 每個 NET_BUFFER_LIST 結構通常都與一個 NET_BUFFER 結構相關聯。
[in] NumberOfNetBufferLists
NetBufferList s 所指定之結構連結清單中的 NET_BUFFER_LIST 結構數目。
[in] ReceiveFlags
定義傳送作業屬性的旗標。 旗標可以與位 OR 運算結合。 若要清除所有旗標,請將此參數設定為零。 ProtocolCoReceiveNetBufferLists 支援下列旗標:
NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL
目前的 IRQL 是DISPATCH_LEVEL。 如需此旗標的詳細資訊,請參閱 分派 IRQL 追蹤。
NDIS_RECEIVE_FLAGS_RESOURCES
NDIS 會在呼叫 ProtocolCoReceiveNetBufferLists 之後,立即回收 NET_BUFFER_LIST 結構和任何附加NET_BUFFER結構的擁有權。
傳回值
沒有
言論
CoNDIS 通訊協定驅動程式需要 ProtocolCoReceiveNetBufferLists 函式。 在系結的迷你埠驅動程式呼叫 之後,NDIS 會呼叫 ProtocolCoReceiveNetBufferLists NdisMCoIndicateReceiveNetBufferLists 函式。 呼叫 ProtocolCoReceiveNetBufferLists 也可能因為回送而發生。
如果未設定 CoReceiveFlags 參數中的 NDIS_RECEIVE_FLAGS_RESOURCES 旗標,則通訊協定驅動程式會保留 NET_BUFFER_LIST 結構的擁有權,直到呼叫 NdisReturnNetBufferLists 函式。 如果 NDIS 設定 NDIS_RECEIVE_FLAGS_RESOURCES 旗標,通訊協定驅動程式就無法保留 NET_BUFFER_LIST 結構和相關聯的資源。 NDIS_RECEIVE_FLAGS_RESOURCES 表示基礎驅動程式的接收資源不足。 在此情況下,ProtocolCoReceiveNetBufferLists 函式應將接收的數據複製到通訊協定配置的記憶體中,並儘快傳回。
在多處理器系統上,ProtocolCoReceiveNetBufferLists 可以在多個處理器上同時執行。 在此情況下,將保護套用至重要數據結構,ProtocolCoReceiveNetBufferLists 存取。
NDIS 在 IRQL<= DISPATCH_LEVEL 呼叫 ProtocolCoReceiveNetBufferLists。
範例
若要定義 ProtocolCoReceiveNetBufferLists 函式,您必須先提供函式宣告,以識別您要定義的函式類型。 Windows 提供一組驅動程式的函式類型。 使用函式類型宣告函式有助於 驅動程式的程式代碼分析、靜態驅動程序驗證器 (SDV)和其他驗證工具尋找錯誤,而且是撰寫 Windows作系統驅動程式的需求。例如,若要定義名為 「MyCoReceiveNetBufferLists」 的 ProtocolCoReceiveNetBufferLists 函式,請使用 PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS 類型,如下列程式代碼範例所示:
PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS MyCoReceiveNetBufferLists;
然後,實作您的函式,如下所示:
_Use_decl_annotations_
VOID
MyCoReceiveNetBufferLists(
NDIS_HANDLE ProtocolBindingContext,
NDIS_HANDLE ProtocolVcContext,
INPNET_BUFFER_LIST NetBufferLists,
ULONG NumberOfNetBufferLists,
ULONG ReceiveFlags
)
{...}
PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS 函式類型定義於 Ndis.h 頭檔中。 若要在執行程式代碼分析工具時更準確地識別錯誤,請務必將 Use_decl_annotations 批註新增至函式定義。 Use_decl_annotations 批注可確保會使用套用至頭檔中 PROTOCOL_CO_RECEIVE_NET_BUFFER_LISTS 函式類型的批注。 如需函式宣告需求的詳細資訊,請參閱 使用 NDIS 驅動程式的函式角色類型來宣告函式。
如需 Use_decl_annotations的相關信息,請參閱 批注函式行為。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | NDIS 6.0 和更新版本支援。 |
目標平臺 | 窗戶 |
標頭 | ndis.h (包括 Ndis.h) |
IRQL | <= DISPATCH_LEVEL |