Freigeben über


IOCTL_MOUNTMGR_QUERY_POINTS IOCTL (mountmgr.h)

Diese IOCTL gibt Dreifache zurück, die aus einem persistenten symbolischen Linknamen für das Volume (d. h. einem Bereitstellungspunkt), einer eindeutigen ID für das Volume und einem nichtpersistenten Gerätenamen (z. B. "\Device\HarddiskVolume1") für das Volume bestehen. Die Eingabe für diese IOCTL ist eine MOUNTMGR_MOUNT_POINT-Struktur , die ein einzelnes Dreifach enthält.

Wenn das Eingabedreifach eine eindeutige ID oder einen nicht persistenten Gerätenamen enthält, ruft die Anforderung alle zugeordneten Bereitstellungspunkte (symbolische Verknüpfungen) ab, einschließlich des Volume-GUID-Pfadnamens und der Laufwerkbuchstaben. Wenn das Eingabedreifach jedoch über einen symbolischen Link verfügt, aber weder die eindeutige ID noch den Gerätenamen angibt, gibt die Anforderung nur ein einzelnes Dreifach zurück, das den symbolischen Link enthält, der in der Eingabe angegeben wurde, zusammen mit der eindeutigen ID und dem Gerätenamen. Der Aufrufer muss eine weitere IOCTL mit der eindeutigen ID oder dem Gerätenamen übermitteln, um die verbleibenden Bereitstellungspunkte abzurufen.

Wenn das Eingabedreifach leer ist, gibt der Bereitstellungs-Manager die gesamte eingebundene Geräteliste zurück.

Der Bereitstellungs-Manager gibt Dreifache zurück, die mit so vielen Informationen übereinstimmen, wie vom Aufrufer bereitgestellt werden. Wenn der Aufrufer die eindeutige ID übermittelt, gibt der Bereitstellungs-Manager alle Dreifache mit dieser eindeutigen ID zurück. Wenn der Aufrufer den Volumepfadnamen oder einen Laufwerkbuchstaben als symbolischen Linknamen eingibt, gibt der Bereitstellungs-Manager nur das Dreifache für den symbolischen Link zurück. Es gibt einen Eintrag pro symbolischem Link. Wenn der Aufrufer einen Gerätepfadnamen eingibt, gibt der Bereitstellungs-Manager nur die Dreifache für diesen Gerätepfadnamen zurück. Wenn der Aufrufer eine eindeutige ID und einen symbolischen Link eingibt, gibt der Bereitstellungs-Manager nur einen Eintrag für diesen symbolischen Link zurück. Ein Aufrufer würde dies tun, um den Gerätepfadnamen abzurufen. Wenn der Aufrufer keinen Gerätepfadnamen, eine eindeutige ID oder einen symbolischen Link eingibt, gibt der Bereitstellungs-Manager alle Einträge/Dreifache zurück.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Der Bereitstellungs-Manager-Client initialisiert die MOUNTMGR_MOUNT_POINT-Struktur am Anfang des Puffers unter Irp-AssociatedIrp.SystemBuffer>. Unmittelbar nach dieser Struktur lädt der MM-Client den symbolischen Linknamen, die eindeutige ID und den Gerätenamen in dieser Reihenfolge.

Eingabepufferlänge

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_MOUNT_POINT)sein muss.

Ausgabepuffer

Der Bereitstellungs-Manager initialisiert eine Struktur mit variabler Länge vom Typ MOUNTMGR_MOUNT_POINTS am Anfang des Puffers unter Irp-AssociatedIrp.SystemBuffer>. Der Bereitstellungs-Manager fügt die Bereitstellungspunkte, die dem angegebenen Volume zugeordnet sind, an der Adresse ein, auf die das MountPoints[] -Element dieser Struktur verweist. Jeder Bereitstellungspunkt wird durch eine MOUNTMGR_MOUNT_POINT-Struktur dargestellt, die im Abschnitt Eingabe für diese IOCTL definiert ist.

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_MOUNT_POINTS)sein muss.

Eingabe-/Ausgabepuffer

Länge des Eingabe-/Ausgabepuffers

Statusblock

Wenn der Vorgang erfolgreich ist, wird das Feld Status auf STATUS_SUCCESS festgelegt.

Wenn weder die eindeutige ID noch der nichtpersistente Gerätename in der Liste der von Volumes eingebundenen Geräte gefunden werden, wird das Feld Status auf STATUS_INVALID_PARAMETER festgelegt.

Wenn InputBufferLength kleiner als sizeof(MOUNTMGR_MOUNT_POINT)ist, wird das Statusfeld auf STATUS_INVALID_PARAMETER festgelegt.

Wenn InputBufferLength kleiner als die Gesamtlänge der drei Eingabe-ID-Zeichenfolgen ist, wird das Feld Status auf STATUS_INVALID_PARAMETER festgelegt.

Wenn OutputBufferLength kleiner als sizeof(MOUNTMGR_MOUNT_POINT)ist, ist das Feld Status auf STATUS_INVALID_PARAMETER festgelegt.

Wenn OutputBufferLength kleiner als plus sizeof(MOUNTMGR_MOUNT_POINTS) die Summe der Größen des Bereitstellungspunkts dreifach ist, wird das Feld Status auf STATUS_BUFFER_OVERFLOW festgelegt.

Wenn eine der drei Zeichenfolgen, die in einem der Dreier enthalten sind, an einer ungeraden Adresse ausgerichtet ist (z. B. Adresse & 01 != 0), wird das Feld Status auf STATUS_INVALID_PARAMETER festgelegt.

Hinweise

Weitere Informationen finden Sie unter Unterstützung von Bereitstellungs-Manager-Anforderungen in einem Speicherklassentreiber.

Anforderungen

Anforderung Wert
Header mountmgr.h (einschließlich Mountmgr.h)

Weitere Informationen

MOUNTMGR_MOUNT_POINTS