Конференция "Сети" » SetupAPI -> GUID устройства [D6, D7, Win2k, WinXP]
 
  • 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 устройства.

    Вопрос решен, всем спасибо, все свободны!
 
Конференция "Сети" » SetupAPI -> GUID устройства [D6, D7, Win2k, WinXP]
Есть новые Нет новых   [134437   +29][b:0][p:0.001]