IOCTL_MOUNTMGR_NEXT_DRIVE_LETTER IOCTL (mountmgr.h)
Diese IOCTL überprüft, ob das angegebene Volume über einen Laufwerkbuchstaben verfügt. Wenn bereits ein Laufwerkbuchstabe vorhanden ist oder das Volume über einen speziellen Datenbankeintrag für den Bereitstellungs-Manager verfügt, der angibt, dass kein Laufwerkbuchstabe erforderlich ist, gibt diese Routine den aktuellen Laufwerkbuchstaben zurück (sofern vorhanden) und führt nichts aus. Wenn das angegebene Volume keinen Laufwerkbuchstaben und keinen speziellen Datenbankeintrag für den Bereitstellungs-Manager aufweist, der angibt, dass kein Laufwerkbuchstabe erforderlich ist, wird dem Volume der nächste verfügbare Laufwerkbuchstabe zugewiesen. Wenn der nicht permanente Gerätename des Volumes mit "\Gerät\Floppy" beginnt, sucht der Bereitstellungs-Manager nach verfügbaren Laufwerkbuchstaben, beginnend mit dem Buchstaben "A". Wenn der Volumename mit "\Device\CdRom" beginnt, sucht der Einbindungs-Manager nach verfügbaren Laufwerkbuchstaben, beginnend mit dem Laufwerkbuchstaben "D". In allen anderen Fällen beginnt der Bereitstellungs-Manager mit dem Laufwerkbuchstaben "C".
Hauptcode
Eingabepuffer
Der Bereitstellungs-Manager-Client initialisiert die MOUNTMGR_DRIVE_LETTER_TARGET-Struktur am Anfang des Puffers unter Irp-AssociatedIrp.SystemBuffer>. Der Client muss den Namen des Zielvolumes an der Adresse einfügen, auf die der DeviceName[]- Member dieser Struktur verweist. Der Name des Zielvolumes ist der Name des nicht permanenten Geräteobjekts, das dem Volume zugeordnet ist (z. B. "\Device\HarddiskVolume1").
Länge des Eingabepuffers
Parameters.DeviceIoControl.InputBufferLength in der E/A-Stapelposition des IRP gibt die Größe des Eingabepuffers in Bytes an, die größer oder gleich sizeof(MOUNTMGR_DRIVE_LETTER_TARGET)
sein muss.
Ausgabepuffer
Der Einbindungs-Manager fügt entweder den aktuellen Laufwerkbuchstaben oder den neu zugewiesenen Laufwerkbuchstaben (siehe vorherige Diskussion) in die MOUNTMGR_DRIVE_LETTER_INFORMATION-Struktur am Anfang des Puffers unter Irp-AssociatedIrp.SystemBuffer> ein.
Länge des Ausgabepuffers
Parameters.DeviceIoControl.OutputBufferLength in der E/A-Stapelposition des IRP gibt die Größe des Ausgabepuffers in Bytes an, die größer oder gleich sizeof(MOUNTMGR_DRIVE_LETTER_INFORMATION)
sein muss.
Eingabe-/Ausgabepuffer
–
Länge des Eingabe-/Ausgabepuffers
–
Statusblock
Wenn der Vorgang erfolgreich ist, wird das Feld Status auf STATUS_SUCCESS festgelegt.
Wenn InputBufferLength kleiner als sizeof(MOUNTMGR_DRIVE_LETTER_TARGET)
oder OutputBufferLength kleiner als sizeof(MOUNTMGR_DRIVE_LETTER_INFORMATION)
ist, wird das Feld Status auf STATUS_INVALID_PARAMETER festgelegt.
Hinweise
Weitere Informationen finden Sie unter Unterstützen von Einbindungs-Manager-Anforderungen in einem Speicherklassentreiber.
Anforderungen
Anforderung | Wert |
---|---|
Header | mountmgr.h (Mountmgr.h einschließen) |