структура NDIS_STATUS_INDICATION (ndis.h)
NDIS и базовые драйверы используют структуру NDIS_STATUS_INDICATION для предоставления сведений о состоянии для вышележащих драйверов протокола.
Синтаксис
typedef struct _NDIS_STATUS_INDICATION {
NDIS_OBJECT_HEADER Header;
NDIS_HANDLE SourceHandle;
NDIS_PORT_NUMBER PortNumber;
NDIS_STATUS StatusCode;
ULONG Flags;
NDIS_HANDLE DestinationHandle;
PVOID RequestId;
PVOID StatusBuffer;
ULONG StatusBufferSize;
GUID Guid;
PVOID NdisReserved[4];
} NDIS_STATUS_INDICATION, *PNDIS_STATUS_INDICATION;
Члены
Header
Структура NDIS_OBJECT_HEADER для структуры NDIS_STATUS_INDICATION. Задайте для элемента Type структуры, указанной в заголовке , значение NDIS_OBJECT_TYPE_STATUS_INDICATION, для элемента Revision — NDIS_STATUS_INDICATION_REVISION_1, а для элемента Size — значение NDIS_SIZEOF_STATUS_INDICATION_REVISION_1.
SourceHandle
Источник указания состояния. Если источником является адаптер мини-порта, это должен быть дескриптор, переданный NDIS в параметр MiniportAdapterHandle функции MiniportInitializeEx . Если источником является модуль фильтра, это должен быть дескриптор, переданный NDIS параметру NdisFilterHandle функции FilterAttach .
PortNumber
Исходный порт указания состояния. Если индикатор состояния не связан с портом, задайте значение PortNumber равным нулю.
StatusCode
Код состояния, предоставляемый NDIS или распространяемый из базовых драйверов. Значением является код NDIS_STATUS_XXX . Дополнительные сведения о кодах NDIS_STATUS_XX см . в разделе Индикаторы состояния.
Flags
Тип сведений в буфере состояния в StatusBuffer . Драйверы мини-порта устанавливают для этого элемента нулевое значение. Этот элемент зарезервирован для NDIS.
DestinationHandle
Дескриптор, который идентифицирует драйвер, который должен получить индикатор состояния. Если значение NULL, NDIS указывает состояние каждого драйвера протокола, привязанного к адаптеру мини-порта. Если значение не равно NULL, NDIS указывает состояние только для драйвера, который идентифицирует DestinationHandle . В этом случае драйвер также должен задать элемент RequestId . Дополнительные сведения о запросах OID см. в разделе Примечания.
RequestId
Запрос OID, связанный с указанием состояния. Если запрос OID не связан с указанием состояния, RequestId имеет значение NULL. Драйверы мини-порта должны задать элемент RequestId, если индикатор состояния связан с запросом OID, который драйвер мини-порта завершил с возвращенным состоянием NDIS_STATUS_INDICATION_REQUIRED. В этом случае драйвер также должен задать элемент DestinationHandle .
Дополнительные сведения о запросах OID см. в следующем разделе Примечания.
StatusBuffer
Указатель на буфер, содержащий средние данные, зависящие от значения в StatusCode .
Например, если StatusCode имеет значение NDIS_STATUS_LINK_STATE, этот параметр указывает на структуру NDIS_LINK_STATE , а Параметр StatusBufferSize имеет значение sizeof(NDIS_LINK_STATE).
Для некоторых значений NDIS_STATUS_XXX этот указатель имеет значение NULL , а Параметр StatusBufferSize имеет значение 0.
StatusBufferSize
Длина (в байтах) буфера сведений о состоянии в StatusBuffer .
Guid
Частный GUID, который NDIS использует для создания уведомления WMI. Дополнительные сведения о частных идентификаторах GUID см. в разделе OID_GEN_SUPPORTED_GUIDS.
NdisReserved[4]
Зарезервировано для NDIS.
Комментарии
Драйверы мини-порта указывают состояние путем вызова функции NdisMIndicateStatusEx . Драйверы фильтров вызывают функцию NdisFIndicateStatus .
Некоторые запросы OID позволяют драйверу минипорта предоставлять состояние завершения OID с указанием состояния. В этом случае драйвер мини-порта возвращает NDIS_STATUS_INDICATION_REQUIRED для состояния завершения запроса OID. Драйвер мини-порта не может вернуть это состояние, если это не разрешено определенным идентификатором OID. Чтобы определить, разрешено ли это состояние, см. страницу справочника по OID.
Если индикатор состояния связан с запросом OID, в котором драйвер мини-порта возвращал NDIS_STATUS_INDICATION_REQUIRED, драйвер, создающий индикатор состояния, должен задать элементы DestinationHandle и RequestId в структуре NDIS_STATUS_INDICATION.
В этом случае драйвер задает для членов DestinationHandle и RequestId значения элементов RequestHandle и RequestId в структуре NDIS_OID_REQUEST соответственно.
Например, в беспроводной сети обработка запроса OID может занять очень много времени. В этом случае драйвер мини-порта может немедленно завершить запрос OID и позже указать состояние, чтобы предоставить окончательный результат для запроса OID.
Драйверы протокола получают указания о состоянии в функции ProtocolStatusEx . Драйверы фильтров получают указания о состоянии в функции FilterStatus .
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.0 и более поздних версиях. |
Верхняя часть | ndis.h (включая Ndis.h) |