AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

USB Devices suchen, editieren

Ein Thema von WS1976 · begonnen am 25. Sep 2008 · letzter Beitrag vom 25. Sep 2008
Antwort Antwort
WS1976
(Gast)

n/a Beiträge
 
#1

USB Devices suchen, editieren

  Alt 25. Sep 2008, 06:42
Hallo,

Problem:
wir suchen seit einiger Zeit eine Möglichkeit festzustellen mit wem eine serielle Schnittstelle verbunden ist.
Da uns diese nicht gelungen ist habe ich jetzt einen anderen Ansatz gefunden.

Frage:
Gibt es irgendeine Möglichkeit alle vorhandenen USB Devices anzuzeigen bzw. zu ändern oder zu löschen?
Mir kommt es hautsächlich auf die Devices an, die momentan nicht angeschlossen sind.

Beispiel:
Wir schliessen einen USB seriell Konverter an den PC an. Com9 ist im Gerätemanager zu sehen.
Entfernen wir das Gerät verschwindet die Schnittstelle aus dem Gerätemanger sie ist aber nach wie vor besetzt.
Suchen in der Registry bringt nichts. ( Alle Com9 Einträge wurden bei einer WinXP Schrottinstallation gelöscht. Com9 immer noch da).

Wir möchten das Problem mit D7 oder RAD Studio lösen.

Vielen Dank im Vorraus!
Rainer
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#2

Re: USB Devices suchen, editieren

  Alt 25. Sep 2008, 08:05
Hallo,

Hatte einen ähnlichen Anwendungsfall. Es gibt von JEDI eine USBView Demo. Das ist sehr aufschlussreich.

Ich habe es dann so gemacht:

Delphi-Quellcode:
function GetNumberOfConnectedBFs(): Byte;
const
  ConnectorGUID = '{AB03120F-995C-4A47-9BB6-9549EC8945D2}';
var
  GUID : PGUID;
  Buffer : array[0..1023] of TCHAR;
  Descriptionstr : string;
  PnPHandle : HDEVINFO;
  DevData : TSPDevInfoData;
  DeviceInterfaceData : TSPDeviceInterfaceData;
  Success : LongBool;
  BufSize : DWORD;
  DevNumber : Integer;


begin
  Result := 0;

  LoadSetupApi;
  LoadConfigManagerApi;
  GetMem(GUID, SizeOf(TGUID));
  GUID^ := StringToGUID(ConnectorGUID);
  SetupDiGetClassDescription(GUID^, @Buffer[0], Length(Buffer), BufSize);
  Descriptionstr := PTSTR(@Buffer[0]);

  PnPHandle := SetupDiGetClassDevs(GUID, nil, 0, DIGCF_PRESENT);
  if PnPHandle = Pointer(INVALID_HANDLE_VALUE) then
  begin
    FreeMem(GUID);
    Exit;
  end;

  DevNumber := 0;

  repeat
    DeviceInterfaceData.cbSize := SizeOf(TSPDeviceInterfaceData);
    DevData.cbSize := SizeOf(DevData);
    Success := SetupDiEnumDeviceInfo(PnPHandle, DevNumber, DevData);
    if Success then
      begin
        Inc(DevNumber);
      end;
  until not Success;

  SetupDiDestroyDeviceInfoList(PnPHandle);

  UnloadConfigManagerApi;
  UnloadSetupApi;

  Result := DevNumber;
end;
Funktioniert eigentlich recht gut.
Müsstest eigentlich nur die entsprechende ConnectorGUID einfügen...
  Mit Zitat antworten Zitat
WS1976
(Gast)

n/a Beiträge
 
#3

Re: USB Devices suchen, editieren

  Alt 25. Sep 2008, 14:04
Hallo,

vielen Dank für die Antwort. Leider nützt mir das überhaupt nichts weil ich das Gerät nicht kenne.
Ich muss alle Devices suchen, auflisten und sie eventuell auch "killen" können.

Grüsse
Rainer
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf