Bueno, puede que esto te sirva de ayuda:
Coloca un TMemo en el form
Código Delphi
[-]
uses SetupApi;
procedure TForm4.FormCreate(Sender: TObject);
var
DevInfo: HDEVINFO;
DevInfoData: SP_DEVINFO_DATA;
i: integer;
Data: Pointer;
Size: DWORD;
begin
DevInfo:= SetupDiGetClassDevs(nil,nil,0,DIGCF_ALLCLASSES or DIGCF_PROFILE);
if DevInfo <> HDEVINFO(INVALID_HANDLE_VALUE) then
begin
FillChar(DevInfoData,Sizeof(DevInfoData),0);
DevInfoData.cbSize:= Sizeof(DevInfoData);
for i:= 0 to MAXINT do
begin
if not SetupDiEnumDeviceInfo(DevInfo,i,DevInfoData) then
break;
SetupDiGetDeviceRegistryProperty(DevInfo,DevInfoData,SPDRP_DEVICEDESC,
nil,nil,0,@Size);
if GetLastError = ERROR_INSUFFICIENT_BUFFER then
begin
GetMem(Data,Size);
try
if SetupDiGetDeviceRegistryProperty(DevInfo,DevInfoData,
SPDRP_DEVICEDESC,nil,Data,Size,@Size) then
begin
Memo1.Lines.Add(String(PChar(Data)));
end;
finally
FreeMem(Data);
end;
end;
end;
SetupDiDestroyDeviceInfoList(DevInfo);
end;
end;
Espero que este código en Delphi te aclare algo las cosas