IOCTL_MOUNTDEV_QUERY_DEVICE_NAME IOCTL (mountmgr.h)
Beim Empfang dieser IOCTL muss ein Clienttreiber den (nichtpersistenten) Geräte- (oder Zielnamen) für das Volume angeben. Der Bereitstellungs-Manager verwendet den vom Client zurückgegebenen Gerätenamen als Ziel einer symbolischen Verknüpfung. Ein Beispiel für einen Gerätenamen wäre "\Device\HarddiskVolume1".
Die Unterstützung für diese IOCTL durch die Bereitstellungs-Manager-Clients ist obligatorisch.
Hauptcode
Eingabepuffer
Keine.
Eingabepufferlänge
Keine.
Ausgabepuffer
Der Bereitstellungs-Manager-Client gibt eine Struktur mit variabler Länge vom Typ MOUNTDEV_NAME am Anfang des Puffers unter Irp-AssociatedIrp.SystemBuffer> zurück. Der Gerätename muss an der Adresse eingefügt werden, auf die vom Member Name dieser Struktur verwiesen wird.
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(MOUNTDEV_NAME)
sein muss.
Statusblock
Das Feld Information ist auf FIELD_OFFSET(MOUNTDEV_NAME, Name) + output-NameLength> oder alternativ auf output-NameLength> + sizeof(USHORT) festgelegt, wobei die Ausgabe auf den Puffer bei Irp-AssociatedIrp.SystemBuffer> verweist.
Wenn der Vorgang erfolgreich ist, muss der Bereitstellungs-Manager-Client das Feld Information auf die Länge der NULL-beendeten Zeichenfolge festlegen, die den Gerätenamen und das Feld Status enthält, auf STATUS_SUCCESS.
Wenn der Ausgabepuffer zu klein ist, um den Gerätenamen aufzunehmen, muss der Bereitstellungs-Manager-Client das Feld Information auf sizeof(MOUNTDEV_NAME)
und das Feld Status auf STATUS_BUFFER_OVERFLOW festlegen. Darüber hinaus füllt der Bereitstellungs-Manager-Client das NameLength-Element der MOUNTDEV_NAME-Struktur aus.
Hinweise
Als bewährte Methode darf der Implementierer keine Threadsynchronisierung durchführen und darf keine Blockierenden und/oder IPC-Funktionsaufrufe (Interprocess Communication) vornehmen.
Weitere Informationen finden Sie unter Unterstützung von Bereitstellungs-Manager-Anforderungen in einem Speicherklassentreiber.
Anforderungen
Anforderung | Wert |
---|---|
Header | mountmgr.h (einschließlich Mountmgr.h) |