Condividi tramite


Funzione WdfRequestRetrieveUnsafeUserOutputBuffer (wdfrequest.h)

[Si applica solo a KMDF]

Il metodo WdfRequestRetrieveUnsafeUserOutputBuffer recupera il buffer di output di una richiesta di I/O, se la tecnica della richiesta per l'accesso ai buffer di dati non è memorizzata nel buffer né nell'I/O diretto.

Sintassi

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

Parametri

[in] Request

Handle per un oggetto richiesta del framework.

[in] MinimumRequiredLength

Dimensioni minime del buffer, in byte, che il driver deve elaborare la richiesta di I/O.

[out] OutputBuffer

Puntatore a una posizione che riceve l'indirizzo del buffer.

[out, optional] Length

Puntatore a una posizione che riceve le dimensioni del buffer, in byte. Questo parametro è facoltativo e può essere NULL.

Valore restituito

WdfRequestRetrieveUnsafeUserOutputBuffer restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, questo metodo potrebbe restituire uno dei valori seguenti:

Codice restituito Descrizione
STATUS_INVALID_PARAMETER
Un parametro di input non è valido.
STATUS_INVALID_DEVICE_REQUEST
Questo valore viene restituito se si verifica una delle condizioni seguenti:
STATUS_BUFFER_TOO_SMALL
Il parametro MinimumRequiredLength specifica una dimensione del buffer maggiore delle dimensioni effettive del buffer.
 

Questo metodo potrebbe anche restituire altri valori NTSTATUS.

Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.

Commenti

Il metodo WdfRequestRetrieveUnsafeUserOutputBuffer deve essere chiamato da una funzione di callback EvtIoInCallerContext . Dopo aver chiamato WdfRequestRetrieveUnsafeUserOutputBuffer, il driver deve chiamare WdfRequestProbeAndLockUserBufferForWrite.

Il driver può chiamare WdfRequestRetrieveUnsafeUserOutputBuffer se il codice di controllo di I/O di una richiesta è IRP_MJ_READ o IRP_MJ_DEVICE_CONTROL.

Il driver può accedere al buffer recuperato fino a quando non completa la richiesta di I/O rappresentata dal parametro Request .

Per altre informazioni su WdfRequestRetrieveUnsafeUserOutputBuffer, vedere Accesso ai buffer dei dati nei driver Framework-Based.

Esempio

Per un esempio di codice che usa WdfRequestRetrieveUnsafeUserOutputBuffer, vedere WdfRequestProbeAndLockUserBufferForRead.

Requisiti

Requisito Valore
Piattaforma di destinazione Universale
Versione KMDF minima 1.0
Intestazione wdfrequest.h (include Wdf.h)
Libreria Wdf01000.sys (vedere Controllo delle versioni della libreria framework).
IRQL PASSIVE_LEVEL
Regole di conformità DDI 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)

Vedi anche

EvtIoInCallerContext

WdfRequestProbeAndLockUserBufferForWrite

WdfRequestRetrieveUnsafeUserInputBuffer