WdfRequestRetrieveUnsafeUserOutputBuffer-Funktion (wdfrequest.h)

[Gilt nur für KMDF]

Die WdfRequestRetrieveUnsafeUserOutputBuffer-Methode ruft den Ausgabepuffer einer E/A-Anforderung ab, wenn die Technik der Anforderung für den Zugriff auf Datenpuffer weder gepuffert noch direkte E/A-Vorgänge ist.

Syntax

NTSTATUS WdfRequestRetrieveUnsafeUserOutputBuffer(
  [in]            WDFREQUEST Request,
  [in]            size_t     MinimumRequiredLength,
  [out]           PVOID      *OutputBuffer,
  [out, optional] size_t     *Length
);

Parameter

[in] Request

Ein Handle für ein Frameworkanforderungsobjekt.

[in] MinimumRequiredLength

Die minimale Puffergröße in Bytes, die der Treiber zum Verarbeiten der E/A-Anforderung benötigt.

[out] OutputBuffer

Ein Zeiger auf eine Position, die die Adresse des Puffers empfängt.

[out, optional] Length

Ein Zeiger auf einen Speicherort, der die Größe des Puffers in Bytes empfängt. Dieser Parameter ist optional und kann NULL sein.

Rückgabewert

WdfRequestRetrieveUnsafeUserOutputBuffer gibt STATUS_SUCCESS zurück, wenn der Vorgang erfolgreich ist. Andernfalls gibt diese Methode möglicherweise einen der folgenden Werte zurück:

Rückgabecode Beschreibung
STATUS_INVALID_PARAMETER
Ein Eingabeparameter ist ungültig.
STATUS_INVALID_DEVICE_REQUEST
Dieser Wert wird zurückgegeben, wenn einer der folgenden Aktionen auftritt:
STATUS_BUFFER_TOO_SMALL
Der Parameter MinimumRequiredLength gibt eine Puffergröße an, die größer als die tatsächliche Größe des Puffers ist.
 

Diese Methode kann auch andere NTSTATUS-Werte zurückgeben.

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

Hinweise

Die WdfRequestRetrieveUnsafeUserOutputBuffer-Methode muss von einer EvtIoInCallerContext-Rückruffunktion aufgerufen werden. Nach dem Aufruf von WdfRequestRetrieveUnsafeUserOutputBuffer muss der Treiber WdfRequestProbeAndLockUserBufferForWrite aufrufen.

Der Treiber kann WdfRequestRetrieveUnsafeUserOutputBuffer aufrufen, wenn der E/A-Steuerungscode einer Anforderung IRP_MJ_READ oder IRP_MJ_DEVICE_CONTROL ist.

Der Treiber kann auf den abgerufenen Puffer zugreifen, bis er die E/A-Anforderung abgeschlossen hat, die der Request-Parameter darstellt.

Weitere Informationen zu WdfRequestRetrieveUnsafeUserOutputBuffer finden Sie unter Zugreifen auf Datenpuffer in Framework-Based Treibern.

Beispiele

Ein Codebeispiel, das WdfRequestRetrieveUnsafeUserOutputBuffer verwendet, finden Sie unter WdfRequestProbeAndLockUserBufferForRead.

Anforderungen

Anforderung Wert
Zielplattform Universell
KMDF-Mindestversion 1.0
Kopfzeile wdfrequest.h (einschließen von Wdf.h)
Bibliothek Wdf01000.sys (siehe Versionierung der Frameworkbibliothek.)
IRQL PASSIVE_LEVEL
DDI-Complianceregeln BufAfterReqCompletedIntIoctl(kmdf), BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctl(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedRead(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWrite(kmdf), DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), OutputBufferAPI(kmdf)

Weitere Informationen

EvtIoInCallerContext

WdfRequestProbeAndLockUserBufferForWrite

WdfRequestRetrieveUnsafeUserInputBuffer