Получить IP-адрес драйвера принтера по умолчанию в UWP

У нас есть требование настроить IP-адрес принтера в драйвере принтера по умолчанию на панели управления в нашем приложении UWP.

Мне удалось получить "System.DeviceInterface.PrinterPortName", выбрав GUID класса интерфейса и передав это свойство для извлечения.

Но я не мог получить "System.Devices.IpAddress" аналогичным образом. Код вставлен ниже для PortName.

Мне очень нужен IP-адрес, так как имя порта выбирается пользователем и может быть изменено на любое имя, удаляющее IP-адрес.

Пожалуйста, помогите поделиться рабочим кодом для получения IP-адреса, используя указанное выше свойство или любым другим способом в приложении UWP.

Ниже приведен рабочий код для имени порта. Пожалуйста, помогите получить IP-адрес того же порта аналогичным образом.

        string aqsFilter = "System.Devices.InterfaceClassGuid:=\"{0ecef634-6ef0-472a-8085-5ad023ecbccd}\"";

        string[] propertiesToRetrieve = new string[] { "System.DeviceInterface.PrinterPortName"};

        DeviceInformationCollection deviceInfoCollection = await DeviceInformation.FindAllAsync(aqsFilter, propertiesToRetrieve);

        foreach (DeviceInformation deviceInfo in deviceInfoCollection)
        {
            if (deviceInfo.IsDefault == true)
            {
                string strPortName = (string)deviceInfo.Properties["System.DeviceInterface.PrinterPortName"];

                if (!string.IsNullOrEmpty(strPortName))
                {
                    strPortName = await ParsePortName(strPortName);
                    if (!string.IsNullOrEmpty(strPortName))
                    {
                        _strIPAddress = strPortName;
                    }
                }
                break;
            }
        }

1 ответ

Это не подтверждается, потому что IP-адрес может измениться, и поэтому он ненадежен.

При этом, если ваш принтер установлен с использованием wsd, он технически поддерживается, например, DEVPKEY_PNPX_IpAddress DEVPROP_TYPE_STRING_LIST 32 "10.137.192.202"Но нет надежного способа использовать это без множества различных проверок сценария, поскольку IP-адрес может измениться.

Кроме того, глядя на этот пример, вы обращаетесь не к провайдерам DAF, а к поиску устройств. Вы используете 0ecef634-6ef0-472a-8085-5ad023ecbccd, который является руководством класса принтера. Также не похоже, что IP-адрес распространяется в пакете свойств PnP Explorer, поэтому IP-адрес недоступен.

Другие вопросы по тегам