Geräteereignisse (IoEvent.h)
Anwendungen, einschließlich Diensten, können sich registrieren, um Benachrichtigungen über Geräteereignisse zu erhalten. Beispielsweise kann ein Katalogdienst eine Benachrichtigung erhalten, dass Volumes bereitgestellt oder die Bereitstellung aufgehoben werden, sodass er die Pfade zu Dateien auf dem Volume anpassen kann. Das System benachrichtigt eine Anwendung, dass ein Geräteereignis aufgetreten ist, indem der Anwendung eine WM_DEVICECHANGE Nachricht gesendet wird. Das System benachrichtigt einen Dienst, dass ein Geräteereignis aufgetreten ist, indem die Ereignishandlerfunktion HandlerEx des Diensts aufgerufen wird.
Um Geräteereignisbenachrichtigungen zu erhalten, rufen Sie die Funktion RegisterDeviceNotification mit einer DEV_BROADCAST_HANDLE-Struktur auf. Stellen Sie sicher, dass Sie den dbch_handle Member auf das Gerätehandle festlegen, das sie von der CreateFile-Funktion erhalten haben. Legen Sie außerdem das dbch_devicetype-Element auf DBT_DEVTYP_HANDLE fest. Die Funktion gibt ein Benachrichtigungshandle für Geräte zurück. Beachten Sie, dass dies nicht mit dem Volumehandle identisch ist.
Wenn Ihre Anwendung eine Benachrichtigung empfängt und der Ereignistyp DBT_CUSTOMEVENT ist, haben Sie möglicherweise eines der in IoEvent.h definierten Geräteereignisse erhalten. Führen Sie die folgenden Schritte aus, um zu ermitteln, ob eines dieser Ereignisse aufgetreten ist.
- Behandeln Sie die Ereignisdaten als DEV_BROADCAST_HDR-Struktur . Vergewissern Sie sich, dass das dbch_devicetype-Element auf DBT_DEVTYP_HANDLE festgelegt ist.
- Wenn dbch_devicetypeDBT_DEVTYP_HANDLE ist, sind die Ereignisdaten tatsächlich ein Zeiger auf eine DEV_BROADCAST_HANDLE-Struktur .
- Vergleichen Sie den dbch_eventguid-Member mit den GUIDs, die in der folgenden Tabelle aufgeführt sind, mithilfe der IsEqualGUID-Funktion .
-
GUID_IO_CDROM_EXCLUSIVE_LOCK
-
-
bc56c139-7a10-47ee-a294-4c6a38f0149a
-
Das CD-ROM-Gerät wurde für den exklusiven Zugriff gesperrt.
Windows Server 2003 und Windows XP: Die Unterstützung für diesen Wert erfordert IMAPI 2.0. Weitere Informationen finden Sie unter Image Mastering-API.
-
-
GUID_IO_CDROM_EXCLUSIVE_UNLOCK
-
-
a3b6d27d-5e35-4885-81e5-ee18c00ed779
-
Ein CD-ROM-Gerät, das für exklusiven Zugriff gesperrt war, wurde entsperrt.
Windows Server 2003 und Windows XP: Die Unterstützung für diesen Wert erfordert IMAPI 2.0. Weitere Informationen finden Sie unter Image Mastering-API.
-
-
GUID_IO_DEVICE_BECOMING_READY
-
-
d07433f0-a98e-11d2-917a-00a0c9068ff3
-
Das Medien-Spin-up wird ausgeführt.
-
-
GUID_IO_DEVICE_EXTERNAL_REQUEST
-
-
d07433d0-a98e-11d2-917a-00a0c9068ff3
-
Es gibt mehrere mögliche Ursachen für dieses Ereignis; Weitere Informationen finden Sie in der T10 MMC-Spezifikation des GET EVENT STATUS NOTIFICATION Command.
-
-
GUID_IO_MEDIA_ARRIVAL
-
-
d07433c0-a98e-11d2-917a-00a0c9068ff3
-
Wechselmedien wurden dem Gerät hinzugefügt. Der dbch_data-Member ist ein Zeiger auf eine CLASS_MEDIA_CHANGE_CONTEXT-Struktur . Das NewState-Element stellt status Informationen bereit. Beispielsweise gibt der Wert MediaUnavailable an, dass die Medien nicht verfügbar sind (z. B. aufgrund einer aktiven Aufzeichnungssitzung).
Windows XP: Der dbch_data Member ist ein ULONG-Wert , der die Häufigkeit angibt, mit der Medien seit dem Systemstart geändert wurden.
-
-
GUID_IO_MEDIA_EJECT_REQUEST
-
-
d07433d1-a98e-11d2-917a-00a0c9068ff3
-
Das Laufwerk des Wechselmediums hat eine Anforderung vom Benutzer erhalten, den angegebenen Steckplatz oder das angegebene Medium auszuwerfen.
-
-
GUID_IO_MEDIA_REMOVAL
-
-
d07433c1-a98e-11d2-917a-00a0c9068ff3
-
Wechselmedien wurden vom Gerät entfernt oder sind nicht verfügbar. Der dbch_data-Member ist ein Zeiger auf eine CLASS_MEDIA_CHANGE_CONTEXT-Struktur . Das NewState-Element stellt status Informationen bereit. Beispielsweise gibt der Wert MediaUnavailable an, dass die Medien nicht verfügbar sind (z. B. aufgrund einer aktiven Aufzeichnungssitzung).
Windows XP: Der dbch_data Member ist ein ULONG-Wert , der die Häufigkeit angibt, mit der Medien seit dem Systemstart geändert wurden.
-
-
GUID_IO_VOLUME_CHANGE
-
-
7373654a-812a-11d0-bec7-08002be2092f
-
Die Volumebezeichnung wurde geändert.
-
-
GUID_IO_VOLUME_CHANGE_SIZE
-
-
3a1625be-ad03-49f1-8ef8-6bbac182d1fd
-
Die Größe des Dateisystems auf dem Volume wurde geändert.
Windows Server 2003 und Windows XP: Dieser Wert wird nicht unterstützt.
-
-
GUID_IO_VOLUME_DISMOUNT
-
-
d16a55e8-1059-11d2-8ffd-00a0c9a06d32
-
Es wird versucht, die Bereitstellung des Volumes zu aufheben. Sie sollten alle Handles für Dateien und Verzeichnisse auf dem Volume schließen. Diesem Ereignis wird nicht unbedingt ein GUID_IO_VOLUME_LOCK-Ereignis vorangestellt.
-
-
GUID_IO_VOLUME_DISMOUNT_FAILED
-
-
e3c5b178-105d-11d2-8ffd-00a0c9a06d32
-
Fehler beim Aufheben der Bereitstellung eines Volumes. Dies geschieht häufig, weil ein anderer Prozess nicht auf einen GUID_IO_VOLUME_DISMOUNT Hinweis reagiert hat, indem er seine ausstehenden Handles schließt. Da beim Aufheben der Bereitstellung ein Fehler aufgetreten ist, können Sie alle Handles für das betroffene Volume erneut öffnen.
-
-
GUID_IO_VOLUME_FVE_STATUS_CHANGE
-
-
062998b2-ee1f-4b6a-b857-e76cbbe9a6da
-
Die BitLocker-Laufwerkverschlüsselungs-status des Volumes wurde geändert. Dieses Ereignis wird signalisiert, wenn BitLocker aktiviert oder deaktiviert ist oder wenn die Verschlüsselung beginnt, beendet, angehalten oder fortgesetzt wird.
Windows Server 2003 und Windows XP: Dieser Wert wird nicht unterstützt.
-
-
GUID_IO_VOLUME_LOCK
-
-
50708874-c9af-11d1-8fef-00a0c9a06d32
-
Ein anderer Prozess versucht, das Volume zu sperren. Sie sollten alle Handles für Dateien und Verzeichnisse auf dem Volume schließen.
-
-
GUID_IO_VOLUME_LOCK_FAILED
-
-
ae2eed10-0ba8-11d2-8ffb-00a0c9a06d32
-
Beim Versuch, ein Volume zu sperren, ist ein Fehler aufgetreten. Dies geschieht häufig, weil ein anderer Prozess nicht auf ein GUID_IO_VOLUME_LOCK-Ereignis reagiert hat, indem er seine ausstehenden Handles schließt. Da die Sperre fehlgeschlagen ist, können Sie alle Handles für das betroffene Volume erneut öffnen.
-
-
GUID_IO_VOLUME_MOUNT
-
-
b5804878-1a96-11d2-8ffd-00a0c9a06d32
-
Das Volume wurde von einem anderen Prozess eingebunden. Sie können ein oder mehrere Handles dafür öffnen.
-
-
GUID_IO_VOLUME_NAME_CHANGE
-
-
2de97f83-4c06-11d2-a532-00609713055a
-
Der Volumename wurde geändert.
-
-
GUID_IO_VOLUME_NEED_CHKDSK
-
-
799a0960-0a0b-4e03-ad88-2fa7c6ce748a
-
Ein Dateisystem hat eine Beschädigung des Volumes erkannt. Die Anwendung sollte CHKDSK auf dem Volume ausführen oder den Benutzer dazu benachrichtigen.
Windows Server 2003 und Windows XP: Dieser Wert wird nicht unterstützt.
-
-
GUID_IO_VOLUME_PHYSICAL_CONFIGURATION_CHANGE
-
-
2de97f84-4c06-11d2-a532-00609713055a
-
Das physische Make-up oder der aktuelle physische Zustand des Volumes hat sich geändert.
-
-
GUID_IO_VOLUME_PREPARING_EJECT
-
-
c79eb16e-0dac-4e7a-a86c-b25ceeaa88f6
-
Das Dateisystem bereitet den Auswurf des Datenträgers vor. Beispielsweise beendet das Dateisystem einen Formatierungsvorgang im Hintergrund oder schließt die Sitzung auf einmal geschriebenen Medien.
Windows Server 2003 und Windows XP: Dieser Wert wird nicht unterstützt.
-
-
GUID_IO_VOLUME_UNIQUE_ID_CHANGE
-
-
af39da42-6622-41f5-970b-139d092fa3d9
-
Der eindeutige Bezeichner des Volumes wurde geändert. Weitere Informationen zum eindeutigen Bezeichner finden Sie unter IOCTL_MOUNTDEV_QUERY_UNIQUE_ID.
Windows Server 2008, Windows Vista, Windows Server 2003 und Windows XP: Dieser Wert wird erst unter Windows Server 2008 R2 und Windows 7 unterstützt.
-
-
GUID_IO_VOLUME_UNLOCK
-
-
9a8c3d68-d0cb-11d1-8fef-00a0c9a06d32
-
Das Volume wurde von einem anderen Prozess entsperrt. Sie können ein oder mehrere Handles dafür öffnen.
-
-
GUID_IO_VOLUME_WEARING_OUT
-
-
873113ca-1486-4508-82ac-c3b2e5297aaa
-
Die Medien verschleißen. Dieses Ereignis wird gesendet, wenn ein Dateisystem feststellt, dass die Fehlerrate auf einem Volume zu hoch ist oder der Ersatzspeicher für Fehler fast erschöpft ist.
Windows Server 2003 und Windows XP: Dieser Wert wird nicht unterstützt.
-
Hinweise
Die GUID_IO_VOLUME_DISMOUNT - und GUID_IO_VOLUME_DISMOUNT_FAILED-Ereignisse sowie das GUID_IO_VOLUME_LOCK - und GUID_IO_VOLUME_LOCK_FAILED-Ereignis hängen zusammen. Die ereignisse GUID_IO_VOLUME_DISMOUNT und GUID_IO_VOLUME_LOCK geben an, dass ein Vorgang versucht wird. Sie sollten auf die Ereignisbenachrichtigung reagieren und die durchgeführte Aktion aufzeichnen. Die ereignisse GUID_IO_VOLUME_DISMOUNT_FAILED und GUID_IO_VOLUME_LOCK_FAILED deuten darauf hin, dass der Versuch fehlgeschlagen ist. Anschließend können Sie Ihren Datensatz verwenden, um die Aktionen rückgängig zu machen, die Sie als Reaktion auf den Vorgang vorgenommen haben.
Der dbch_hdevnotify Member der DEV_BROADCAST_HANDLE-Struktur gibt das betroffene Gerät an. Beachten Sie, dass dies das von RegisterDeviceNotification zurückgegebene Gerätebenachrichtigungshandle und kein Volumehandle ist. Um Vorgänge auf dem Volume auszuführen, ordnen Sie dieses Handle dem entsprechenden Volumehandle zu.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows XP |
Unterstützte Mindestversion (Server) |
Windows Server 2003 |
Header |
|