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

Примечание NDIS 5. X является нерекомендуемым и заменен NDIS 6. x. Сведения о разработке новых драйверов NDIS см. в статье Сетевые драйверы, начиная с Windows Vista. Сведения о переносе NDIS 5. x драйверы для NDIS 6. x, см. раздел Перенос драйверов NDIS 5.x в NDIS 6.0.

NdisMIndicateStatus указывает на изменение состояния сетевой карты на драйверы NDIS более высокого уровня.

Синтаксис

void NdisMIndicateStatus(
  [in] NDIS_HANDLE MiniportHandle,
  [in] NDIS_STATUS GeneralStatus,
  [in] PVOID       StatusBuffer,
  [in] UINT        StatusBufferSize
);

Параметры

[in] MiniportHandle

Указывает дескриптор, который изначально входной для MiniportInitialize.

[in] GeneralStatus

Указывает значение NDIS_STATUS_ XXX , указывающее общее изменение состояния сетевой карты.

[in] StatusBuffer

Указатель на буфер, выделенный вызывающим объектом, содержащий данные, зависящие от среднего уровня и зависящие от значения GeneralStatus. Она содержит подробные сведения об изменении состояния.

[in] StatusBufferSize

Указывает размер буфера в байтах в StatusBuffer.

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

None

Remarks

Когда драйвер мини-порта вызывает NdisMIndicateStatus, NDIS вызывает функцию ProtocolStatus каждого связанного протокола. Это позволяет привязанному драйверу протокола или, возможно, диспетчеру конфигурации регистрировать изменения состояния базовой сетевой карты или выполнять действия по исправлению. Например, протокол может вызывать NdisReset в зависимости от указанного NDIS_STATUS_ XXX .

Когда драйвер мини-порта вызывает NdisMIndicateStatus , чтобы сообщить об изменении состояния сетевого адаптера, NDIS может вызвать функцию MiniportReset , чтобы попытаться восстановить сетевой адаптер до рабочего состояния. В таких случаях NDIS может вызывать связанные протоколы только с NDIS_STATUS_RESET_START и более поздних версий с NDIS_STATUS_RESET_END, а не с GeneralStatus , указанным драйвером мини-порта.

NdisMIndicateStatus предоставляет две части информации:

  • Общее значение состояния, указывающее общее изменение состояния.
  • Конкретная причина общего изменения, которая может быть зависят от сети. Например, сбои вставки кругов относятся к сетям 802.5, но не относятся к сетевым адаптерам Ethernet (802.3) и их драйверам.

Драйвер мини-порта также может вызвать NdisMIndicateStatus , чтобы указать на проблемы, такие как кабели, которые были случайно удалены, а затем повторно введены, или кольцо, которое временно завершилось сбоем. Например, предположим, что возникают оба следующих условия:

  • Драйвер мини-порта вызывает NdisMIndicateStatus с NDIS_STATUS_RING_STATUS.

  • StatusBuffer содержит одно из следующих значений состояния:

    • NDIS_RING_LOBE_WIRE_FAULT
    • NDIS_RING_HARD_ERROR NDIS_RING_SIGNAL_LOSS

После того как о таком изменении состояния будет показано указанием, все связанные пороговые значения или счетчики статистики остаются неизменными.

Драйвер мини-порта не может вызывать NdisMIndicateStatus в контексте функции MiniportISR, MiniportHalt или MiniportShutdown . Только десериализованный драйвер мини-порта может вызывать NdisMIndicateStatus в контексте своей функции MiniportInitialize .

Драйвер мини-порта должен освободить все блокировки спина, которые он удерживает, прежде чем вызывать NdisMIndicateStatus.

Сериализованные вызывающие объект NdisMIndicateStatus должны выполняться по адресу IRQL = DISPATCH_LEVEL. Десериализованные вызывающие функции NdisMIndicateStatus должны выполняться по адресу IRQL <= DISPATCH_LEVEL.

Указание потери и восстановления сетевого подключения

Когда драйвер мини-порта чувствует, что сетевое подключение потеряно, он должен вызвать NdisMIndicateStatus с NDIS_STATUS_MEDIA_DISCONNECT. После восстановления подключения драйвер мини-порта должен вызвать NdisMIndicateStatus с NDIS_STATUS_MEDIA_CONNECT.

Примечание 802.11. Драйверы мини-портов должны соответствовать рекомендациям по состоянию мультимедиа для беспроводных локальных сетей при создании признаков сетевого подключения. Дополнительные сведения об этих рекомендациях см. в разделе Индикаторы состояния мультимедиа для сетей 802.11.

802.11 Вызовы драйвера минипорта беспроводной локальной сети к NdisMIndicateStatus

Драйверы минипорта беспроводной локальной сети (WLAN) 802.11 могут указывать различные признаки, относящиеся к носителю WLAN. Например, драйвер мини-порта может сделать указание для конкретной локальной сети, если происходит следующее:

  • Драйвер обнаруживает, что сила полученного сигнала его текущей связи BSS изменилась.
  • Драйвер обнаруживает сбой TKIP MIC в полученном пакете.

Драйверы мини-портов 802.11 с NdisMIndicateStatus могут сделать следующие типы признаков WLAN:

Дополнительные сведения об этих показаниях для носителей см. в разделе 802.11 Media-Specific Индикаторы состояния.

Вызовы драйвера мини-порта глобальной сети к NdisMIndicateStatus

Большинство драйверов сетевых карт глобальной сети указывают состояние с помощью специальных кодов состояния и содержимого буфера. Эти индикаторы состояния создаются драйверами сетевой карты глобальной сети, и драйверы протокола NDIS, привязанные к такому драйверу мини-порта, могут игнорировать эти признаки. Однако правильная обработка этих показателей обычно приводит к повышению производительности протоколов и драйверов сетевой карты глобальной сети.

Следующие четыре типа указаний, относящихся к глобальной сети, можно отправить в связанные драйверы протокола с помощью NdisMIndicateStatus:

  • На строку вверх
  • На строку вниз
  • Fragment
  • Событие строки TAPI

NDIS_STATUS_WAN_LINE_UP

Драйвер мини-порта глобальной сети указывает состав всякий раз, когда активна новая связь. Пока это не произойдет, сетевой адаптер будет принимать кадры и позволить им успешно или неудачно, но маловероятно, что они будут получены каким-либо удаленным узлом. До тех пор, пока это не произойдет, протоколы должны сократить количество таймеров и повторных попыток, чтобы быстро завершить любые попытки исходящего подключения.

Драйвер мини-порта глобальной сети делает это с помощью NdisMIndicateStatus перед возвратом из запроса OID_TAPI_GET_ID .

Код состояния для обозначения состава NDIS_STATUS_WAN_LINE_UP. Буфер в StatusBuffer имеет формат структуры NDIS_MAC_LINE_UP .

NDIS_STATUS_WAN_LINE_DOWN

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

Код состояния для указания вниз строки NDIS_STATUS_WAN_LINE_DOWN. Буфер в StatusBuffer имеет формат структуры NDIS_MAC_LINE_DOWN .

NDIS_STATUS_WAN_FRAGMENT

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

Код состояния для указания фрагмента — NDIS_STATUS_WAN_FRAGMENT. Буфер в StatusBuffer имеет формат структуры NDIS_MAC_FRAGMENT .

NDISWAN отслеживает отброшенные пакеты, подсчитывая количество указаний фрагментов по каждому каналу.

NDIS_TAPI_EVENT

Драйвер мини-порта глобальной сети должен использовать значение GeneralStatus NDIS_STATUS_TAPI_INDICATION для указания состояния TAPI . Буфер в StatusBuffer имеет формат структуры NDIS_TAPI_EVENT.

  • Целевая платформа: универсальная
  • Версия: не поддерживается для драйверов NDIS 6.0 в Windows Vista. Вместо этого используйте NdisMIndicateStatusEx. Поддерживается для драйверов NDIS 5.1 в Windows Vista и Windows XP.

Требования

Требование Значение
Заголовок ndis.h (включая Ndis.h)
Библиотека Ndis.lib

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