MINIPORT_ADD_DEVICE回调函数 (ndis.h)
MiniportAddDevice 函数允许微型端口驱动程序为添加的设备建立上下文区域。
语法
MINIPORT_ADD_DEVICE MiniportAddDevice;
NDIS_STATUS MiniportAddDevice(
[in] NDIS_HANDLE NdisMiniportHandle,
[in] NDIS_HANDLE MiniportDriverContext
)
{...}
参数
[in] NdisMiniportHandle
标识即插即用 (PnP) 管理器正在添加的微型端口适配器的 NDIS 句柄。 NDIS 还会将此句柄传递给 MiniportInitializeEx 函数。
[in] MiniportDriverContext
驱动程序分配的上下文区域的句柄,驱动程序在其中维护状态和配置信息。 微型端口驱动程序将此上下文区域传递给 NdisMRegisterMiniportDriver 函数。
返回值
MiniportAddDevice 返回以下值之一:
返回代码 | 说明 |
---|---|
|
微型端口驱动程序已成功分配添加设备所需的资源。 |
|
微型端口驱动程序未能分配所需的资源。 |
|
MiniportAddDevice 因资源不足以外的原因失败。 |
如果 MiniportAddDevice 失败,NDIS 将不会调用 MiniportInitializeEx 函数来初始化微型端口适配器。
注解
MiniportAddDevice 函数是一个可选函数。 支持 MSI-X 的微型端口驱动程序应在 中为此函数指定入口点 NDIS_MINIPORT_PNP_CHARACTERISTICS 结构。
MiniportAddDevice 可以分配用于处理的上下文区域 IRP_MN_FILTER_RESOURCE_REQUIREMENTS I/O 请求数据包 (IRP) MiniportFilterResourceRequirements 函数句柄。 微型端口驱动程序通过初始化 来指定上下文区域 NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES 结构,然后调用 NdisMSetMiniportAttributes 函数。 NDIS 稍后向 MiniportRemoveDevice 提供此上下文句柄, MiniportFilterResourceRequirements、 MiniportStartDevice 和 MiniportInitializeEx 函数。 对于 MiniportInitializeEx,上下文句柄在 的 MiniportAddDeviceContext 成员中传递 NDIS_MINIPORT_INIT_PARAMETERSMiniportInitParameters 参数指向的结构。
如果微型端口驱动程序在分配上下文区域后 MiniportAddDevice 调用失败,驱动程序必须在从 MiniportAddDevice 返回之前释放上下文区域。
微型端口驱动程序应对 NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES 结构的 MiniportAddDeviceContext 成员和 NDIS_MINIPORT_INIT_PARAMETERS 结构的 MiniportAdapterContext 成员使用不同的上下文区域。 单独的上下文区域将确保上下文区域中的信息不会重新初始化,如果微型端口适配器已停止并重新初始化,这可能会在 MiniportInitializeEx 函数中出现。
当 PnP 管理器请求 NDIS 删除设备时,NDIS 会调用 MiniportRemoveDevice 函数来撤消 MiniportAddDevice 执行的操作。
NDIS 在 IRQL = PASSIVE_LEVEL 调用 MiniportAddDevice 。
示例
若要定义 MiniportAddDevice 函数,必须先提供一个函数声明,用于标识要定义的函数类型。 Windows 为驱动程序提供一组函数类型。 使用函数类型声明函数可帮助 驱动程序的代码分析、 静态驱动程序验证程序 (SDV) 和其他验证工具查找错误,并且这是编写 Windows 操作系统驱动程序的要求。例如,若要定义名为“ MyAddDevice ”的 MiniportAddDevice 函数,请使用 MINIPORT_ADD_DEVICE 类型,如以下代码示例所示:
MINIPORT_ADD_DEVICE MyAddDevice;
然后,按如下所示实现函数:
_Use_decl_annotations_
NDIS_STATUS
MyAddDevice(
NDIS_HANDLE NdisMiniportHandle,
NDIS_HANDLE MiniportDriverContext
)
{...}
MINIPORT_ADD_DEVICE函数类型在 Ndis.h 头文件中定义。 若要在运行代码分析工具时更准确地识别错误,请务必将 Use_decl_annotations 注释添加到函数定义。 Use_decl_annotations注释可确保使用应用于头文件中MINIPORT_ADD_DEVICE函数类型的注释。 有关函数声明要求的详细信息,请参阅 使用 NDIS 驱动程序的函数角色类型声明函数。
有关 Use_decl_annotations的信息,请参阅 批注函数行为。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.0 及更高版本中受支持。 |
目标平台 | Windows |
标头 | ndis.h (包括 Ndis.h) |
IRQL | PASSIVE_LEVEL |