Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[Warnung: UMDF 2 ist die neueste Version von UMDF und ersetzt UMDF 1. Alle neuen UMDF-Treiber sollten mit UMDF 2 geschrieben werden. Es werden keine neuen Features zu UMDF 1 hinzugefügt, und es gibt eingeschränkte Unterstützung für UMDF 1 für neuere Versionen von Windows 10. Universelle Windows-Treiber müssen UMDF 2 verwenden. Weitere Informationen finden Sie unter Erste Schritte mit UMDF-.]
Die MarkCancelable-Methode ermöglicht das Abbrechen der E/A-Anforderung.
Syntax
void MarkCancelable(
[in] IRequestCallbackCancel *pCancelCallback
);
Parameter
[in] pCancelCallback
Ein Zeiger auf die IRequestCallbackCancel Schnittstelle, deren Methode das Framework aufruft, nachdem die E/A-Anforderung abgebrochen wurde.
Rückgabewert
Nichts
Bemerkungen
Nachdem ein Treiber eine E/A-Anforderung als Eingabe an eine IQueueCallbackRead::OnRead, IQueueCallbackWrite::OnWriteoder IQueueCallbackDeviceIoControl::OnDeviceIoControl Ereignisrückruffunktion empfängt, der Treiber kann die MarkCancelable-Methode aufrufen, um das Abbrechen der Anforderung zu ermöglichen. Später kann der Treiber die IWDFIoRequest::UnmarkCancelable Methode aufrufen, um das Abbrechen der Anforderung zu deaktivieren.
Bevor ein Treiber MarkCancelableaufruft, muss der Treiber die IRequestCallbackCancel::OnCancel-Methode implementieren.
Das Benutzermodustreiberframework (UMDF) ermöglicht nur eine IRequestCallbackCancel::OnCancel Methode pro Warteschlange. Wenn ein Treiber MarkCancelable- für Anforderungen aufruft, die einer bestimmten Warteschlange zugeordnet sind, damit das Framework diese Anforderungen abbricht, muss der Treiber einen Zeiger an die IRequestCallbackCancel Schnittstelle für dasselbe Anforderungsrückrufobjekt übergeben. Später übergibt das Framework zum Abbrechen jeder Anforderung einen Zeiger an die IWDFIoRequest Schnittstelle für die Anforderung in einem Aufruf der IRequestCallbackCancel::OnCancel-Methode des Anforderungsrückrufobjekts.
Der Treiber muss IWDFIoRequest::Completeaufrufen, entweder aus dem IRequestCallbackCancel::OnCancel-Methode oder vom regulären E/A-Abschlusspfad.
Nachdem ein Treiber MarkCancelable zum Aktivieren des Abbrechens aufgerufen hat, bleibt die Anforderung abzubrechen, während der Treiber über den Besitz des Anforderungsobjekts verfügt, es sei denn, der Treiber ruft UnmarkCancelable zum Deaktivieren des Abbrechens auf.
Wenn der Treiber die IWDFIoRequest::ForwardToIoQueue Methode aufruft, um die Anforderung an eine andere Warteschlange weiterzuleiten, gelten die folgenden Regeln:
-
Das Abbrechen von E/A-Anforderungen kann nicht aktiviert werden, wenn der Treiber die Anforderungen an eine andere Warteschlange weiterleitet.
In der Regel sollte der Treiber MarkCancelable- nicht aufrufen, um das Abbrechen einer Anforderung vor dem Aufrufen IWDFIoRequest::ForwardToIoQueuezu aktivieren. Alternativ kann der Treiber die Anforderung abbrechen. Der Treiber muss dann jedoch UnmarkCancelable aufrufen, um das Abbrechen der Anforderung zu deaktivieren, bevor IWDFIoRequest::ForwardToIoQueueaufgerufen wird.
- Während sich die Anforderung in einer zweiten Warteschlange befindet, besitzt das Framework sie und kann sie abbrechen, ohne den Treiber zu benachrichtigen.
- Nachdem das Framework die Anforderung aus der zweiten Warteschlange dequeuet und die Anforderung an den Treiber übermittelt hat, kann der Treiber MarkCancelable aufrufen, um den Abbruch zu aktivieren.
Beispiele
Im folgenden Codebeispiel wird eine Anforderung eingerichtet, damit das Framework sie abbrechen kann.
//
// The QueryInteraface should not fail.
//
(VOID)this->QueryInterface(_uuidof(IRequestCallbackCancel),
(PVOID *)&cancelCallback);
pWdfRequest->MarkCancelable(cancelCallback);
Anforderungen
Anforderung | Wert |
---|---|
Ende des Supports | In UMDF 2.0 und höher nicht verfügbar. |
Zielplattform- | Desktop |
Mindest-UMDF-Version | 1.5 |
Header- | wudfddi.h (include Wudfddi.h) |
DLL- | WUDFx.dll |
Siehe auch
IQueueCallbackDeviceIoControl::OnDeviceIoControl
IRequestCallbackCancel::OnCancel