WdfRequestCancelSentRequest-Funktion (wdfrequest.h)

[Gilt für KMDF und UMDF]

Die WdfRequestCancelSentRequest-Methode versucht, eine E/A-Anforderung abzubrechen, die der Aufrufer zuvor an ein E/A-Ziel übermittelt hat.

Syntax

BOOLEAN WdfRequestCancelSentRequest(
  [in] WDFREQUEST Request
);

Parameter

[in] Request

Ein Handle für ein Frameworkanforderungsobjekt.

Rückgabewert

WdfRequestCancelSentRequest gibt TRUE zurück, wenn die Abbruchanforderung erfolgreich an das E/A-Ziel des Treibers übermittelt wird. Diese Methode gibt FALSE zurück, wenn die Anforderung bereits abgeschlossen oder abgebrochen wurde oder wenn der E/A-Zieltreiber WdfRequestMarkCancelable oder WdfRequestMarkCancelableEx nicht aufgerufen hat.

Eine Fehlerüberprüfung tritt auf, wenn der Treiber ein ungültiges Objekthandle bereitstellt.

Hinweise

Ein Treiber kann WdfRequestCancelSentRequest aufrufen, um zu versuchen, eine E/A-Anforderung, die er zuvor durch Aufrufen von WdfRequestSend an ein E/A-Ziel gesendet hatte, abzubrechen.

Wenn sich die Anforderung in der E/A-Zielwarteschlange befindet, bricht das Framework die Anforderung ab. Wenn das Framework die Anforderung bereits an den Treiber des E/A-Ziels übermittelt hat und dieser Treiber WdfRequestMarkCancelable oder WdfRequestMarkCancelableEx aufgerufen hat, um das Abbrechen zu aktivieren, ruft das Framework die EvtRequestCancel-Rückruffunktion dieses Treibers auf. Wenn der Treiber des Ziels nicht WdfRequestMarkCancelable oder WdfRequestMarkCancelableEx aufgerufen hat, wird die Anforderung erst abgebrochen, wenn die Anforderung abgebrochen werden kann.

Wenn der Treiber eine CompletionRoutine-Rückruffunktion für die Anforderung registriert hat, ruft das Framework die Rückruffunktion auf, nachdem die Anforderung abgebrochen wurde.

Wenn Ihr Treiber WdfRequestCancelSentRequest aufruft, muss er in der Regel die Verweisanzahl des Anforderungsobjekts erhöhen. Weitere Informationen finden Sie unter Synchronisieren des Abbruchs von gesendeten Anforderungen.

Weitere Informationen zum Abbruch von Anforderungen finden Sie unter Abbrechen von E/A-Anforderungen.

Beispiele

Das folgende Codebeispiel stammt aus dem kmdf_fx2 Beispieltreibers. Dieses Beispiel ist eine EvtIoStop-Rückruffunktion . Da dieser Treiber jede Anforderung an sein E/A-Ziel sendet, ruft die EvtIoStop-RückruffunktionWdfRequestCancelSentRequest auf, wenn das Gerät entfernt wurde.

VOID
OsrFxEvtIoStop(
    IN WDFQUEUE  Queue,
    IN WDFREQUEST  Request,
    IN ULONG  ActionFlags
    )
{
    UNREFERENCED_PARAMETER(Queue);

    if (ActionFlags & WdfRequestStopActionSuspend) {
        WdfRequestStopAcknowledge(Request, FALSE);
    } else if (ActionFlags & WdfRequestStopActionPurge) {
        WdfRequestCancelSentRequest(Request);
    }
    return;
}

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
UMDF-Mindestversion 2.0
Kopfzeile wdfrequest.h (include Wdf.h)
Bibliothek Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
DDI-Complianceregeln DriverCreate(kmdf), EvtIoStopCancel(kmdf), EvtIoStopCompleteOrStopAck(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Weitere Informationen

CompletionRoutine

EvtRequestCancel

WdfRequestMarkCancelable

WdfRequestMarkCancelableEx

WdfRequestSend