Compartir a través de


Función WdfRequestRetrieveUnsafeUserInputBuffer (wdfrequest.h)

[Solo se aplica a KMDF]

El método WdfRequestRetrieveUnsafeUserInputBuffer recupera el búfer de entrada de una solicitud de E/S, si la técnica de la solicitud para acceder a los búferes de datos no está almacenada en búfer ni en E/S directa.

Sintaxis

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

Parámetros

[in] Request

Identificador de un objeto de solicitud de marco.

[in] MinimumRequiredLength

Tamaño mínimo del búfer, en bytes, que el controlador necesita procesar la solicitud de E/S.

[out] InputBuffer

Puntero a una ubicación que recibe la dirección del búfer.

[out, optional] Length

Puntero a una ubicación que recibe el tamaño del búfer, en bytes. Este parámetro es opcional y puede ser NULL.

Valor devuelto

WdfRequestRetrieveUnsafeUserInputBuffer devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, este método podría devolver uno de los siguientes valores:

Código devuelto Descripción
STATUS_INVALID_PARAMETER
Un parámetro de entrada no es válido.
STATUS_INVALID_DEVICE_REQUEST
Este valor se devuelve si se produce una de las siguientes acciones:
STATUS_BUFFER_TOO_SMALL
El parámetro MinimumRequiredLength especifica un tamaño de búfer mayor que el tamaño real del búfer.
 

Este método también podría devolver otros valores NTSTATUS.

Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.

Comentarios

Se debe llamar al método WdfRequestRetrieveUnsafeUserInputBuffer desde una función de devolución de llamada EvtIoInCallerContext . Después de llamar a WdfRequestRetrieveUnsafeUserInputBuffer, el controlador debe llamar a WdfRequestProbeAndLockUserBufferForRead.

El controlador puede llamar a WdfRequestRetrieveUnsafeUserInputBuffer si el código de control de E/S de una solicitud está IRP_MJ_WRITE o IRP_MJ_DEVICE_CONTROL.

El controlador puede acceder al búfer recuperado hasta que complete la solicitud de E/S que representa el parámetro Request .

Para obtener más información sobre WdfRequestRetrieveUnsafeUserInputBuffer, consulte Acceso a búferes de datos en controladores de Framework-Based.

Ejemplos

Para obtener un ejemplo de código que usa WdfRequestRetrieveUnsafeUserInputBuffer, vea WdfRequestProbeAndLockUserBufferForRead.

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Encabezado wdfrequest.h (incluya Wdf.h)
Library Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos).
IRQL PASSIVE_LEVEL
Reglas de cumplimiento de DDI BufAfterReqCompletedIntIoctl(kmdf), BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctl(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedRead(kmdf), BufAfterReqCompletedWrite(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), InputBufferAPI(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Consulte también

EvtIoInCallerContext

WdfRequestProbeAndLockUserBufferForRead

WdfRequestRetrieveUnsafeUserOutputBuffer