Einzelnen Beitrag anzeigen

Nuclear-Ping
(Gast)

n/a Beiträge
 
#1

[JEDI] TUSBDeviceTree: USB System absturz?

  Alt 22. Dez 2007, 14:19
Hoi,

ich spiele grad mit der TUSBDeviceTree-Komponente aus der SetupAPI von JEDI rum, um in unserer Anwendung eine elegantere Methode zur Erkennung unserer Hardware einzubauen.

Nun ist es mir bei der Demo der Kompo und auch in der eigenen Anwendung gestern 2-3x reproduzierbar passiert, dass das USB-System von meinem Vista Lappi garnicht mehr wollte. Soll heissen: Er hat dann garnichts mehr gemacht, wenn ich Hardware (selbst meinen USB-Stick) reingesteckt oder rausgezogen hab und Fenster- oder Menüinhalte wurde teilweise nicht mehr gezeichnet. Mußte jedesmal das System neu starten. Auf meinem XP Rechner hier konnte ich das bisher nicht nachvollziehen.

Hat jemand das auch? Oder kann hierzu was sagen?

Delphi-Quellcode:
procedure TRadionicMainContainerForm.Button1Click(Sender: TObject);

  function ScanDeviceTree (Dev: TUSBDevice): Boolean;
  var
    I: Integer;
    Node: TTreeNode;
  begin
    Result := FALSE;
    if Dev <> nil then
      begin
        if Dev.IsHub then
          for I := 0 to Dev.Count - 1 do
            begin
              Result := ScanDeviceTree (Dev.Devices[I]);
              if Result then
                Exit;
            end
        else begin
               if Pos (Dev.DeviceDescription, 'Light Quantum Resonator USB') = 1 then
                 begin
                   Result := TRUE;
                   Exit;
                 end;
             end;
     end;
  end;

var
  s: String;
  a: Integer;
  Found: Boolean;
  USBHostCtrl: TUSBHostController;
begin
  for a := 0 to USBDeviceTree1.Count - 1 do
    begin
      USBHostCtrl := USBDeviceTree1.HostControllers[a];
      Found := ScanDeviceTree(USBHostCtrl.RootHub);
    end;
  if Found then
    ShowMessage ('OK')
  else ShowMessage ('No');
end;

procedure TRadionicMainContainerForm.USBDeviceTree1DeviceChange(
  Sender: TObject);
begin
  Button1Click (Self);
end;
  Mit Zitat antworten Zitat