функция обратного вызова 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 |
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе:Отправить и просмотреть отзыв по