NDIS_POLL 콜백 함수(poll.h)

미니포트 드라이버는 NDIS가 수신 표시를 폴링하고 완료를 보내는 NdisPoll 콜백 함수를 구현합니다.

구문

NDIS_POLL NdisPoll;

void() NdisPoll(
  [_In_]    void *Context,
  [_Inout_] NDIS_POLL_DATA *PollData
)
{...}

매개 변수

[_In_] Context

드라이버가 Poll 개체를 만들 때 제공한 컨텍스트 정보에 대한 포인터입니다.

[_Inout_] PollData

드라이버가 수신 표시를 수행하고 완료를 보내는 데 사용해야 하는 NDIS_POLL_DATA 구조체에 대한 포인터입니다. 또한 표시해야 하는 NLL 수에 대한 세부 정보도 포함되어 있습니다.

설명

미니포트 드라이버는 미니포트 어댑터를 초기화하는 동안 NdisPoll 콜백을 등록합니다. 드라이버는 NdisRegisterPoll을 호출하기 전에 NDIS_POLL_CHARACTERISTICS 구조체의 PollHandler 매개 변수에서 NdisPoll 함수의 진입점을 지정합니다.

NDIS는 드라이버가 NdisRequestPoll을 호출할 때 먼저 NdisPoll 콜백을 호출합니다. NDIS는 드라이버가 수신 표시 또는 전송 완료를 진행하는 동안 NdisPoll 을 계속 호출합니다.

NdisPoll 콜백은 PASSIVE_LEVEL 및 DISPATCH_LEVEL IRQL 모두에서 호출될 수 있습니다. 드라이버는 어떤 수준이 될 것인지를 가정해서는 안 됩니다.

드라이버는 NDIS_POLL_DATA 구조체의 수신 또는 전송 매개 변수를 검사 표시하거나 완료할 수 있는 최대 NBL 수를 가져와야 합니다.

수신 표시의 경우 드라이버는 다음을 수행해야 합니다.

  1. 표시할 수 있는 최대 Rx 패킷 수까지 가져옵니다.
  2. NLL을 초기화합니다.
  3. NDIS_POLL_RECEIVE_DATA 구조에서 제공하는 NBL 큐에 추가합니다(NdisPollPollData 매개 변수의 NDIS_POLL_DATA 구조에 있음).
  4. 콜백을 종료합니다.

전송 완료의 경우 드라이버는 다음을 수행해야 합니다.

  1. 완료할 수 있는 최대 Tx 패킷 수까지 가져옵니다.
  2. NCL을 완료합니다.
  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