Freigeben über


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 zu einem Framework-Anforderungsobjekt.

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 nicht WdfRequestMarkCancelable oder WdfRequestMarkCancelableEx-aufgerufen wurde.

Wenn der Treiber ein ungültiges Objekthandle bereitstellt, tritt eine Fehlerüberprüfung auf.

Bemerkungen

Ein Treiber kann WdfRequestCancelSentRequest- aufrufen, um zu versuchen, eine E/A-Anforderung abzubrechen, die er zuvor an ein E/A-Ziel gesendet hatte, indem WdfRequestSendaufgerufen wurde.

Wenn sich die Anforderung in der E/A-Zielwarteschlange befindet, bricht das Framework die Anforderung ab. Wenn das Framework die Anforderung bereits an den I/O-Zieltreiber ü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 WdfRequestMarkCancelable oder WdfRequestMarkCancelableExnicht aufgerufen wurde, 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 in der Regel WdfRequestCancelSentRequestaufruft, muss die Referenzanzahl des Anforderungsobjekts erhöht werden. Weitere Informationen finden Sie unter Synchronisieren des Abbruchs von gesendeten Anforderungen.

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

Beispiele

Das folgende Codebeispiel stammt aus dem kmdf_fx2 Beispieltreiber. Dieses Beispiel ist eine EvtIoStop- Rückruffunktion. Da dieser Treiber jede Anforderung an das E/A-Ziel sendet, ruft die EvtIoStop Rückruffunktion WdfRequestCancelSentRequest, 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- Universal
Minimale KMDF-Version 1.0
Mindest-UMDF-Version 2.0
Header- wdfrequest.h (include Wdf.h)
Library 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)

Siehe auch

CompletionRoutine-

EvtRequestCancel

WdfRequestMarkCancelable

WdfRequestMarkCancelableEx-

WdfRequestSend-