функция обратного вызова 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

Указатель на структуру контекстного пространства, выделенного драйвером.

Возвращаемое значение

None

Remarks

Зарегистрируйте реализацию этой функции обратного вызова, задав соответствующий член структуры NET_ADAPTER_RX_CAPABILITIES , а затем вызвав NetAdapterSetDatapathCapabilities. Клиентские драйверы обычно вызывают NetAdapterSetDatapathCapabilities при запуске сетевого адаптера перед вызовом NetAdapterStart.

Эта функция обратного вызова является необязательной, если драйвер клиента сетевого адаптера не инициализирует свою NET_ADAPTER_RX_CAPABILITIES структуру с помощью функции NET_ADAPTER_RX_CAPABILITIES_INIT_DRIVER_MANAGED . Используя эту функцию инициализации, драйвер сообщает операционной системе, что он управляет выделением и вложением 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