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


Функция 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

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

[in] NetBufferLists

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

[in] NumberOfNetBufferLists

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

[in] CoReceiveFlags

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

NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL

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

NDIS_RECEIVE_FLAGS_RESOURCES

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

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

Никакой

Замечания

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

Драйверы минипорта должны задать для элемента 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 не вызывает функцию miniport driver 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 и все списки дескрипторов памяти (MDLs).

Требования

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

См. также

MiniportCoCreateVc

MiniportInterruptDPC

MiniportReturnNetBufferLists

NET_BUFFER

NET_BUFFER_LIST