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.

  1. Behandeln Sie die Ereignisdaten als DEV_BROADCAST_HDR-Struktur . Vergewissern Sie sich, dass das dbch_devicetype-Element auf DBT_DEVTYP_HANDLE festgelegt ist.
  2. Wenn dbch_devicetypeDBT_DEVTYP_HANDLE ist, sind die Ereignisdaten tatsächlich ein Zeiger auf eine DEV_BROADCAST_HANDLE-Struktur .
  3. 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
IoEvent.h