Laden...

USB Stick feststellen ob erstanmeldung

Erstellt von Cornflake vor 9 Jahren Letzter Beitrag vor 9 Jahren 1.810 Views
C
Cornflake Themenstarter:in
142 Beiträge seit 2007
vor 9 Jahren
USB Stick feststellen ob erstanmeldung

Hallo Leute

In meinem Programm erkenne ich mit eienr Bibliothek, ob ein USB Stick angeschlossen wurde oder abgezogen wurde und bekomme den Laufwerksbuchstaben geliefert.

Jetzt habe ich aber ein Problem.
Wenn der Stick das erste mal angesteckt wird, er also eine neue DeviceID hat.
Ich aber vorher schon einen anderen Stick angeschlossen hatte mit gleicher VendorID und ProductID, daher die Treiber für den Stick schon installiert wurden, meldet er den stick dann nach 1 sekundwe wieder ab, macht irgend was und meldet ihn dann wieder an. Ich habe damit beim ersten anschließen so ein an-ab-an-ab-an ablauf, bis er dann zum schluss angemeldet bleibt.
Das bringt meine Software durcheinander, denn beim ersten anmelden, will die vom stick etwas runterkopieren und dann ist der wieder weg.
Kann man dass irgendwie abschalten?
Oder gibts eine möglichkeit unter C# zu erkennen, dass der stick noch nicht vollständig eingerichtet ist?
Beim zweiten mal anstecken des Sticks geht dann wieder alles. es kommt dann nur ein Anmelden.

Grüße Cornflake

5.658 Beiträge seit 2006
vor 9 Jahren

Hi Cornflake,

irgendwie muß deine Software sowieso damit umgehen, daß ein USB-Stick jederzeit wieder abgezogen werden kann. Auch wenn man gerade etwas davon liest. Das sollte ja mit einem einfachen ExceptionHandling schon ausgeschlossen werden können. Und dann würde der Benutzer gar nichts davon mitbekommen, daß er erst beim zweiten Versuch richtig erkannt wurde.

Warum das Verhalten allerdings so ist, kann ich dir nicht sagen.

Christian

Weeks of programming can save you hours of planning

16.834 Beiträge seit 2008
vor 9 Jahren

Kann man dass irgendwie abschalten?

Davon abgesehen, dass - wie MrSparkle schon sagte - Du das ohnehin abfangen musst, kannst Du das nicht abschalten.
Es finden hier mehrere Dinge statt, zB Registry Register, Treibermapping etc. Du musst also mit einer gewissen Idletime rechnen.

C
Cornflake Themenstarter:in
142 Beiträge seit 2007
vor 9 Jahren

Hallo
Danke für eure Antworten.

Das Problem ist, dass wenn mein Tool erkennt, dass ein USB Stick angeschlossen wurde, es ein externes Datenverarbeitungsprogramm startet. Dieses müsste ich ja dann irgendwie wieder abschießen, bzw. wenn das externe Tool versucht Daten auf dem Stick zu bearbeiten es dort dann auch zu Fehlern kommen kann. Zudem wenn ich das abschieße bleibt da noch ein Fehlerstatus zurück und das Tool lässt sich dann nicht so einfach wieder neu starten.
Daher bleibt mir wohl nichts anderes übrig als nach der Anmeldung noch ein paar Sekunden zu warten. Aber wenn dann dieses an-ab-an-ab-an kommt, darf ich nur einmal das externe Tool starten.

502 Beiträge seit 2004
vor 9 Jahren

Hi,

interessant sind hier auch einige Randbedingungen. Z.B. Dürfen die Daten vom USB-Stick kopiert werden? Geht's um ein größeres Volumen?
Eine Mögliche Lösung wäre nämlich erst mal mit Deinem Programm die Daten in einen Temp-Ordner zu kopieren und dann das zweite Tool über diesen laufen zu lassen - allerdings nur dann, wenn auch alle passt.

Bart Simpson

Praxis ist wenn alles funktioniert und keiner weiss warum.
Theorie ist wenn man alles weiss, aber nichts funktioniert.

Bei uns wird Theorie und Praxis vereint: Nichts funktioniert und keiner weiss warum...

A
350 Beiträge seit 2010
vor 9 Jahren

Wie wäre es eine Art Delay einzubauen ? Du wartest x Sekunden und prüfst ob der Stick noch da ist.
Wenn ja, starte das externe Programm.

C
Cornflake Themenstarter:in
142 Beiträge seit 2007
vor 9 Jahren

Ne ist unterschiedlich meist so etwas im 5MB Bereich. Bisher ist alles auf dem Stick und wird dann meist dort direkt angepasst.
Aber ok werde dann zwei Wege testen.
Zum Einen warten bis sich alles beruhigt hat und dann erst mit dem externen Tool zu arbeiten anfangen.
Zum Anderen erstmal dann alles lokal kopieren, dort extern verarbeiten und erst zum Schluss zurückspielen. Das wird je nach Situation auch schon gemacht, aber eben nicht als feste Vorgabe.

Thx
Grüße Cornflake