Compartir a través de


EVT_NET_ADAPTER_RETURN_RX_BUFFER función de devolución de llamada (netadapter.h)

Implemente esta función de devolución de llamada opcional para realizar la limpieza en un búfer de recepción de NET_FRAGMENT para el que especificó anteriormente la asignación manual de fragmentos y los datos adjuntos.

Sintaxis

EVT_NET_ADAPTER_RETURN_RX_BUFFER EvtNetAdapterReturnRxBuffer;

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

Parámetros

[_In_] Adapter

Objeto de adaptador de red que el cliente creó en una llamada anterior a NetAdapterCreate.

[_In_] RxReturnContext

Puntero a una estructura de espacio de contexto asignada por el controlador.

Valor devuelto

None

Observaciones

Registre la implementación de esta función de devolución de llamada estableciendo el miembro adecuado de NET_ADAPTER_RX_CAPABILITIES estructura y, a continuación, llamando a NetAdapterSetDatapathCapabilities. Los controladores de cliente suelen llamar a NetAdapterSetDatapathCapabilities al iniciar un adaptador net antes de llamar a NetAdapterStart.

Esta función de devolución de llamada es opcional a menos que el controlador de cliente del adaptador net inicialice su estructura de NET_ADAPTER_RX_CAPABILITIES mediante la función NET_ADAPTER_RX_CAPABILITIES_INIT_DRIVER_MANAGED . Mediante este uso de esta función de inicialización, el controlador indica al sistema operativo que administra la asignación y los datos adjuntos de NET_FRAGMENT recibir búferes manualmente, por lo que debe proporcionar esta función de devolución de llamada en este caso para que el sistema operativo invoque una vez que el sistema haya terminado con el búfer.

Ejemplo

En esta función de devolución de llamada, el controlador cliente puede realizar cualquier acción de limpieza o seguimiento que necesite ahora que el sistema operativo ha terminado con este búfer de recepción. En el ejemplo siguiente, el contexto de retorno contiene un miembro para realizar un seguimiento del número de paquetes indicados, así como un objeto de memoria utilizado para un búfer de lookaside durante el procesamiento de recepción. El control de errores se ha dejado fuera para mayor claridad.

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);
	}
}

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1,25
Versión mínima de UMDF 2,33
Encabezado netadapter.h (include netadaptercx.h)
IRQL <= DISPATCH_LEVEL

Consulte también

NET_ADAPTER_RX_CAPABILITIES