如何使用Win32 API获取给定端口名称的networking打印机的IP地址?

如何使用win32 API获取给定端口名称的networking打印机的IP地址?

我试着看着PRINTER_INFO_* structs ,但似乎它不存在。

我不认为有一个标准的方式来获得IP地址。 网络端口监视器可能有不同的不兼容的实现。 对于我的网络打印机,IP地址是端口名称的一部分(例如, IP_192_168.1.104 )。 如果是这种形式,那么你可能会解析出来,但我不认为这是普遍的。

使用EnumPorts你可以确定它是否是一个网络打印机,但我仍然没有看到获取IP地址的方法。

您可以通过PRINTER_INFO_2获取端口名称,并从注册表获取IP,路径为:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Print \ Monitors \ Standard TCP / IP Port \将ip存储在“HostName”

与其他IP网络设备一样,打印机将具有IP地址(表示其以太网卡),并将在某个端口上运行服务(识别响应打印机消息的程序)。 这只是网络的东西,并没有什么与打印机的具体事情。

所以只有端口,没有办法找到它的IP地址。 所有其他打印机上的服务可能会听相同的端口。

假设你的意思是你有打印机的名字,你需要查询你的域的名字服务。 此服务将网络地址映射为“符号”名称。

使用winsock2 API,我相信它是你需要的gethostbyname 。 这将通过名称检索打印机的主机信息。

简单地使用高级打印机API,动态调用