NdisIfRegisterInterface 函数 (ndis.h)

NdisIfRegisterInterface 函数注册 NDIS 网络接口。

语法

NDIS_STATUS NdisIfRegisterInterface(
  [in] NDIS_HANDLE         NdisProviderHandle,
  [in] NET_LUID            NetLuid,
  [in] NDIS_HANDLE         ProviderIfContext,
  [in] PNET_IF_INFORMATION pIfInfo,
       PNET_IFINDEX        pfIndex
);

参数

[in] NdisProviderHandle

标识正在注册接口的网络接口提供程序的句柄。 调用方从之前对 的调用中获取了此句柄 NdisIfRegisterProvider 函数。

[in] NetLuid

调用方提供的 NET_LUID 与 接口关联的值。 接口提供程序使用 NDIS_MAKE_NET_LUID 宏创建此NET_LUID值。 计算机重启后,接口提供程序应从永久性存储中恢复NET_LUID值,并在每次注册特定接口时提供相同的NET_LUID值。

[in] ProviderIfContext

与 接口关联的调用方分配的上下文区域的句柄。 NDIS 将此句柄传递给调用方向 NdisIfRegisterProvider 注册的回调函数。

[in] pIfInfo

指向调用方分配 的NET_IF_INFORMATION 结构的指针,该结构提供有关接口的信息。 此结构包含的信息在接口存在时保持不变。

pfIndex

指向调用方提供的接口索引变量的指针。 如果 NDIS 成功注册接口,则 NDIS 会为该接口分配接口索引,并在 pIfIndex 处设置值。 接口索引是在本地计算机上唯一的 24 位值。 每次提供程序使用同一个NET_LUID值 注册接口时,NDIS 可能不会返回相同的接口索引。 保留接口索引值 0,NDIS 不会将其分配给任何接口。 不要将接口索引与NET_LUID索引混淆。

返回值

NdisIfRegisterInterface 返回以下状态值之一:

返回代码 说明
NDIS_STATUS_SUCCESS
操作已成功完成。
NDIS_STATUS_RESOURCES
由于资源不足,操作失败。
NDIS_STATUS_INVALID_PARAMETER
NdisIfRegisterInterface 失败,因为某些输入参数无效。
NDIS_STATUS_DUPLICATE_OBJECTID
NdisIfRegisterInterface 失败,因为已经有一个接口注册了与 NetLuid 参数指定的相同NET_LUID值。

注解

NDIS 接口提供程序调用 NdisIfRegisterInterface 函数来注册网络接口。 调用此函数并不表示接口处于活动状态。

每当计算机重启时,NDIS 就会从已注册网络接口的空列表开始。 每当接口启动 (或检测到接口) 和接口的 时,接口提供程序都调用 NdisIfRegisterInterface 函数
NET_LUID 是已知的。

检测或启动接口的方法依赖于应用程序。 例如,如果 LBFO MUX 中间驱动程序是接口提供程序,则在 NDIS 为第一个基础微型端口适配器调用驱动程序的 ProtocolBindAdapterEx 函数时,该驱动程序可能会注册内部接口。

接口提供程序可以将有关接口的信息放入持久性存储中,并还原特定应用程序所需的接口。 例如,提供程序可以使用 NET_LUID 存储有关接口的其他信息,并且可以在计算机重启后重新注册接口。

如果 NdisIfRegisterInterface 成功,NDIS 会将接口添加到已知接口列表中,并为此接口分配新的接口索引。 接口提供程序应尽可能注册已启用和禁用的接口。 必须注册所有已启用的接口。

每次提供程序注册具有相同NET_LUID值的接口时,NDIS 可能不会返回相同的接口索引。 例如,在计算机重启后重新注册接口或取消注册并重新注册接口时,NDIS 不一定分配相同的接口索引。 保留接口索引值 0,NDIS 不会将其分配给任何接口。

为了指示应从计算机上的已知接口列表中删除接口,接口提供程序调用 例如,NdisIfDeregisterInterface 函数,因为接口已被卸载。 .

要求

要求
最低受支持的客户端 在 NDIS 6.0 及更高版本中受支持。
目标平台 桌面
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL PASSIVE_LEVEL
DDI 符合性规则 Irql_Interfaces_Function (ndis)

另请参阅

NDIS_MAKE_NET_LUID

NET_IF_INFORMATION

NET_LUID

NdisIfDeregisterInterface

NdisIfRegisterProvider

ProtocolBindAdapterEx