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) |