![]() |
USB-Laufwerk ermitteln
Hallo,
via dem ![]() Frage: Wie ermittle ich den Laufwerksbuchstaben? Dank vorab für Tipps und Gruß, Carsten Nachtrag: Ein "nice-to-have" wäre noch, wenn ich auch die VID und PID darüber ermitteln könnte... |
Re: USB-Laufwerk ermitteln
Hallo,
ich bin zwar inzwischen ![]() Ferner suche ich noch immer nach einer Möglichkeit, zum Laufwerksbuchstaben die VID und PID ermitteln zu können. Hat denn niemand eine Idee? Gruß, Carsten |
Re: USB-Laufwerk ermitteln
Zitat:
Vielleicht helfen dir die folgenden API-Funktionen als Stichpunkte weiter: FindFirstVolume/FindNextVolume, GetVolumePathNamesForVolumeName, DeviceIoControl(IOCTL_STORAGE_QUERY_PROPERTY/IOCTL_STORAGE_GET_DEVICE_NUMBER/IOCTL_DISK_GET_PARTITION_INFO(_EX)/...). Edit: GetVolumePathNamesForVolumeName ist recht aufwändig zu emulieren (für Windows 2000) und die API-Funktion liefert bei zirkulären Referenzen auch die erste Rekursion als Ergebnis (A ist in B:\Mount eingebunden und B in A:\Mount, dann ist im Ergebnis neben A:\ auch A:\Mount\Mount enthalten). Edit: oh, ich vergaß die API QueryDosDevice zu erwähnen :) |
Re: USB-Laufwerk ermitteln
Zitat:
Ich wollte eigentlich nur (beim Programmstart oder bei einem erkannten Gerätewechsel via wm_DeviceChange) alle Laufwerke/Laufwerksbuchstaben nach Removable-Geräten durchsuchen (sind ja nur max. 26) und dann, wenn es sich um ein USB-Gerät handelt, deren VID und PID auslesen. Mit der unter#2 genannten Routine finde ich ja schon mal den entsprechenden (neuen) Gerätebuchstaben und bekomme via GetVolumeInformation den im Windows Explorer angezeigten Name. Und irgendwer (Plug&Play Manager?) muss ja den Zusammenhang zw. dem Laufwerksbuchstaben und VID/PID kennen... :wall: Zitat:
|
Re: USB-Laufwerk ermitteln
Zitat:
|
Re: USB-Laufwerk ermitteln
Zitat:
Ich versuche mir gerade an
Delphi-Quellcode:
wobei DriveLetter der über GetDriveType ermittelte Typ 'DRIVE_REMOVABLE' ist.
var HidHandle : THandle;
HidHandle:= CreateFile(PChar('\\.\'+DriveLetter+':'), GENERIC_READ OR GENERIC_WRITE, FILE_SHARE_READ OR FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0); Im weiteren wollte ich gerne auf die exportierten Funktionen von ![]() In der Online-Hilfe ist dazu zu lesen: ---schnipp--- Comment: Only user-mode applications can call HidD_GetAttributes. Kernel-mode drivers can use IOCTL_HID_GET_COLLECTION_INFORMATION. ---schnapp--- Und die Sache mit dem IOCTL_HID_GET_COLLECTION_INFORMATION verstehe ich noch nicht so recht... Gruß, Carsten |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz