-
Tailor_McMaffin (06.10.09 13:14) [0]Приветствую мастера! Помогите найти ответ :)
Глобальная задача: необходимо получить список сетевых устройств и работать с ними.
С помощью SetupAPI.SetupDiGetClassDevs я получаю список устройств по GUID класса ({4D36E972-E325-11CE-BFC1-08002BE10318}). Далее вынимаю информацию по каждому устройству при помощи SetupAPI.SetupDiEnumDeviceInfo и SetupAPI.SetupDiGetDeviceRegistryProperty.
Однако нюанс, как получить GUID полученного конкретного устройства? -
Tailor_McMaffin (06.10.09 13:20) [1]Грубо говоря тот GUID который расположен:
\\HKLM\SYSTEM\CurrentControlSet\Services\{...}. -
Tailor_McMaffin (06.10.09 13:30) [2]Вернее даже в
\\HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{...}. -
Tailor_McMaffin (06.10.09 14:11) [3]Отвечаю сам:
получаем при помощи 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 устройства.
Вопрос решен, всем спасибо, все свободны!