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_STATUS_INDICATION结构的NDIS_OBJECT_HEADER结构。 将 Header 指定的结构的 Type 成员设置为 NDIS_OBJECT_TYPE_STATUS_INDICATION,将 Revision 成员设置为 NDIS_STATUS_INDICATION_REVISION_1,并将 Size 成员设置为 NDIS_SIZEOF_STATUS_INDICATION_REVISION_1。
SourceHandle
状态指示的源。 如果源是微型端口适配器,则它应该是 NDIS 传递给 MiniportInitializeEx 函数的 MiniportAdapterHandle 参数的句柄。 如果源是筛选器模块,则它应该是 NDIS 传递给 FilterAttach 函数的 NdisFilterHandle 参数的句柄。
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 中的值。
例如,如果NDIS_STATUS_LINK_STATE StatusCode,则此参数指向NDIS_LINK_STATE结构,而 StatusBufferSize 的大小为 (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 完成状态。 在这种情况下,微型端口驱动程序返回 OID 请求完成状态NDIS_STATUS_INDICATION_REQUIRED。 微型端口驱动程序无法返回此状态,除非特定的 OID 允许。 若要确定是否允许此状态,请参阅 OID 参考页。
如果状态指示与微型端口驱动程序NDIS_STATUS_INDICATION_REQUIRED返回的 OID 请求相关联,则发出状态指示的驱动程序必须在NDIS_STATUS_INDICATION结构中设置 DestinationHandle 和 RequestId 成员。
在这种情况下,驱动程序将 DestinationHandle 和 RequestId 成员分别设置为 NDIS_OID_REQUEST 结构中的 RequestHandle 和 RequestId 成员的值。
例如,在无线网络中,OID 请求的处理可能需要很长时间才能完成。 在这种情况下,微型端口驱动程序可以立即完成 OID 请求,并在以后提供状态指示,以提供 OID 请求的最终结果。
协议驱动程序在 ProtocolStatusEx 函数中接收状态指示。 筛选器驱动程序在 FilterStatus 函数中接收状态指示。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.0 及更高版本中受支持。 |
标头 | ndis.h (包括 Ndis.h) |