NdisReadNetworkAddress 函数 (ndis.h)

NdisReadNetworkAddress 函数返回在计算机中安装 NIC 时存储在注册表中的软件可配置网络地址。

语法

void NdisReadNetworkAddress(
  [out] PNDIS_STATUS Status,
  [out] PVOID        *NetworkAddress,
  [out] PUINT        NetworkAddressLength,
  [in]  NDIS_HANDLE  ConfigurationHandle
);

参数

[out] Status

指向调用方提供的变量的指针,在此变量中,此函数以下列之一的形式返回调用状态:

NDIS_STATUS_SUCCESS

调用方可以使用 NIC 在 NetworkAddress 中返回的地址。

NDIS_STATUS_FAILURE

调用者的注册表 参数 键中没有可用的 NIC 地址信息,或者存储的值不是字符串。

[out] NetworkAddress

指向调用方提供的变量的指针,在此变量中,此函数返回指向缓冲区的指针,该缓冲区包含网络地址 (通常是 MAC 地址) ,如果调用成功,则存储为字节整数序列。

[out] NetworkAddressLength

指向调用方提供的变量的指针,在此变量中,此函数返回 NetworkAddress 处返回的字节数。

[in] ConfigurationHandle

返回的配置句柄 NdisOpenConfigurationEx 函数。

返回值

备注

NdisReadNetworkAddress 搜索给定 ConfigurationHandle 为关键字 (keyword) NetworkAddress指定的注册表项,将此字符串类型条目的值转换为字节整数序列,并在内部存储请求的信息。 在微型端口驱动程序调用释放内存的 NdisCloseConfiguration 函数之前,NDIS 为此类地址分配的存储保持有效。

调用方不能将 NetworkAddress 中的 变量用作指针,除非 NdisReadNetworkAddress 返回 状态NDIS_STATUS_SUCCESS。

支持软件可配置网络寻址的 NIC 的安装程序应将名为 NetworkAddress 关键字 (keyword) 的值条目存储在 HKLM\System\CurrentControlSet\Control\Class{4d36e972...} 中注册表的 \00xx 键。

NIC 安装程序通常将 NetworkAddress 条目的值存储为注册表中的十六进制数字字符串。 (可选)安装程序可以将此类地址存储为配对数字字符串,每对与下一对之间用连字符分隔。 NdisReadNetworkAddress 会丢弃连字符,并将每个此类对转换为单个字节。

在任一形式中, NdisReadNetworkAddress 会将指定为字符串的地址(一次一个字符)转换为等效的整数,直到字符串用完。

在 Windows 2000 及更高版本的注册表中,此类已安装的地址字符串包含 Unicode 字符。

请注意,NDIS 不会验证 NetworkAddress 中的值。 NDIS 不保证此值是有效的地址、该值具有适当的长度,甚至不保证该值是网络地址。 因此 ,NdisReadNetworkAddress 的调用方不得对此值进行任何假设,并且必须自行验证该值。 如果调用方确定值超出边界,则不应使用 值;相反,它应使用永久的中等访问控制 (MAC) 地址或默认地址。

要求

要求
最低受支持的客户端 支持 Windows Vista 及更高版本中的 NDIS 6.0 及更高版本的驱动程序。 NDIS 5.1 驱动程序支持 (请参阅 Windows XP 中的 NdisReadNetworkAddress (NDIS 5.1) ) 。
目标平台 通用
标头 ndis.h (包括 Ndis.h)
Library Ndis.lib
IRQL PASSIVE_LEVEL
DDI 符合性规则 Irql_Miscellaneous_Function (ndis)

另请参阅

NdisCloseConfiguration

NdisOpenConfigurationEx