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
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) |