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 返回以下状态值之一:
返回代码 | 说明 |
---|---|
|
操作已成功完成。 |
|
由于资源不足,操作失败。 |
|
NdisIfRegisterInterface 失败,因为某些输入参数无效。 |
|
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) |