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 (包含 ndis.h)
IRQL <= DISPATCH_LEVEL

另請參閱

NdisSetPollNotification

NDIS_POLL_CHARACTERISTICS

NDIS_POLL_DATA

NDIS_POLL_RECEIVE_DATA

NdisRegisterPoll

NdisRequestPoll