NDIS 和基础驱动程序使用NDIS_STATUS_INDICATION结构为过度协议驱动程序提供状态指示。
Syntax
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;
Members
Header
NDIS_STATUS_INDICATION结构的NDIS_OBJECT_HEADER结构。 设置 Header 指定要NDIS_OBJECT_TYPE_STATUS_INDICATION的结构的 Type 成员、要NDIS_STATUS_INDICATION_REVISION_1的 Revision 成员和要NDIS_SIZEOF_STATUS_INDICATION_REVISION_1的 Size 成员。
SourceHandle
状态指示的来源。 如果源是微型端口适配器,则它应该是 NDIS 传递给 MiniportInitializeEx 函数的 MiniportAdapterHandle 参数的句柄。 如果源是筛选器模块,则它应该是传递给 FilterAttach 函数的 NdisFilterHandle 参数的 NDIS 的句柄。
PortNumber
状态指示的源端口。 如果状态指示不特定于端口,请将 PortNumber 设置为零。
StatusCode
状态代码(由 NDIS 提供或从基础驱动程序传播)。 该值是NDIS_STATUS_XXX 代码。 有关 NDIS_STATUS_XXX 代码的详细信息,请参阅 状态指示。
Flags
StatusBuffer 状态缓冲区中的信息类型。 微型端口驱动程序将此成员设置为零。 此成员保留为 NDIS。
DestinationHandle
一个句柄,用于标识应接收状态指示的过度配置驱动程序。 如果 为 NULL,NDIS 将指示绑定到微型端口适配器的每个协议驱动程序的状态。 如果非 NULL,则 NDIS 仅向 DestinationHandle 标识的驱动程序指示状态。 在这种情况下,驱动程序还必须设置 RequestId 成员。 有关 OID 请求的详细信息,请参阅“备注”部分。
RequestId
与状态指示关联的 OID 请求。 如果没有与状态指示关联的 OID 请求, 则 RequestId 为 NULL。 如果状态指示与微型端口驱动程序以返回的状态NDIS_STATUS_INDICATION_REQUIRED完成的 OID 请求相关联,微型端口驱动程序必须设置 RequestId 成员。 在这种情况下,驱动程序还必须设置 DestinationHandle 成员。
有关 OID 请求的详细信息,请参阅以下“备注”部分。
StatusBuffer
指向缓冲区的指针,该缓冲区包含依赖于 StatusCode 的值的中等特定数据。
例如,如果 StatusCode是NDIS_STATUS_LINK_STATE,则此参数指向 NDIS_LINK_STATE 结构, StatusBufferSize 为 sizeof(NDIS_LINK_STATE)。
对于某些NDIS_STATUS_XXX 值,此指针为 NULL,StatusBufferSize 设置为零。
StatusBufferSize
StatusBuffer 中状态信息缓冲区的长度(以字节为单位)。
Guid
NDIS 用来生成 WMI 通知的专用 GUID。 有关专用 GUID 的详细信息,请参阅 OID_GEN_SUPPORTED_GUIDS。
NdisReserved[4]
保留为 NDIS。
注解
微型端口驱动程序通过调用 NdisMIndicateStatusEx 函数来指示状态。 筛选器驱动程序调用 NdisFIndicateStatus 函数。
某些 OID 请求使微型端口驱动程序能够提供状态指示的 OID 完成状态。 在这种情况下,微型端口驱动程序返回NDIS_STATUS_INDICATION_REQUIRED OID 请求的完成状态。 微型端口驱动程序无法返回此状态,除非特定的 OID 允许它。 若要确定是否允许此状态,请参阅 OID 参考页。
如果状态指示与微型端口驱动程序返回NDIS_STATUS_INDICATION_REQUIRED的 OID 请求相关联,则发出状态指示的驱动程序必须在NDIS_STATUS_INDICATION结构中设置 DestinationHandle 和 RequestId 成员。
在这种情况下,驱动程序将 DestinationHandle 和 RequestId 成员分别设置为 NDIS_OID_REQUEST 结构中 RequestHandle 和 RequestId 成员的值。
例如,在无线网络中,OID 请求的处理可能需要很长时间才能完成。 在这种情况下,微型端口驱动程序可以立即完成 OID 请求,并在以后提供状态指示,以提供 OID 请求的最终结果。
协议驱动程序在 ProtocolStatusEx 函数处接收状态指示。 筛选器驱动程序在 FilterStatus 函数处接收状态指示。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | NDIS 6.0 及更高版本中受支持。 |
| Header | ndis.h (包括 Ndis.h) |