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

一个 NDIS 句柄,用于标识即插即用(PnP)管理器正在添加的微型端口适配器。 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 及更高版本中受支持。
目标平台 窗户
标头 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