MINIPORT_SHUTDOWN回调函数 (ndis.h)
当系统关闭时,NDIS 调用微型端口驱动程序的 MiniportShutdownEx 函数。 此函数将微型端口置于“关闭”状态, (包括 MiniportHaltEx) ,不会发生任何其他回调。 有关微型端口驱动程序状态的详细信息,请参阅 微型端口适配器状态和操作。
语法
MINIPORT_SHUTDOWN MiniportShutdown;
void MiniportShutdown(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] NDIS_SHUTDOWN_ACTION ShutdownAction
)
{...}
参数
[in] MiniportAdapterContext
微型端口驱动程序在其 MiniportInitializeEx 函数中分配的上下文区域的句柄。 驱动程序使用此上下文区域来维护微型端口适配器的状态信息。
[in] ShutdownAction
NDIS 调用关闭函数的原因。 以下为有效值:
NdisShutdownPowerOff
指示 NDIS 名为 MiniportShutdownEx ,因为系统正在关闭。
NdisShutdownBugCheck
指示由于系统错误,NDIS 名为 MiniportShutdownEx 。
返回值
无
备注
驱动程序在调用 时指定 MiniportShutdownEx 入口点 NdisMRegisterMiniportDriver 函数。
MiniportShutdownEx 在 NDIS 为微型端口适配器调用微型端口驱动程序的 MiniportInitializeEx 函数之前, (状态将微型端口适配器还原到已知的初始状态) 。 这可确保微型端口适配器处于已知状态,并且可在计算机因任何原因(包括不可恢复的系统错误)发生系统关闭后重启计算机时重新初始化。
MiniportShutdownEx 可以读取或写入 I/O 端口、内存映射设备 I/O 空间或特定于总线的配置空间,方法是调用 NdisMGetBusData 或 NdisMSetBusData 函数来禁用 DMA 引擎、禁用中断或将硬件重置为已知状态,以便安全重启硬件。
如果 NDIS 由于不可恢复的错误而调用 MiniportShutdownEx,则 ShutdownAction 参数设置为 NdisShutdownBugCheck,MiniportShutdownEx 以高 IRQL 运行。 在这种情况下,微型端口驱动程序不得调用任何 NdisXxx 函数,但可在任何 IRQL 中调用的函数除外。
如果 NDIS 由于用户启动的关闭而调用 MiniportShutdownEx,MiniportShutdownEx 在 IRQL = PASSIVE_LEVEL 运行,微型端口驱动程序可以调用其他 NdisXxx 函数。
如果 NDIS 由于不可恢复的错误而调用 MiniportShutdownEx,则 ShutdownAction 参数设置为 NdisShutdownBugCheck,MiniportShutdownEx 以高 IRQL 运行。 在这种情况下,微型端口驱动程序不得调用任何 NdisXxx 函数,但可在任何 IRQL 中调用的函数除外。 从 NDIS 6.30 微型端口开始,NDIS 不会在 BugCheck 期间调用 MiniportShutdownEx ,除非微型端口在其适配器注册属性中提供 NDIS_MINIPORT_ATTRIBUTES_REGISTER_BUGCHECK_CALLBACK 标志。
如果 ShutdownAction 的值为 NdisShutdownPowerOff,微型端口驱动程序可以选择释放其资源。 但是,这既不是必需的也不鼓励,因为系统关闭使它变得没有必要。
如果 ShutdownAction 的值为 NdisShutdownBugCheck,则微型端口驱动程序不得释放其资源。
示例
若要定义 MiniportShutdownEx 函数,必须先提供用于标识要定义的函数类型的函数声明。 Windows 为驱动程序提供了一组函数类型。 使用函数类型声明函数可帮助 驱动程序的代码分析、 静态驱动程序验证程序 (SDV) 和其他验证工具查找错误,并且这是为 Windows 操作系统编写驱动程序的要求。例如,若要定义名为“ MyShutdownEx”的 MiniportShutdownEx 函数,请使用 MINIPORT_SHUTDOWN 类型,如以下代码示例所示:
MINIPORT_SHUTDOWN MyShutdownEx;
然后,按如下所示实现函数:
_Use_decl_annotations_
VOID
MyShutdownEx(
NDIS_HANDLE MiniportAdapterContext,
NDIS_SHUTDOWN_ACTION ShutdownAction
)
{...}
MINIPORT_SHUTDOWN函数类型在 Ndis.h 头文件中定义。 若要在运行代码分析工具时更准确地识别错误,请务必将 Use_decl_annotations 注释添加到函数定义。 Use_decl_annotations批注可确保使用应用于头文件中MINIPORT_SHUTDOWN函数类型的注释。 有关函数声明要求的详细信息,请参阅 使用 NDIS 驱动程序的函数角色类型声明函数。
有关 Use_decl_annotations的信息,请参阅 批注函数行为。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.0 及更高版本中受支持。 |
目标平台 | Windows |
标头 | ndis.h (包括 Ndis.h) |
IRQL | 请参阅“备注”部分 |