LW-Buchstaben abhängig von bestimmten Kriterien
Ab V4.0 kann man die Buchstaben abhängig von einer Vielzahl an Kriterien vergeben.
Man braucht dann mehrere Abschnitte [DriveLetters], in denen jeweils andere Kriterien definiert sind.
Ab V5.0 ist keine Nummerierung der Abschnitte mehr nötig, funktioniert aber wie gehabt:
Die Abschnitte werden von Nummer 1 an aufwärts bis 99 eingelesen, danach bis zu 100 Abschnitte [DriveLetters] ohne Nummer.
Analog funktioniert das für das Festlegen von Autorun-Ereignissen mittels nummerierter Abschnitte [OnArrival], [OnRemoval], u.a., angepassten Balloontips, u.v.a.
Der erste Abschnitt mit passenden Kriterien wird verwendet (und nur dieser). Das bedeutet, dass man immer vom speziellen Fall aufwärts zu den allgemeineren konfiguriert.
Benutzt man Abschnitts-Nummern dann am besten in 10er-Schritten - dann kann man problemlos mal einen einfügen ohne neu nummerieren zu müssen. Oder ab V5.0 weglassen, dann kann man beliebig umsortieren oder einfügen.
UsbDriveInfo analysiert die USBDLM.INI in dem Ordner in dem USBDLM als Dienst registriert ist, wenn das ein anderer Ordner als der eigene ist, gibt's eine Warnung.
UsbDriveInfo zeigt für jedes Laufwerk welche Abschnitte zuständig sind (nach Ändern der INI per F5-Taste aktualisieren) und fertige Kriterien zum Kopieren und Einfügen in die INI. [DriveLetters]:33 heißt z.B. Abschnitt DriveLetters in Zeile 33.
========== Storage Volume on Disk 1 in Partition 1 ===========
MountPoint = Z:\
Volume Label = King16Back
Volume Size = 15.6 GB / 14.6 GiB / 15.619.129.344 Bytes
Volume Name = \\?\Volume{09247b47-82df-11e4-b297-001d729ad2b2}\
DeviceID = STORAGE\VOLUME\_??_USBSTOR#DISK&VEN_KINGSTON&PROD_DATATRAVELER_111&REV_PMAP#...
DeviceID Drive = USBSTOR\DISK&VEN_KINGSTON&PROD_DATATRAVELER_111&REV_PMAP\001CC0C60DBDBCC0C000010B&0
DeviceID USB = USB\VID_0951&PID_1693\001CC0C60DBDBCC0C000010B
INI Sections = [DriveLetters]:33, [OnArrival]:38
---------------- USBDLM Criteria -------------------
MinVolumeSize=14G
MaxVolumeSize=16G
MinDriveSize=14G
MaxDriveSize=16G
DeviceID=USBSTOR\DISK&VEN_KINGSTON&PROD_DATATRAVELER_111&REV_PMAP\001CC0C60DBDBCC0C000010B&0
DeviceID=USB\VID_0951&PID_1693\001CC0C60DBDBCC0C000010B
DeviceID=Kingston DataTraveler 111 USB Device
PortName=6-3
PortName=PCI\VEN_8086&DEV_283A&SUBSYS_20AB17AA&REV_03\3&21436425&0&D7-3
VolumeLabel=King16Back
VolumeSerial=A4605DC1
DriveType=REMOVABLE
BusType=USB
PartitionNumber=1
DiskSignature=C3072E18
Standard-Kriterien sind:
BusType=USB
und
DriveType1=REMOVABLE
DriveType2=FIXED
Das heißt, wenn keine Kriterien angegeben werden, ist ein Abschnitt für alle USB-Sticks und USB-Festplatten zutreffend, was dem Verhalten von USBDLM bis V3.x entspricht. Abweichend von V3.x sind Multislot-Cardreader nicht mehr ausgenommen.
Gibt man einen anderen BusType bzw. DriveType an, wird die jeweilige Vorgabe natürlich außer Kraft gesetzt.
Untypisches Beispiel zum Verdeutlichen der Funktionsweise, Kriterien in grün, Ziel-Buchstaben in violett:
[DriveLetters]
DeviceID=USB\VID_067B&PID_2517
DeviceID=USB\VID_1234&PID_5678
Letter=X
Letter=Y
Dieser Abschnitt wird benutzt, wenn ein Laufwerk mit der Geräte-ID USB\VID_067B&PID_2517 oder USB\VID_1234&PID_5678 angeschlossen wurde. Dem Laufwerk wird dann X: zugeordnet falls frei, sonst Y:. Sind beide Buchstaben belegt, wird der erste freie Buchstabe zugeordnet. Soll in diesem Fall kein Buchstabe zugeordnet werden, konfiguriert man noch Letter3=-
Typisches Beispiel um o.g. Laufwerke auf je einem Buchstaben zu haben:
[DriveLetters]
DeviceID=USB\VID_067B&PID_2517
Letter=X
[DriveLetters]
DeviceID=USB\VID_1234&PID_5678
Letter=Y
Sprich, für jedes Laufwerk dass eine abweichende Behandlung erfahren soll, braucht's einen eigenen Abschnitt.
Weitere Beispiele:
1. FireWire-Laufwerke auf F, USB-Laufwerke ab 10GB auf U, alle anderen USB-Sticks- und Platten auf W oder Z:
;FireWire auf F:
[DriveLetters]
BusType=FireWire
Letter=F
;USB >10GB auf U:
[DriveLetters]
MinDriveSize=10GB
Letter=U
;alle übrigen USB-Laufwerke auf W: oder Z:
[DriveLetters]
Letters=W, Z
2. USB-Multislot-Cardreader auf L, M, N, O; alle anderen USB-Sticks- und Platten auf W oder Z:
;MultiSlotCardReader auf L:, M:, N: und O:
[DriveLetters]
DeviceType=MSCR
Letters=L,M,N,O
;alle übrigen USB-Laufwerke auf W: oder Z:
[DriveLetters]
Letters=W,Z
Es können auch mehrere Kriterien gleichen Typs - dann nummeriert - angegeben werden. Davon muss dann eines passen.
Auch mehrere Kriterien verschiedenen Typs sind möglich - dann muss ein Eintrag jeden Typs passen.
Bsp: USB- und FireWire-Laufwerke ab 10GB auf F:
[DriveLetters]
BusTypes=USB, FireWire
MinDriveSize=10GB
Letter=F
Bsp: CF-Karten im PCMCIA-Slot auf P:
[DriveLetters]
BusType=ATA
DeviceID=PCI\VEN_1217&DEV_7135
Letter=P
Sowas funktioniert nicht:
;USB-Festplatten auf K oder L:
[DriveLetters]
DriveType=fixed
Letters=K,L
;eine bestimmte USB-Festplatte auf I:
[DriveLetters]
DriveType=fixed
DeviceID1=USBSTOR\DISK&VEN_WDC_WD20&PROD_00BB-00GUA0
Letters=I
Warum? Der erste Abschnitt "fängt" alle USB-Platten ein, der zweite Abschnitt kommt deshalb nie zum Zuge.
Deshalb immer vom speziellen Fall aufwärts zu den allgemeineren konfigurieren.
Die verschiedenen Kriterien sind in den folgenden Abschnitten beschrieben, hier eine übersicht:
- MinVolumeSize Mindestgröße des Volumes
- MaxVolumeSize Maximalgröße des Volumes
- MinDriveSize Mindestgröße des gesamten Laufwerks
- MaxDriveSize Maximalgröße des gesamten Laufwerks
- DeviceID Geräte-ID des Volumes, des Laufwerks, des Controllers oder der "Friendly Name"
- PortName Name des USB-Ports, z.B. 3-1
- VolumeLabel (*) Datenträgerbezeichnung
- VolumeSerial Seriennummer des Volumes
- DriveType z.B. REMOVABLE, FIXED, CDROM, FLOPPY, RAMDISK
- DeviceType z.B. MSCR, TrueCrypt, BitLocker
- BusType z.B. USB, FireWire, ATA, ATAPI, SCSI
- PartitionNumber Partitionsnummer
- DiskSignature Disk-Signatur
- FileExists (*) Vorhandensein einer Datei
- FileNotExists (*) Nichtvorhandensein einer Datei
- DirExists (*) Vorhandensein eines Verzeichnisses
- DirNotExists (*) Nichtvorhandensein eines Verzeichnisses
- UserName Nutzername des angemeldeten Nutzers
- UserGroup Nutzergruppenname des angemeldeten Nutzers
- UserIsAdmin 1 wenn Nutzer ein Admin ist, sonst 0
- ComputerName Computer-Name, z.B. für einheitliche USBDLM.INI aber unterschiedliches Verhalten abh. vom Computer
- ProcessIsRunning Ein bestimmter Prozess läuft
- ProcessIsNotRunning Ein bestimmter Prozess läuft nicht
- OsVersion Eine minimale oder maximale Betriebssystem-Version
(*) kann zu Verzögerungen führen oder ganz fehlschlagen, da dafür das Dateisystem fertig eingebunden sein muss; normalerweise problemlos
Hinweis: Frei erfundene Kriterien funktionieren nicht.