функция обратного вызова PROTOCOL_CO_STATUS_EX (ndis.h)
Функция ProtocolCoStatusEx указывает на изменения состояния базовых драйверов, ориентированных на подключение, или от NDIS.
Синтаксис
PROTOCOL_CO_STATUS_EX ProtocolCoStatusEx;
void ProtocolCoStatusEx(
[in] NDIS_HANDLE ProtocolBindingContext,
[in] NDIS_HANDLE ProtocolVcContext,
[in] PNDIS_STATUS_INDICATION StatusIndication
)
{...}
Параметры
[in] ProtocolBindingContext
Дескриптор области контекста, выделенной драйвером протокола. Драйвер протокола хранит сведения о контексте для каждой привязки в этой области контекста. Драйвер предоставил этот дескриптор NDIS, когда драйвер вызывал функцию NdisOpenAdapterEx .
[in] ProtocolVcContext
Дескриптор для области контекста, выделенной драйвером протокола, в которой драйвер протокола хранит сведения о состоянии выполнения виртуального подключения (VC). Если индикатор состояния не зависит от VC, этот параметр имеет значение NULL. В противном случае драйвер протокола изначально предоставлял этот дескриптор либо при вызове функции NdisCoCreateVc , либо из функции ProtocolCoCreateVc .
[in] StatusIndication
Указатель на структуру NDIS_STATUS_INDICATION , содержащую сведения о состоянии.
Возвращаемое значение
None
Remarks
NDIS вызывает ProtocolCoStatusEx , чтобы уведомить драйвер протокола об изменениях в состоянии базового драйвера CoNDIS. Дескриптор VC NULL для параметра ProtocolVcContext указывает на изменение состояния, не относящееся к VC. Для дескриптора VC, отличного от NULL , NDIS ограничивает уведомление о состоянии клиентами или диспетчерами вызовов, которые совместно используют этот дескриптор VC.
NDIS сериализует обозначения состояния для каждой привязки протокола. Чтобы определить состояние ссылки, используйте указания состояния из базовых драйверов вместо запросов OID. Эти индикаторы состояния повысят производительность системы и избежать возможных условий гонки.
NDIS вызывает ProtocolCoStatusEx по адресу IRQL <= DISPATCH_LEVEL.
Примеры
Чтобы определить функцию ProtocolCoStatusEx , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.Например, чтобы определить функцию ProtocolCoStatusEx с именем MyCoStatusEx, используйте тип PROTOCOL_CO_STATUS_EX , как показано в следующем примере кода:
PROTOCOL_CO_STATUS_EX MyCoStatusEx;
Затем реализуйте функцию следующим образом:
_Use_decl_annotations_
VOID
MyCoStatusEx(
NDIS_HANDLE ProtocolBindingContext,
NDIS_HANDLE ProtocolVcContext,
PNDIS_STATUS_INDICATION StatusIndication
)
{...}
Тип функции PROTOCOL_CO_STATUS_EX определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции PROTOCOL_CO_STATUS_EX в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов NDIS.
Сведения о Use_decl_annotations см. в статье Поведение функции с заметками.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.0 и более поздних версиях. |
Целевая платформа | Windows |
Header | ndis.h (включая Ndis.h) |
IRQL | <= DISPATCH_LEVEL (см. раздел "Примечания") |