Функция NdisMCoIndicateReceiveNetBufferLists (ndis.h)

Функция NdisMCoIndicateReceiveNetBufferLists указывает, что драйвер мини-порта получил данные из сети.

Синтаксис

void NdisMCoIndicateReceiveNetBufferLists(
  [in] IN NDIS_HANDLE      NdisVcHandle,
  [in] IN PNET_BUFFER_LIST NetBufferLists,
  [in] IN ULONG            NumberOfNetBufferLists,
  [in] IN ULONG            CoReceiveFlags
);

Параметры

[in] NdisVcHandle

Дескриптор, идентифицирующий виртуальное подключение. Драйвер мини-порта получил этот дескриптор в качестве входного параметра функции MiniportCoCreateVc , когда клиент настроит исходящий вызов или когда диспетчер вызовов создал VC для зарегистрированной клиентом точки доступа службы (SAP), чтобы указать уведомление о входном вызове.

[in] NetBufferLists

Связанный список NET_BUFFER_LIST структур, выделенных драйвером мини-порта.

[in] NumberOfNetBufferLists

Количество NET_BUFFER_LIST структур, которые находятся в связанном списке структур, указанных NetBufferLists .

[in] CoReceiveFlags

Флаги, определяющие атрибуты для операции отправки. Флаги можно объединить с побитовой операцией ИЛИ. Чтобы очистить все флаги, задайте для этого параметра нулевое значение. NdisMCoIndicateReceiveNetBufferLists поддерживает следующие флаги:

NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL

Текущий irQL DISPATCH_LEVEL. Дополнительные сведения об этом флаге см. в разделе Dispatch IRQL Tracking.

NDIS_RECEIVE_FLAGS_RESOURCES

Драйвер мини-порта возвращает права владения NET_BUFFER_LIST структурами и любыми присоединенными NET_BUFFER структурами сразу после возврата NdisMCoIndicateReceiveNetBufferLists .

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

None

Remarks

Драйвер мини-порта обычно вызывает функцию NdisMCoIndicateReceiveNetBufferLists из своей функции MiniportInterruptDPC . Когда драйвер мини-порта вызывает NdisMCoIndicateReceiveNetBufferLists, он указывает список NET_BUFFER_LIST структур в параметре NetBufferLists . Затем NDIS передает структуры NET_BUFFER_LIST связанным драйверам протокола.

Драйверы miniport должны задать для элемента SourceHandle каждой структуры NET_BUFFER_LIST то же значение, что и параметр NdisVcHandle , чтобы NDIS мог возвращать структуры NET_BUFFER_LIST в правильный драйвер мини-порта.

Если драйвер мини-порта вызывает NdisMCoIndicateReceiveNetBufferLists и очищает флаг NDIS_RECEIVE_FLAGS_RESOURCES в параметре CoReceiveFlags , NDIS возвращает структуры NET_BUFFER_LIST, которые NetBufferLists задает драйверу мини-порта.Функция MiniportReturnNetBufferLists. В этом случае драйвер мини-порта не должен возвращать NET_BUFFER_LIST структуры, пока NDIS не вернет структуры NET_BUFFER_LIST в функцию MiniportReturnNetBufferLists .

Если драйвер мини-порта вызывает NdisMCoIndicateReceiveNetBufferLists и задает флаг NDIS_RECEIVE_FLAGS_RESOURCES в параметре CoReceiveFlags , драйвер мини-порта должен немедленно восстановить владение структурами NET_BUFFER_LIST. В этом случае NDIS не вызывает функцию MiniportReturnNetBufferLists драйвера мини-порта для возврата NET_BUFFER_LIST структур. Вместо этого NDIS возвращает структуры NET_BUFFER_LIST драйверу мини-порта при возврате NdisMCoIndicateReceiveNetBufferLists . Драйвер мини-порта должен восстановить NET_BUFFER_LIST структуры сразу после возврата NdisMCoIndicateReceiveNetBufferLists . Чтобы вернуть NET_BUFFER_LIST структуры, драйвер мини-порта может вызвать свой собственныйФункция MiniportReturnNetBufferLists.

Если драйвер мини-порта устанавливает флаг NDIS_RECEIVE_FLAGS_RESOURCES в параметре CoReceiveFlags , драйверы протокола должны скопировать сетевые данные и освободить NET_BUFFER_LIST структуры в драйвере мини-порта. Необходимо разработать драйверы мини-портов с достаточным количеством предварительно подготовленных NET_BUFFER_LIST структур, чтобы избежать ненужного копирования.

Вызывающий объект NdisMCoIndicateReceiveNetBufferLists должен правильно инициализировать структуры NET_BUFFER_LIST, присоединенные структуры NET_BUFFER и все подключенные списки дескрипторов памяти (MDL).

Требования

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

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

MiniportCoCreateVc

MiniportInterruptDPC

MiniportReturnNetBufferLists

NET_BUFFER

NET_BUFFER_LIST