Устройства на удаленной машине SetupDiGetClassDevsEx
От: klodware http://www.klodware.nm.ru
Дата: 23.03.05 08:46
Оценка:
Требуется определить состав установленного железа на удаленной машине. Есть функция SetupDiGetClassDevsEx, вроде как, позволяющая это делать, но в реальности эта "собака" перечисляет только локальные ресурсы. Использую ее не в чистом виде, а сначала устанавливаю с удаленной машиной соединение по IPC (это, как бы, стандартные действия при такого рода делах). Может кто знает в чем тут хитрость может быть.
Re: Устройства на удаленной машине SetupDiGetClassDevsEx
От: klodware http://www.klodware.nm.ru
Дата: 25.03.05 06:46
Оценка:
Хоть какие-то мысли на этот счет есть?
Re: Устройства на удаленной машине SetupDiGetClassDevsEx
От: Tutankhamen Южная Корея www.pocketheroes.net
Дата: 29.03.05 02:17
Оценка:
Здравствуйте, klodware, Вы писали:

K>Требуется определить состав установленного железа на удаленной машине. Есть функция SetupDiGetClassDevsEx, вроде как, позволяющая это делать, но в реальности эта "собака" перечисляет только локальные ресурсы. Использую ее не в чистом виде, а сначала устанавливаю с удаленной машиной соединение по IPC (это, как бы, стандартные действия при такого рода делах). Может кто знает в чем тут хитрость может быть.


Хотелось бы поподробнее, какие входные параметры, какой код ошибки и т.д.
With Best Regards, Robert Y. Tarasow
RealTimeTech Inc, Multimedia Team
Re[2]: Устройства на удаленной машине SetupDiGetClassDevsEx
От: klodware http://www.klodware.nm.ru
Дата: 29.03.05 05:18
Оценка:
Здравствуйте, Tutankhamen, Вы писали:

T>Хотелось бы поподробнее, какие входные параметры, какой код ошибки и т.д.


Вот код:

LPWSTR mashine, passwd;

USE_INFO_1 info;
info.ui1_asg_type = USE_IPC;
info.ui1_local = NULL;
info.ui1_password = passwd;
info.ui1_remote = mashine;
info.ui1_usecount = 1;

//Устанавливаем IPC соединение (нигде не написано, что это нужно, но я делаю по аналогии с получением списка сервисов)
NetUseAdd(NULL,1, (LPBYTE)&info, NULL);
//Соединение устанавливается успешно

HDEVINFO infoSet, devInfo;
//Подготовка буфера
devInfo = SetupDiCreateDeviceInfoList(NULL, NULL);
//порядок

//Получаем список устройств
infoSet = SetupDiGetClassDevsExW(NULL,NULL,NULL,DIGCF_ALLCLASSES|DIGCF_PRESENT,devInfo,mashine,NULL);
//Список получен успешно. Далее перечисляем устройства и выводим информацию о них.

SetupDiGetClassDevsEx отрабатывает нормально и выдает список устройств, но при этом выходной результат для любой удаленной машины (даже несуществующей) всегда один и тот же. Отсюда я делаю вывод, что функция возвращает список локальных устройств.
Re[3]: Устройства на удаленной машине SetupDiGetClassDevsEx
От: Геннадий Майко США  
Дата: 29.03.05 09:36
Оценка: 4 (1)
Здравствуйте, klodware, Вы писали:

K>LPWSTR mashine, passwd;


K>USE_INFO_1 info;

K>info.ui1_asg_type = USE_IPC;
K>info.ui1_local = NULL;
K>info.ui1_password = passwd;
K>info.ui1_remote = mashine;
K>info.ui1_usecount = 1;

K>//Устанавливаем IPC соединение (нигде не написано, что это нужно, но я делаю по аналогии с получением списка сервисов)

K>NetUseAdd(NULL,1, (LPBYTE)&info, NULL);
K>//Соединение устанавливается успешно

K>HDEVINFO infoSet, devInfo;

K>//Подготовка буфера
K>devInfo = SetupDiCreateDeviceInfoList(NULL, NULL);
--
Попробуйте здесь использовать функцию SetupDiCreateDeviceInfoListEx.

C уважением,
Геннадий Майко.
Re[4]: Устройства на удаленной машине SetupDiGetClassDevsEx
От: klodware http://www.klodware.nm.ru
Дата: 29.03.05 10:15
Оценка:
Здравствуйте, Геннадий Майко, Вы писали:

ГМ>Попробуйте здесь использовать функцию SetupDiCreateDeviceInfoListEx.


Попробовал. Все получилось. Огромное спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.