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 è né 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 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 |
---|---|
|
Un parametro di input non è valido. |
|
Questo valore viene restituito se si verifica una delle condizioni seguenti:
|
|
Il parametro MinimumRequiredLength specifica una dimensione del buffer maggiore delle dimensioni effettive del buffer. |
Questo metodo può anche restituire altri valori NTSTATUS .
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Osservazioni
Il metodo WdfRequestRetrieveUnsafeUserOutputBuffer deve essere chiamato da un EvtIoInCallerContext funzione di callback. Dopo aver chiamato WdfRequestRetrieveUnsafeUserOutputBuffer, il driver deve chiamare WdfRequestProbeAndLockUserBufferForWrite.
Il driver può chiamare WdfRequestRetrieveUnsafeUserOutputBuffer se il codice di controllo 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 di dati in driver Framework-Based.
Esempi
Per un esempio di codice che usa WdfRequestRetrieveUnsafeUserOutputBuffer, vedere WdfRequestProbeAndLockUserBufferForRead.
Fabbisogno
Requisito | Valore |
---|---|
piattaforma di destinazione | Universale |
versione minima di KMDF | 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), Non validoReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), outputBufferAPI(kmdf) |