Freigeben über


IOCTL_MOUNTMGR_CHANGE_NOTIFY IOCTL (mountmgr.h)

Clients senden diese IOCTL an den Bereitstellungs-Manager, um darüber informiert zu werden, wenn eine Änderung in der Datenbank für persistente symbolische Verknüpfungen des Bereitstellungs-Managers erfolgt.

Der Bereitstellungs-Manager verwaltet einen Zähler namens EpicNumber , der aufzeichnet, wie viele Änderungen seit dem letzten Start in seiner Datenbank für persistente Namen aufgetreten sind. Clients senden eine Nummer an den Bereitstellungs-Manager mit jeder Änderungsbenachrichtigungsanforderung IRP, und der Bereitstellungs-Manager antwortet wie folgt:

  • Wenn die vom Client angegebene Zahl nicht mit EpicNumber gleich ist, gibt der Bereitstellungs-Manager STATUS_SUCCESS zurück, was angibt, dass Änderungen aufgetreten sind, seit der Client zuletzt seine Nummer mit der EpicNumber des Bereitstellungs-Managers verglichen hat.

  • Wenn die vom Client angegebene Nummer EpicNumber ist, interpretiert der Bereitstellungs-Manager dies als Anforderung, über die nächste Änderung der Datenbank für persistente Namen informiert zu werden, und er stellt die Änderungsbenachrichtigungs-IRP in die Warteschlange und gibt STATUS_PENDING zurück. Wenn eine Änderung in der Datenbank auftritt, schließt der Bereitstellungs-Manager alle ausstehenden Änderungsbenachrichtigungs-IRPs ab und informiert die Clients über die Änderung.

Einem Client, der nur über die Änderungen an einem bestimmten Volume informiert werden möchte, wird empfohlen, sich für die Plug-and-Play-Zielgerätebenachrichtigung zu registrieren und auf GUID_IO_VOLUME_NAME_CHANGE zu achten.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Der Bereitstellungs-Manager-Client initialisiert die MOUNTMGR_CHANGE_NOTIFY_INFO-Struktur am Anfang des Puffers unter Irp-AssociatedIrp.SystemBuffer>.

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

Ausgabepuffer

Der Bereitstellungs-Manager gibt die aktuelle EpicNumber in der MOUNTMGR_CHANGE_NOTIFY_INFO-Struktur am Anfang des Puffers bei Irp-AssociatedIrp.SystemBuffer> zurück.

Länge des Ausgabepuffers

Keine.

Eingabe-/Ausgabepuffer

Länge des Eingabe-/Ausgabepuffers

Statusblock

Wenn der Vorgang erfolgreich ist, wird das Feld Status auf STATUS_SUCCESS und das Feld Information auf sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)festgelegt.

Wenn InputBufferLength kleiner als sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO) oder OutputBufferLength kleiner sizeof(MOUNTMGR_CHANGE_NOTIFY_INFO)als ist, wird das Statusfeld 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_CHANGE_NOTIFY_INFO