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 대한 호출을 받지 않습니다. 또한 EvtPacketQueueStartEvtPacketQueueAdvance, EvtPacketQueueCancelEvtPacketQueueSetNotificationEnabled와 같은 실행 컨텍스트 또는 스레드에서 호출되므로 클라이언트 드라이버는 개별 큐 instance 대해 이러한 콜백 함수 간에 동기화할 필요가 없습니다.

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

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

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.27
머리글 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