Функция 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:
- Признаки RSSI
- Индикация проверки подлинности
- Указания списка кандидатов PMKID
- Индикация потоковой передачи мультимедиа
- Индикаторы состояния радиосвязи
Дополнительные сведения об этих показаниях для носителей см. в разделе 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 |