Freigeben über


WdfRequestRetrieveUnsafeUserOutputBuffer-Funktion (wdfrequest.h)

[Gilt nur für KMDF]

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

Syntax

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

Parameter

[in] Request

Ein Handle zu einem Framework-Anforderungsobjekt.

[in] MinimumRequiredLength

Die minimale Puffergröße in Bytes, die der Treiber für die Verarbeitung 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 eine Position, die die Größe des Puffers in Byte empfängt. Dieser Parameter ist optional und kann NULL-werden.

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-Wertezurückgeben.

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

Bemerkungen

Die WdfRequestRetrieveUnsafeUserOutputBuffer Methode muss von einer EvtIoInCallerContext- Rückruffunktion aufgerufen werden. Nach dem Aufrufen WdfRequestRetrieveUnsafeUserOutputBuffermuss der Treiber WdfRequestProbeAndLockUserBufferForWriteaufrufen.

Der Treiber kann WdfRequestRetrieveUnsafeUserOutputBuffer aufrufen, wenn der E/A-Steuercode einer Anforderung IRP_MJ_READ oder IRP_MJ_DEVICE_CONTROList.

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

Weitere Informationen zu WdfRequestRetrieveUnsafeUserOutputBufferfinden Sie unter Zugreifen auf Datenpuffer in Framework-Based Drivers.

Beispiele

Ein Codebeispiel, das WdfRequestRetrieveUnsafeUserOutputBufferverwendet, finden Sie unter WdfRequestProbeAndLockUserBufferForRead.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Minimale KMDF-Version 1.0
Header- wdfrequest.h (include Wdf.h)
Library Wdf01000.sys (siehe Framework-Bibliotheksversionsverwaltung.)
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)-

Siehe auch

EvtIoInCallerContext

WdfRequestProbeAndLockUserBufferForWrite

WdfRequestRetrieveUnsafeUserInputBuffer