다음을 통해 공유


EVT_PACKET_QUEUE_START 콜백 함수(netpacketqueue.h)

EvtPacketQueueStart 콜백 함수는 클라이언트 드라이버가 패킷 큐에 대한 데이터 경로를 시작하기 위해 구현하는 선택적 콜백입니다.

통사론

EVT_PACKET_QUEUE_START EvtPacketQueueStart;

void EvtPacketQueueStart(
  [_In_] NETPACKETQUEUE PacketQueue
)
{...}

매개 변수

[_In_] PacketQueue

패킷 큐에 대한 핸들입니다.

반환 값

없음

발언

선택적 콜백입니다. 이 콜백 함수를 EVT_NET_ADAPTER_CREATE_TX(RX)QUEUE 콜백에 등록합니다. NET_PACKET_QUEUE_CONFIG_INIT사용하여 구조를 초기화한 후 NET_PACKET_QUEUE_CONFIG 구조체의 적절한 멤버를 설정한 다음 NetTx(Rx)QueueCreate호출합니다.

이 콜백에서 클라이언트 드라이버는 일반적으로 해당 하드웨어가 패킷 전송 또는 수신에 필요한 정보를 구성합니다. 이 콜백은 값을 반환하지 않으므로 실패하지 않아야 하므로 클라이언트 드라이버는 큐를 만드는 동안 리소스 할당과 같은 작업을 수행해야 합니다. 따라서 이 콜백은 빠르게 실행되는 경량 함수여야 합니다.

클라이언트 드라이버는 EvtPacketQueueStart 반환될 때까지 EVT_PACKET_QUEUE_ADVANCE, EVT_PACKET_QUEUE_CANCEL또는 EVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLED 호출을 받지 않습니다. 또한 EvtPacketQueueStart 동일한 실행 컨텍스트에서 호출됩니다. 또는 스레드가 EvtPacketQueueAdvance, EvtPacketQueueCancel및 EvtPacketQueueSetNotificationEnabled 클라이언트 드라이버는 개별 큐 인스턴스에 대해 이러한 콜백 함수 간에 동기화할 필요가 없습니다.

큐가 시작되면 NetAdapterCx는 이 큐의 모든 링 버퍼에 대해 BeginIndex == NextIndex == 0 보장합니다. 시작 후 프레임워크는 패킷 링 버퍼에 대한 NextIndex 읽거나 쓰지 않으므로 클라이언트 드라이버는 필요에 따라 이를 사용하거나 사용하지 않도록 선택할 수 있습니다. BeginIndex 프레임워크에서 읽지만 EvtPacketQueueStart외부에서 수정되지 않습니다.

NetAdapterCx 데이터 경로 폴링 모델을 보여 주는 자세한 정보 및 다이어그램은 전송 및 수신 큐를 참조하세요.

요구 사항

요구
대상 플랫폼 보편적
최소 KMDF 버전 1.27
최소 UMDF 버전 2.33
헤더 netpacketqueue.h(netadaptercx.h 포함)
IRQL PASSIVE_LEVEL

참고 항목

EVT_NET_ADAPTER_CREATE_RXQUEUE

EVT_NET_ADAPTER_CREATE_TXQUEUE

NetRxQueueCreate

NetTxQueueCreate

EVT_PACKET_QUEUE_ADVANCE

EVT_PACKET_QUEUE_CANCEL

EVT_PACKET_QUEUE_SET_NOTIFICATION_ENABLED

EVT_PACKET_QUEUE_STOP