Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi USB Stick Serial Number mit Vista (https://www.delphipraxis.net/90542-usb-stick-serial-number-mit-vista.html)

Bruno715 19. Apr 2007 10:08


USB Stick Serial Number mit Vista
 
Habe von der JEDI-Bibliothek das Setup and Config Manager API runtergeladen. Mit der Demoapplikation SafeRemoval kann ich die Serial Number und die Laufwerkbuchstaben der eingesteckten Sticks sehen.
Unter XP funktioniert das tadellos aber unter VISTA erscheinen die Serial Number nicht mehr.
Was hat unter Vista geändert? Wie muss ich den Code abändern, damit es wieder funktioniert?
Gibt es anderen Beispielcode, der die Nummer unter VISTA auslesen kann?
Ich möchte den Code in eine eigene Applikation einbauen.

Vielen Dank für eure Hilfe?

Bruno

Robert Marquardt 19. Apr 2007 10:27

Re: USB Stick Serial Number mit Vista
 
ich hatte noch keine Gelegenheit Vista zu erforschen. Auf jeden Fall hat sich die interne Struktur geaendert.

Bruno715 19. Apr 2007 17:10

Re: USB Stick Serial Number mit Vista
 
Hallo Robert

Ich habe das SaveRemoval-Programm unter Vista gedebuggt und herausgefunden dass die ID in der Funktion
"GetDriveInstanceID" auftaucht und zwar in der lokalen Variablen "Fielname".

Beispiel:

'\\?\storage#volume#1&19f7e59c&0&_??_usbstor#disk& ven_swissbit&prod_victorinox&rev_1.89#40002258f500 00a3&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\'

Die Nummer "40002258f500000a3" ist hier die korrekte ID (also ohne &0).

Ein anderer Stick liefert eine Nummer mit mehreren & - Zeichen in der ID


Vielleicht kannst du mir aus deiner Erfahrung folgende Fragen dazu beantworten:
- Was bedeuten die &-Zeichen am Ende und in der ID und was mach ich damit?
- Kann ich davon ausgehen, dass die ID immer an dieser Stelle ist?
- Was ist, wenn ein Stick keine ID hat?
- Gibt es einen direkteren und ev. sichereren Weg, um an diesen String zu kommen?

Viele Grüsse
Bruno

Robert Marquardt 20. Apr 2007 04:33

Re: USB Stick Serial Number mit Vista
 
Die &'s ind ueblicherweise Trenner der Stringbestandteile. Da hat MS aber nichts wirklich dokumentiert.
Wenn keine Seriennummer vorhanden ist, dann hast du einen miesen Billigstick erwischt. Wegschmeissen. Die Seriennummer ist fuer USB Sticks vorgeschrieben.
Schlimmer sind die Sticks bei denen die Seriennummer immer gleich ist. Davon zwei angeschlossen und das OS kriegt Probleme.
Leider ist das ganze Registry-Zeug undokumentiert und kann sich deshalb jederzeit aendern. MS aendert das auch in jeder Windows-Version.
Einen direkteren Weg gibt es nicht wirklich. Es gaebe noch den Weg ueber USBView ein Beispiel des Windows DDK. Dort spricht man den Hub-Treiber ueber DeviceIoControl Calls an. Das Problem ist das dies ueberhaupt nicht zum Config Manager API passt. Man kriegt also die Verbindung zu Laufwrken nicht hin. Zusatzlich hat das API so seine Probleme.

Mackhack 20. Apr 2007 05:26

Re: USB Stick Serial Number mit Vista
 
Robert,

kann es sein dass die ganzen Demos aus der API hier nicht mit dem BDS 2006 laufen?

Robert Marquardt 20. Apr 2007 07:10

Re: USB Stick Serial Number mit Vista
 
Muesste ich mal ausprobieren. Ich sehe aber kein prinzipielles Problem.
Ich habe halt schlicht keine Zeit mich um die API Conversions zu kuemmern. Ich wuerde ja gerne, aber ich habe noch ein paar andere Interessen die meine Freizeit auffressen.

Mackhack 20. Apr 2007 07:28

Re: USB Stick Serial Number mit Vista
 
War doch kein Vorwurf an dich! Nur eine Feststellung!

Delphi-Quellcode:
...
// check configuration

{$IFNDEF JVCL_CONFIGURED}
 {$IFDEF SUPPORTS_COMPILETIME_MESSAGES}
  {$MESSAGE FATAL 'Your Delphi/BCB version is not supported by this JVCL version!'}
 {$ELSE}
  'Your Delphi/BCB version is not supported by this JVCL version!' <===== Hier komme ich beim Compilieren hin!
 {$ENDIF SUPPORTS_COMPILETIME_MESSAGES}
{$ENDIF !JVCL_CONFIGURED}
...

CCRDude 20. Apr 2007 07:35

Re: USB Stick Serial Number mit Vista
 
Mit 2006 sollte die JVCL eigentlich schon lange laufen? Benutze sie zwar nicht aktiv, aber hab vor ein paar Tagen erst reingeschaut, siehe hier. Mit 2007 vielleicht eher ein Problem, dazu siehe Post 10 dort.

Mackhack 20. Apr 2007 07:39

Re: USB Stick Serial Number mit Vista
 
Hi,

ich habe diese Version bei mir installiert:

JVCL330CompleteJCL198-Build2530

Und beim installieren habe ich alle Default-Einstellungen uebernommen!

Robert Marquardt 20. Apr 2007 08:54

Re: USB Stick Serial Number mit Vista
 
Mal die frischeste JVCL und JCL von http://jvcl.sf.net/daily bzw. http://jcl.sf.net/daily besorgen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:24 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz