NDIS_POLL回呼函式 (poll.h)
迷你埠驅動程式會實作 NdisPoll 回呼函式,NDIS 會輪詢接收指示並傳送完成。
語法
NDIS_POLL NdisPoll;
void() NdisPoll(
[_In_] void *Context,
[_Inout_] NDIS_POLL_DATA *PollData
)
{...}
參數
[_In_] Context
驅動程式在建立Poll物件時提供之內容資訊的指標。
[_Inout_] PollData
驅動程式應該用來執行接收指示並傳送完成之 NDIS_POLL_DATA 結構的指標。 它也包含需要指出多少 NBL 的詳細數據。
言論
迷你埠驅動程式會在迷你埠配接器初始化期間註冊 NdisPoll 回呼。 驅動程式會在呼叫 NdisRegisterPoll之前,先在 NDIS_POLL_CHARACTERISTICS 結構的 PollHandler 參數指定 NdisPoll 函式的進入點。
當驅動程式呼叫 NdisRequestPoll時,NDIS 會先叫用 NdisPoll 回呼。 NDIS 將繼續叫用 NdisPoll,而驅動程式正在進行接收指示或傳輸完成的前進進度。
NdisPoll 回呼可以在 PASSIVE_LEVEL 和 DISPATCH_LEVEL IRQL 叫用。 驅動程式不應該假設其會是哪一個層級。
驅動程式必須檢查 接收 或 傳輸 NDIS_POLL_DATA 結構 參數,以取得它可以指出或完成的 NBL 數目上限。
針對接收指示,驅動程式應:
- 擷取最多可以指出的 Rx 封包數目。
- 初始化 NBL。
- 將它們新增至 NDIS_POLL_RECEIVE_DATA 結構所提供的 NBL 佇列(位於 NdisPollPollData 參數的 NDIS_POLL_DATA 結構中)。
- 結束回呼。
針對傳輸完成,驅動程式應:
- 最多擷取其可完成的 Tx 封包數目上限。
- 完成 NBL。
- 將它們新增至 NDIS_POLL_TRANSMIT_DATA 結構所提供的 NBL 佇列(位於 NdisPollPollData 參數的 NDIS_POLL_DATA 結構中)。
- 結束回呼。
驅動程式不應該在結束 NdisPoll 函式之前啟用 Poll 物件的中斷。 NDIS 將繼續輪詢驅動程式,直到評估沒有取得進展。 此時,NDIS 會停止輪詢,並要求驅動程式叫用 NdisSetPollNotification 回呼來重新啟用中斷。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 11 |
支援的最低伺服器 | Windows Server 2022 |
標頭 | poll.h (include ndis.h) |
IRQL | <= DISPATCH_LEVEL |