MINIPORT_SYNCHRONIZE_INTERRUPT回调函数 (ndis.h)
如果以低于 DIRQL 的速度运行的任何驱动程序函数与 MiniportInterrupt 函数共享资源,微型端口驱动程序必须提供 MiniportSynchronizeInterrupt 处理程序。
对于消息信号中断,如果以低于 DIRQL 运行的任何驱动程序函数与 MiniportMessageInterrupt 函数共享消息信号中断的资源,微型端口驱动程序会提供 MiniportSynchronizeMessageInterrupt 处理程序。
语法
MINIPORT_SYNCHRONIZE_INTERRUPT MiniportSynchronizeInterrupt;
BOOLEAN MiniportSynchronizeInterrupt(
[in] NDIS_HANDLE SynchronizeContext
)
{...}
参数
[in] SynchronizeContext
当微型端口驱动程序的 MiniportXxx 或内部函数调用 时提供的上下文区域的句柄 NdisMSynchronizeWithInterruptEx 函数。
返回值
MiniportSynchronizeInterrupt 返回具有驱动程序确定含义的布尔值。 当 NDIS 从 NdisMSynchronizeWithInterruptEx 返回时,NDIS 返回相同的值。
注解
若要使用 MiniportInterrupt 同步对共享资源的访问,低优先级驱动程序函数必须调用 NdisMSynchronizeWithInterruptEx 函数。 驱动程序的 MiniportSynchronizeInterrupt 函数访问 DIRQL 上的共享资源。 调用 NdisMSynchronizeWithInterruptEx 可防止此类微型端口驱动程序中的争用条件和死锁。
任何在它们之间共享资源的较低优先级驱动程序函数 (但不与在 DIRQL) 上运行的任何函数共享资源,都应使用旋转锁来保护这些共享资源。
MiniportSynchronizeInterrupt 在驱动程序的 MiniportInitializeEx 函数调用 时分配的 DIRQL 上运行 NdisMRegisterInterruptEx 函数。 与在 DIRQL 中运行的任何驱动程序函数一样, MiniportSynchronizeInterrupt 应尽快将控制权返回给调用方,并且它只能调用可在任何 IRQL 中安全调用的 NdisXxx 函数。
示例
若要定义 MiniportSynchronizeInterrupt 函数,必须先提供一个函数声明来标识要定义的函数类型。 Windows 为驱动程序提供了一组函数类型。 使用函数类型声明函数可帮助 驱动程序的代码分析、 静态驱动程序验证程序 (SDV) 和其他验证工具查找错误,并且这是为 Windows 操作系统编写驱动程序的要求。例如,若要定义名为“ MySynchronizeInterrupt”的 MiniportSynchronizeInterrupt 函数,请使用 MINIPORT_SYNCHRONIZE_INTERRUPT 类型,如以下代码示例所示:
MINIPORT_SYNCHRONIZE_INTERRUPT MySynchronizeInterrupt;
然后,按如下所示实现函数:
_Use_decl_annotations_
BOOLEAN
MySynchronizeInterrupt(
NDIS_HANDLE SynchronizeContext
)
{...}
若要为消息信号中断定义 MiniportSynchronizeMessageInterrupt 函数,请使用 MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT 类型,如以下代码示例所示:
MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT MySynchronizeMessageInterrupt;
然后,按如下所示实现函数:
_Use_decl_annotations_
BOOLEAN
MySynchronizeMessageInterrupt(
NDIS_HANDLE SynchronizeContext
)
{...}
MINIPORT_SYNCHRONIZE_INTERRUPT和MINIPORT_SYNCHRONIZE_MESSAGE_INTERRUPT函数类型在 Ndis.h 头文件中定义。 若要在运行代码分析工具时更准确地识别错误,请务必将 Use_decl_annotations 注释添加到函数定义。 Use_decl_annotations批注可确保使用应用于头文件中函数类型的注释。 有关函数声明要求的详细信息,请参阅 使用 NDIS 驱动程序的函数角色类型声明函数。
有关 Use_decl_annotations的信息,请参阅 批注函数行为。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.0 及更高版本中受支持。 |
目标平台 | Windows |
标头 | ndis.h (包括 Ndis.h) |
IRQL | 请参阅“备注”部分 |