MINIPORT_ADD_DEVICE回调函数 (ndis.h)

MiniportAddDevice 函数允许微型端口驱动程序为添加的设备建立上下文区域。

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

语法

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 返回以下值之一:

返回代码 说明
NDIS_STATUS_SUCCESS
微型端口驱动程序已成功分配添加设备所需的资源。
NDIS_STATUS_RESOURCES
微型端口驱动程序未能分配所需的资源。
NDIS_STATUS_FAILURE

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 提供此上下文句柄, MiniportFilterResourceRequirementsMiniportStartDeviceMiniportInitializeEx 函数。 对于 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

另请参阅

IRP_MN_FILTER_RESOURCE_REQUIREMENTS MiniportFilterResourceRequirements

MiniportInitializeEx

MiniportRemoveDevice

MiniportStartDevice

NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES

NDIS_MINIPORT_INIT_PARAMETERS

NDIS_MINIPORT_PNP_CHARACTERISTICS

NdisMRegisterMiniportDriver

NdisMSetMiniportAttributes