Поделиться через


функция обратного вызова MINIPORT_RETURN_NET_BUFFER_LISTS (ndis.h)

NDIS вызывает функцию MiniportReturnNetBufferLists , чтобы вернуть права владения NET_BUFFER_LIST структурами, связанными NET_BUFFER структурами и любыми подключенными многомерными списками mdl к драйверу минипорта.

Примечание Функцию необходимо объявить с помощью типа MINIPORT_RETURN_NET_BUFFER_LISTS . Дополнительные сведения см. в следующем разделе Примеры.
 

Синтаксис

MINIPORT_RETURN_NET_BUFFER_LISTS MiniportReturnNetBufferLists;

void MiniportReturnNetBufferLists(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PNET_BUFFER_LIST NetBufferLists,
  [in] ULONG ReturnFlags
)
{...}

Параметры

[in] MiniportAdapterContext

Дескриптор контекстной области, выделенной драйвером мини-порта в функции MiniportInitializeEx . Драйвер мини-порта использует эту область контекста для хранения сведений о состоянии адаптера.

[in] NetBufferLists

Указатель на связанный список NET_BUFFER_LIST структур, которые NDIS возвращает драйверу мини-порта. Связанный список может содержать NET_BUFFER_LIST структуры из нескольких предыдущих вызовов Функция NdisMIndicateReceiveNetBufferLists .

[in] ReturnFlags

Флаги NDIS, которые можно объединить с операцией OR. Эта функция поддерживает флаг NDIS_RETURN_FLAGS_DISPATCH_LEVEL, который, если он задан, указывает, что текущий IRQL DISPATCH_LEVEL. Дополнительные сведения об этом флаге см. в разделе Dispatch IRQL Tracking.

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

None

Remarks

MiniportReturnNetBufferLists — это обязательная функция для драйверов минипорта, которые указывают на полученные сетевые данные с помощью Функция NdisMIndicateReceiveNetBufferLists . Когда драйвер с превышением выполняет вызовФункция NdisReturnNetBufferLists, NDIS вызывает функцию MiniportReturnNetBufferLists драйвера мини-порта, которая указывает указанные структуры NET_BUFFER_LIST.

MiniportReturnNetBufferLists может подготовить возвращаемую структуру NET_BUFFER_LIST для использования в последующем указании получения. Хотя MiniportReturnNetBufferLists может возвращать NET_BUFFER_LIST структуры в пул (например, он может вызывать функцию NdisFreeNetBufferList ), может быть эффективнее повторно использовать структуры, не возвращая их в пул.

NDIS вызывает MiniportReturnNetBufferLists по адресу IRQL<= DISPATCH_LEVEL.

Примеры

Чтобы определить функцию MiniportReturnNetBufferLists , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.

Например, чтобы определить функцию MiniportReturnNetBufferLists с именем MyReturnNetBufferLists, используйте тип MINIPORT_RETURN_NET_BUFFER_LISTS , как показано в этом примере кода:

MINIPORT_RETURN_NET_BUFFER_LISTS MyReturnNetBufferLists;

Затем реализуйте функцию следующим образом:

_Use_decl_annotations_
VOID
 MyReturnNetBufferLists(
    NDIS_HANDLE  MiniportAdapterContext,
    PNET_BUFFER_LIST  NetBufferLists,
    ULONG  ReturnFlags
    )
  {...}

Тип функции MINIPORT_RETURN_NET_BUFFER_LISTS определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, обязательно добавьте заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции MINIPORT_RETURN_NET_BUFFER_LISTS в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в разделе Объявление функций с помощью типов ролей функций для драйверов NDIS.

Сведения о Use_decl_annotations см. в статье О поведении функции.

Требования

Требование Значение
Минимальная версия клиента Поддерживается в NDIS 6.0 и более поздних версиях.
Целевая платформа Windows
Header ndis.h (включая Ndis.h)
IRQL <= DISPATCH_LEVEL

См. также раздел

MiniportInitializeEx

NET_BUFFER

NET_BUFFER_LIST

NdisFreeNetBufferList

NdisMIndicateReceiveNetBufferLists

NdisReturnNetBufferLists