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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de