Share via


Steuern des Status eines allgemeinen E/A-Ziels in UMDF

Warnung

UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. UMDF 1 werden keine neuen Features hinzugefügt, und die Unterstützung für UMDF 1 für neuere Versionen von Windows 10 ist eingeschränkt. Universelle Windows-Treiber müssen UMDF 2 verwenden.

Die archivierten UMDF 1-Beispiele finden Sie im Windows 11, Version 22H2 – Mai 2022 Treiberbeispiele Update.

Weitere Informationen finden Sie unter Erste Schritte mit UMDF.

Das Framework definiert die folgenden Zustände für allgemeine E/A-Ziele:

Begann
Das E/A-Ziel ist offen (d. h. für den UMDF-Treiber verfügbar), und der Treiber kann E/A-Anforderungen an dieses senden. Das Framework übermittelt die Anforderungen an den entsprechenden Treiber.

Gestoppt
Das E/A-Ziel ist geöffnet, aber der UMDF-Treiber kann keine E/A-Anforderungen an das E/A-Ziel senden, es sei denn, der Treiber übergibt das WDF_REQUEST_SEND_OPTION_IGNORE_TARGET_STATE-Flag an den Flags-Parameter in einem Aufruf der IWDFIoRequest::Send-Methode .

Das Framework beendet die Übermittlung von Anforderungen an den entsprechenden Treiber.

Geschlossen für Query-Remove
Das E/A-Ziel wird vorübergehend geschlossen, da das Gerät möglicherweise bald entfernt wird.

Geschlossen
Das E/A-Ziel ist geschlossen und kann nicht gestartet oder beendet werden.

Gelöscht
Das Gerät des E/A-Ziels wurde entfernt.

Die WDF_IO_TARGET_STATE-Enumeration definiert die Werte, die diese Zustände darstellen.

Lokale E/A-Zielzustände

Das Framework wird automatisch geöffnet und startet lokale E/A-Ziele.

Bei Bedarf kann der Treiber IWDFIoTargetStateManagement::Stop aufrufen, um ein lokales E/A-Ziel vorübergehend zu beenden, und IWDFIoTargetStateManagement::Start aufrufen, um es neu zu starten. Beispielsweise kann der Treiber ein lokales E/A-Ziel beenden, wenn er eine temporäre Fehlerbedingung erkennt, und dann das E/A-Ziel neu starten, wenn die Fehlerbedingung korrigiert wird.

Wenn das Gerät eines lokalen E/A-Ziels entfernt wird, beendet und schließt das Framework automatisch das E/A-Ziel und bricht alle E/A-Anforderungen ab, die sich in der Warteschlange des Ziels befinden. Das Framework benachrichtigt den Treiber, dass das Gerät nicht mehr verfügbar ist, indem Die Rückruffunktionen für Geräteobjektereignisse aufgerufen werden. Weitere Informationen zu diesen Rückruffunktionen finden Sie unter PnP- und Energieverwaltungsszenarien in UMDF.

Treiber können IWDFIoTargetStateManagement::GetState aufrufen, um den aktuellen Zustand eines lokalen E/A-Ziels abzurufen.

Remote-E/A-Zielzustände

Treiber müssen IWDFRemoteTarget::OpenFileByName oder IWDFRemoteTarget::OpenRemoteInterface aufrufen, um Remote-E/A-Ziele zu öffnen. Wenn ein Treiber ein Remote-E/A-Ziel öffnet, startet das Framework das E/A-Ziel automatisch.

Bei Bedarf kann der Treiber IWDFRemoteTarget::Stop aufrufen, um ein Remote-E/A-Ziel vorübergehend zu beenden, und IWDFRemoteTarget::Start aufrufen, um es neu zu starten.

Wenn das Gerät eines Remote-E/A-Ziels entfernt wird, stoppt und schließt das Framework das E/A-Ziel automatisch und bricht alle E/A-Anforderungen ab, die sich in der Warteschlange des Ziels befinden, es sei denn, der Treiber registriert die folgenden Ereignisrückruffunktionen:

IRemoteTargetCallbackRemoval::OnRemoteTargetQueryRemove
Informiert den Treiber darüber, dass das Gerät eines Remote-E/A-Ziels möglicherweise entfernt wird. Ihr Treiber muss IWDFRemoteTarget::CloseForQueryRemove aufrufen, wenn der Treiber das Entfernen des Geräts zulassen soll.

IRemoteTargetCallbackRemoval::OnRemoteTargetRemoveComplete
Informiert den Treiber darüber, dass das Gerät eines Remote-E/A-Ziels entfernt wurde. Diese Rückruffunktion muss IWDFRemoteTarget::Close aufrufen.

IRemoteTargetCallbackRemoval::OnRemoteTargetRemoveCanceled
Informiert den Treiber darüber, dass der Versuch, das Gerät eines Remote-E/A-Ziels zu entfernen, abgebrochen wurde. Wenn der Treiber das Ziel weiterhin verwenden soll, muss der Treiber IWDFRemoteTarget::Reopen aufrufen. In der Regel ruft ein Treiber "Reopen" aus der OnRemoteTargetRemoveCanceled-Rückruffunktion auf, aber reopen kann stattdessen aufgerufen werden, nachdem OnRemoteTargetRemoveCanceled zurückgibt .

Treiber können IWDFRemoteTarget::GetState aufrufen, um den aktuellen Status eines Remote-E/A-Ziels abzurufen.