共用方式為


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 數目上限。

針對接收指示,驅動程式應:

  1. 擷取最多可以指出的 Rx 封包數目。
  2. 初始化 NBL。
  3. 將它們新增至 NDIS_POLL_RECEIVE_DATA 結構所提供的 NBL 佇列(位於 NdisPollPollData 參數的 NDIS_POLL_DATA 結構中)。
  4. 結束回呼。

針對傳輸完成,驅動程式應:

  1. 最多擷取其可完成的 Tx 封包數目上限。
  2. 完成 NBL。
  3. 將它們新增至 NDIS_POLL_TRANSMIT_DATA 結構所提供的 NBL 佇列(位於 NdisPollPollData 參數的 NDIS_POLL_DATA 結構中)。
  4. 結束回呼。

驅動程式不應該在結束 NdisPoll 函式之前啟用 Poll 物件的中斷。 NDIS 將繼續輪詢驅動程式,直到評估沒有取得進展。 此時,NDIS 會停止輪詢,並要求驅動程式叫用 NdisSetPollNotification 回呼來重新啟用中斷。

要求

要求 價值
最低支援的用戶端 Windows 11
支援的最低伺服器 Windows Server 2022
標頭 poll.h (include ndis.h)
IRQL <= DISPATCH_LEVEL

另請參閱

NdisSetPollNotification

NDIS_POLL_CHARACTERISTICS

NDIS_POLL_DATA

NDIS_POLL_RECEIVE_DATA

NdisRegisterPoll

NdisRequestPoll