![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SetupAPI -> GUID устройства [D6, D7, Win2k, WinXP]
Tailor_McMaffin © (2009-10-06 13:14:00)Приветствую мастера! Помогите найти ответ :)
Глобальная задача: необходимо получить список сетевых устройств и работать с ними.
С помощью SetupAPI.SetupDiGetClassDevs я получаю список устройств по GUID класса ({4D36E972-E325-11CE-BFC1-08002BE10318}). Далее вынимаю информацию по каждому устройству при помощи SetupAPI.SetupDiEnumDeviceInfo и SetupAPI.SetupDiGetDeviceRegistryProperty.
Однако нюанс, как получить GUID полученного конкретного устройства?
Tailor_McMaffin (2009-10-06 14:11:00) [1]Отвечаю сам:
получаем при помощи SetupAPI.SetupDiGetDeviceRegistryProperty параметр SPDRP_DRIVER:
...
const
SPDRP_DRIVER = $00000009; // Driver (R/W)
...
Далее, создаем функцию:
function ConstructCfgLinkage( IOName: String ): String;
var
SubKey: String;
Reg: TRegistry;
begin
SubKey:= 'SYSTEM\\CurrentControlSet\\Control\\Class\\';
SubKey:= SubKey + IOName + '\\';
Reg:= TRegistry.Create( KEY_READ );
try
Reg.RootKey:= HKEY_LOCAL_MACHINE;
if Reg.OpenKey( SubKey, false ) then
begin
Result:= Reg.ReadString('NetCfgInstanceId');
end;
finally
Reg.CloseKey;
Reg.Free;
end;
end;
где IOName это параметр SPDRP_DRIVER устройства.
Вопрос решен, всем спасибо, все свободны!
Tailor_McMaffin (2009-10-06 13:30:00) [2]Вернее даже в
\\HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{...}.
Tailor_McMaffin (2009-10-06 13:20:00) [3]Грубо говоря тот GUID который расположен:
\\HKLM\SYSTEM\CurrentControlSet\Services\{...}.