NdisMRegisterMiniportDriver 函数 (ndis.h)
微型端口驱动程序调用 NdisMRegisterMiniportDriver 函数,以将 MiniportXxx 入口点注册到 NDIS,作为初始化的第一步。
语法
NDIS_STATUS NdisMRegisterMiniportDriver(
[in] PDRIVER_OBJECT DriverObject,
[in] PUNICODE_STRING RegistryPath,
[in, optional] NDIS_HANDLE MiniportDriverContext,
[in] PNDIS_MINIPORT_DRIVER_CHARACTERISTICS MiniportDriverCharacteristics,
[out] PNDIS_HANDLE NdisMiniportDriverHandle
);
参数
[in] DriverObject
指向微型端口驱动程序在其 DriverEntry 例程中通过 Argument1 参数接收的不透明驱动程序对象的指针 (请参阅 NDIS 微型端口驱动程序的 DriverEntry) 。
[in] RegistryPath
指向微型端口驱动程序在其 DriverEntry 例程中的 Argument2 参数处接收的不透明注册表路径的指针。
[in, optional] MiniportDriverContext
驱动程序分配的上下文区域的句柄,驱动程序在其中维护状态和配置信息。
[in] MiniportDriverCharacteristics
指向 的指针 NDIS_MINIPORT_DRIVER_CHARACTERISTICS 调用方初始化的结构。
[out] NdisMiniportDriverHandle
指向调用方提供的句柄变量的指针。 NDIS 将唯一标识此驱动程序的句柄写入此变量。 驱动程序必须保存此句柄,以便在后续 的 NdisXxx 函数调用中使用。
返回值
NdisMRegisterMiniportDriver 返回以下状态值之一:
返回代码 | 说明 |
---|---|
|
NdisMRegisterMiniportDriver 已成功注册微型端口驱动程序。 |
|
对于在 MiniportDriverCharacteristics 结构中的 MajorNdisVersion 成员中指定的 NDIS 版本,CharacteristicsLength 参数不正确。 |
|
在特征结构中指定的 MajorNdisVersion 或 MinorNdisVersion 无效。 |
|
资源(可能内存)不足,导致 NDIS 无法注册调用方。 |
|
这是默认错误状态,在上述任何错误都未导致注册失败时返回。 |
注解
NDIS 驱动程序从其 DriverEntry 例程调用 NdisMRegisterMiniportDriver。 有关详细信息,请参阅 NDIS 微型端口驱动程序的 DriverEntry。
每个微型端口驱动程序通过设置特征结构和调用 NdisMRegisterMiniportDriver 来导出一组标准的 MiniportXxx 函数。 NDIS 将特征结构复制到 NDIS 内部存储。 因此,在注册后,驱动程序无法更改其 MiniportXxx 入口点。
若要注册其虚拟微型端口接口,NDIS 中间驱动程序必须使用 MiniportDriverCharacteristics 的结构中设置的 NDIS_INTERMEDIATE_DRIVER 标志调用 NdisMRegisterMiniportDriver。 具有 WDM 下边缘的 NDIS 驱动程序必须调用 NdisMRegisterMiniportDriver ,并在 MiniportDriverCharacteristics 的结构中设置NDIS_WDM_DRIVER标志。
驱动程序可以注册为组合的微型端口驱动程序和中间驱动程序。 为了注册其物理微型端口驱动程序,微型端口中间驱动程序使用适当的参数调用 NdisMRegisterMiniportDriver ,就像对任何微型端口驱动程序一样。 为了注册其虚拟微型端口接口,驱动程序再次调用 NdisMRegisterMiniportDriver ,但在 MiniportDriverCharacteristics 参数中设置了NDIS_INTERMEDIATE_DRIVER标志。
为了使微型端口驱动程序能够注册可选服务,NDIS 在 NdisMRegisterMiniportDriver 的上下文中调用 MiniportSetOptions 函数。
在驱动程序调用 NdisMRegisterMiniportDriver 后,驱动程序应准备好在 DriverEntry 返回后随时在 MiniportDriverCharacteristics 参数中指定的 MiniportInitializeEx 函数中回调该驱动程序。
如果在 NdisMRegisterMiniportDriver 成功返回后 DriverEntry 中发生错误,驱动程序必须调用DriverEntry 返回之前的 NdisMDeregisterMiniportDriver 函数。 如果 DriverEntry 成功,驱动程序必须从其 MiniportDriverUnload 函数调用 NdisMDeregisterMiniportDriver。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 NDIS 6.0 及更高版本中受支持。 |
目标平台 | 通用 |
标头 | ndis.h (包括 Ndis.h) |
Library | Ndis.lib |
IRQL | PASSIVE_LEVEL |
DDI 符合性规则 | Irql_Miniport_Driver_Function (ndis) |