Freigeben über


IOCTL_MOUNTMGR_QUERY_POINTS IOCTL (mountmgr.h)

Diese IOCTL gibt Dreifache zurück, die aus einem dauerhaften symbolischen Verknüpfungsnamen für das Volume (d. h. einen Bereitstellungspunkt), einer eindeutigen ID für das Volume und einen 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 Eingabedreieck 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 eine symbolische Verknüpfung aufweist, aber weder die eindeutige ID noch den Gerätenamen angibt, gibt die Anforderung nur ein einzelnes Dreifach zurück, das die symbolische Verknüpfung enthält, die in der Eingabe bereitgestellt wurde, zusammen mit der eindeutigen ID und dem Gerätenamen. Der Aufrufer muss eine andere 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 bereitgestellte 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 sendet, 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 Dreifach für die symbolische Verknüpfung zurück. Pro symbolischer Verknüpfung gibt es einen Eintrag. 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 eine symbolische Verknüpfung eingibt, gibt der Bereitstellungs-Manager nur einen Eintrag für diese symbolische Verknüpfung zurück. Ein Aufrufer würde dies tun, um den Gerätepfadnamen abzurufen. Wenn der Aufrufer keinen Gerätepfadnamen, eindeutige ID oder symbolische Verknüpfung 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 bei 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 I/O-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 bei Irp->AssociatedIrp.SystemBuffer. Der Mount-Manager fügt die Bereitstellungspunkte ein, die dem angegebenen Volume zugeordnet sind, an der Adresse, auf die vom MountPoints[] Mitglied dieser Struktur verwiesen wird. Jeder Bereitstellungspunkt wird durch eine MOUNTMGR_MOUNT_POINT Struktur dargestellt, die im Abschnitt Input für diese IOCTL definiert ist.

Länge des Ausgabepuffers

Parameters.DeviceIoControl.OutputBufferLength in der I/O-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

N/A

Länge des Eingabe-/Ausgabepuffers

N/A

Statusblock

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

Wenn weder die eindeutige ID noch der name des nichtpersistenten Geräts in der Liste der bereitgestellten Volumes gefunden werden, wird das Feld Status auf STATUS_INVALID_PARAMETER festgelegt.

Wenn InputBufferLength- kleiner als sizeof(MOUNTMGR_MOUNT_POINT)ist, wird das feld Status 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, wird das feld Status auf STATUS_INVALID_PARAMETER festgelegt.

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

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

Bemerkungen

Weitere Informationen finden Sie unter Unterstützen von Mount Manager-Anforderungen in einem Speicherklassentreiber.

Anforderungen

Anforderung Wert
Header- mountmgr.h (include Mountmgr.h)

Siehe auch

MOUNTMGR_MOUNT_POINTS