PROTOCOL_CO_STATUS_EX回调函数 (ndis.h)

ProtocolCoStatusEx 函数指示基于面向连接的基础驱动程序或 NDIS 的状态更改。

注意 必须使用 PROTOCOL_CO_STATUS_EX 类型声明函数。 有关详细信息,请参阅以下示例部分。
 

语法

PROTOCOL_CO_STATUS_EX ProtocolCoStatusEx;

void ProtocolCoStatusEx(
  [in] NDIS_HANDLE ProtocolBindingContext,
  [in] NDIS_HANDLE ProtocolVcContext,
  [in] PNDIS_STATUS_INDICATION StatusIndication
)
{...}

参数

[in] ProtocolBindingContext

协议驱动程序分配的上下文区域的句柄。 协议驱动程序在此上下文区域中维护每个绑定的上下文信息。 驱动程序调用 NdisOpenAdapterEx 函数时,驱动程序向 NDIS 提供此句柄。

[in] ProtocolVcContext

协议驱动程序分配的上下文区域的句柄,协议驱动程序在其中维护虚拟连接 (VC) 运行时状态信息。 如果状态指示 不是 特定于 VC 的,则此参数为 NULL。 否则,协议驱动程序最初在调用 NdisCoCreateVc 函数时或从其 ProtocolCoCreateVc 函数提供此句柄。

[in] StatusIndication

指向包含状态信息的 NDIS_STATUS_INDICATION 结构的指针。

返回值

备注

NDIS 调用 ProtocolCoStatusEx 以通知协议驱动程序基础 CoNDIS 驱动程序的状态更改。 ProtocolVcContext 参数的 NULL VC 句柄指示不特定于 VC 的状态更改。 对于非 NULL VC 句柄,NDIS 将状态通知限制为共享此 VC 句柄的客户端或调用管理器。

NDIS 序列化每个协议绑定的状态指示。 若要确定链接状态,请使用基础驱动程序的状态指示,而不是 OID 查询。 这些状态指示将提高系统性能并避免可能的争用条件。

NDIS 在 IRQL <= DISPATCH_LEVEL 调用 ProtocolCoStatusEx

示例

若要定义 ProtocolCoStatusEx 函数,必须先提供一个函数声明,用于标识要定义的函数类型。 Windows 为驱动程序提供了一组函数类型。 使用函数类型声明函数可帮助 驱动程序的代码分析静态驱动程序验证程序 (SDV) 和其他验证工具查找错误,并且这是为 Windows 操作系统编写驱动程序的要求。

例如,若要定义名为“ MyCoStatusEx”的 ProtocolCoStatusEx 函数,请使用 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
标头 ndis.h (包括 Ndis.h)
IRQL <= DISPATCH_LEVEL (请参阅备注部分)

另请参阅

NDIS_STATUS_INDICATION

NdisCoCreateVc

NdisOpenAdapterEx

ProtocolCoCreateVc