Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Несоответствие типов wmi (disphelper), Несоответствие типов wmi 
:(
    Опции темы
Sahab
Дата 6.3.2012, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Пытаюсь с помощью disphelper через wmi получить мак-адрес сетевухи.
В мсдн  тип помечен как string.
Но при запросе вылетает ошибка о несоответствии типов
user posted image
Код

 dhGetValue(L"%o", &colMedia, wmiSvc, L".ExecQuery(%S)",  L"SELECT * FROM Win32_NetworkAdapter");
    FOR_EACH(wmiMediaItem, colMedia, NULL)
    {
            char *pszSerial = NULL;

            dhGetValue(L"%s", &pszSerial, wmiMediaItem, L".MacAddress");
            id.mac_address.assign(pszSerial);

            dhFreeString(pszSerial);
    } NEXT(wmiMediaItem);


другие данные-строки, например серийник харда, получаю нормально. В чем может быть проблема?

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  ids.zip 13,81 Kb
PM MAIL   Вверх
Dem_max
Дата 7.3.2012, 06:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 16
Всего: 39



попробуй так
Код

 dhGetValue(L"%o", &colMedia, wmiSvc, L".ExecQuery(%S)",  L"SELECT * FROM Win32_NetworkAdapter");
    FOR_EACH(wmiMediaItem, colMedia, NULL)
    {
            wchar_t *pszSerial = NULL; //изменено

            dhGetValue(L"%S", &pszSerial, wmiMediaItem, L".MacAddress"); // изменено
            id.mac_address.assign(pszSerial);

            dhFreeString(pszSerial);
    } NEXT(wmiMediaItem);



--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Sahab
Дата 7.3.2012, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Не помогло, но сделал так:
Код

    FOR_EACH(wmiMediaItem, colMedia, NULL)
    {
        char *product = NULL;
        HRESULT hr = dhGetValue(L"%s", &product, wmiMediaItem, L".ProductName");
        if(hr)
            std::cout << "Error" << std::endl;
        else
            std::cout << product << std::endl;

        dhFreeString(product);

        char *pszSerial = NULL;
        hr = dhGetValue(L"%s", &pszSerial, wmiMediaItem, L".MacAddress");
        //            id.mac_address.assign(pszSerial);

        if(pszSerial)
            std::cout << (long)hr << ", " << pszSerial << std::endl;
        else
            std::cout << (long)hr << ", bad" << std::endl;

        dhFreeString(pszSerial);
    } NEXT(wmiMediaItem);


и выводит 
Цитата

WAN Miniport (SSTP)
-2147352571, bad
WAN Miniport (IKEv2)
-2147352571, bad
WAN Miniport (L2TP)
-2147352571, bad
WAN Miniport (PPTP)
-2147352571, bad
WAN Miniport (PPPOE)
-2147352571, bad
WAN Miniport (IPv6)
-2147352571, bad
WAN Miniport (Network Monitor)
-2147352571, bad
Atheros L1 Gigabit Ethernet 10/100/1000Base-T Controller
0, 00:1D:60:EA:66:10
WAN Miniport (IP)
-2147352571, bad
Адаптер Microsoft ISATAP
-2147352571, bad
RAS Async Adapter
-2147352571, bad
Адаптер Microsoft ISATAP
-2147352571, bad
Туннельный адаптер Microsoft Teredo
-2147352571, bad
Адаптер Microsoft ISATAP
-2147352571, bad
Адаптер Microsoft ISATAP
-2147352571, bad
VirtualBox Bridged Networking Driver Miniport
0, 00:1D:60:EA:66:10
VirtualBox Host-Only Ethernet Adapter
0, 08:00:27:00:58:78
Адаптер Microsoft ISATAP
-2147352571, bad
Адаптер Microsoft 6to4
-2147352571, bad
Адаптер Microsoft ISATAP
-2147352571, bad



Пробую получить Win32_Processor.UniqueId, который тоже string - опять вываливается несоответствие типов.

Это сообщение отредактировал(а) Sahab - 7.3.2012, 14:54
PM MAIL   Вверх
Sahab
Дата 7.3.2012, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.9.2009

Репутация: нет
Всего: 3



Проверяю bool .PhysicalAdapter
В отладке сегфолт при переходе на второй элемент в цикле, в релизе - отрабатывают все нормально. 
Как можно с wmi работать еще можно, ато что-то этот disphelper меня утомляет. 
Или все-таки руки кривые у меня?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0411 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.