Share via


EVT_NET_ADAPTER_RETURN_RX_BUFFER 콜백 함수(netadapter.h)

이 선택적 콜백 함수를 구현하여 이전에 수동 조각 할당 및 첨부 파일을 지정한 NET_FRAGMENT 수신 버퍼에서 정리를 수행합니다.

구문

EVT_NET_ADAPTER_RETURN_RX_BUFFER EvtNetAdapterReturnRxBuffer;

void EvtNetAdapterReturnRxBuffer(
  [_In_] NETADAPTER Adapter,
  [_In_] NET_FRAGMENT_RETURN_CONTEXT_HANDLE RxReturnContext
)
{...}

매개 변수

[_In_] Adapter

NetAdapterCreate에 대한 이전 호출에서 클라이언트가 만든 네트워크 어댑터 개체입니다.

[_In_] RxReturnContext

드라이버 할당 컨텍스트 공간 구조에 대한 포인터입니다.

반환 값

없음

설명

NET_ADAPTER_RX_CAPABILITIES 구조체의 적절한 멤버를 설정한 다음 NetAdapterSetDatapathCapabilities를 호출하여 이 콜백 함수의 구현을 등록합니다. 클라이언트 드라이버는 일반적으로 NetAdapterStart를 호출하기 전에 Net 어댑터를 시작할 때 NetAdapterSetDatapathCapabilities를 호출합니다.

이 콜백 함수는 net 어댑터 클라이언트 드라이버가 NET_ADAPTER_RX_CAPABILITIES_INIT_DRIVER_MANAGED 함수를 사용하여 NET_ADAPTER_RX_CAPABILITIES 구조를 초기화하지 않는 한 선택 사항입니다. 이 초기화 함수를 사용하면 드라이버는 운영 체제에 NET_FRAGMENT 수신 버퍼의 할당 및 첨부 파일을 수동으로 관리하고 있음을 운영 체제에 알립니다. 따라서 이 경우 시스템이 버퍼로 완료되면 운영 체제가 호출되도록 이 콜백 함수를 제공해야 합니다.

예제

이 콜백 함수에서 클라이언트 드라이버는 운영 체제가 이 수신 버퍼로 완료되었으므로 필요한 정리 또는 후속 작업을 수행할 수 있습니다. 다음 예제에서 반환 컨텍스트에는 표시된 패킷 수를 추적하는 멤버와 수신 처리 중에 lookaside 버퍼에 사용되는 메모리 개체가 포함됩니다. 명확성을 위해 오류 처리가 제외되었습니다.

VOID
MyReturnRxBuffer(
	_In_	NETADAPTER							Adapter,
	_In_	NET_FRAGMENT_RETURN_CONTEXT_HANDLE	RxReturnContext
)
{
	UNREFERENCED_PARAMETER(Adapter);

	RxReturnContext->IndicatedPackets--;

	// Clean up the lookaside buffer if this is the last packet
	if(RxReturnContext->IndicatedPackets == 0)
	{
		WdfObjectDelete(RxReturnContext->LookasideBufferMemory);
	}
}

요구 사항

요구 사항
대상 플랫폼 유니버설
최소 KMDF 버전 1.25
머리글 netadapter.h(netadaptercx.h 포함)
IRQL <= DISPATCH_LEVEL

추가 정보

NET_ADAPTER_RX_CAPABILITIES