Partager via


WdfRequestRetrieveUnsafeUserOutputBuffer, fonction (wdfrequest.h)

[S’applique uniquement à KMDF]

La méthode WdfRequestRetrieveUnsafeUserOutputBuffer récupère la mémoire tampon de sortie d’une requête d’E/S, si la technique de la demande d’accès aux mémoires tampons de données n’est ni mise en mémoire tampon nid’E/S directes.

Syntaxe

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

Paramètres

[in] Request

Handle vers un objet de requête de framework.

[in] MinimumRequiredLength

Taille minimale de la mémoire tampon, en octets, que le pilote doit traiter la requête d’E/S.

[out] OutputBuffer

Pointeur vers un emplacement qui reçoit l’adresse de la mémoire tampon.

[out, optional] Length

Pointeur vers un emplacement qui reçoit la taille de la mémoire tampon, en octets. Ce paramètre est facultatif et peut être NULL.

Valeur de retour

WdfRequestRetrieveUnsafeUserOutputBuffer retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner l’une des valeurs suivantes :

Retourner le code Description
STATUS_INVALID_PARAMETER
Un paramètre d’entrée n’est pas valide.
STATUS_INVALID_DEVICE_REQUEST
Cette valeur est retournée si l’une des opérations suivantes se produit :
STATUS_BUFFER_TOO_SMALL
Le paramètre MinimumRequiredLength spécifie une taille de mémoire tampon supérieure à la taille réelle de la mémoire tampon.
 

Cette méthode peut également retourner d’autres valeurs NTSTATUS .

Une vérification de bogue se produit si le pilote fournit un handle d’objet non valide.

Remarques

La méthode WdfRequestRetrieveUnsafeUserOutputBuffer doit être appelée à partir d’une fonction de rappel EvtIoInCallerContext. Après avoir appelé WdfRequestRetrieveUnsafeUserOutputBuffer, le pilote doit appeler WdfRequestProbeAndLockUserBufferForWrite.

Le pilote peut appeler WdfRequestRetrieveUnsafeUserOutputBuffer si le code de contrôle d’E/S d’une requête est IRP_MJ_READ ou IRP_MJ_DEVICE_CONTROL.

Le pilote peut accéder à la mémoire tampon récupérée jusqu’à ce qu’elle termine la requête d’E/S que le paramètre de demande de représente.

Pour plus d’informations sur WdfRequestRetrieveUnsafeUserOutputBuffer, consultez Accès aux mémoires tampons de données dans Framework-Based Drivers.

Exemples

Pour obtenir un exemple de code qui utilise WdfRequestRetrieveUnsafeUserOutputBuffer, consultez WdfRequestProbeAndLockUserBufferForRead.

Exigences

Exigence Valeur
plateforme cible Universel
version minimale de KMDF 1.0
d’en-tête wdfrequest.h (include Wdf.h)
bibliothèque Wdf01000.sys (voir Versioning de la bibliothèque Framework.)
IRQL PASSIVE_LEVEL
règles de conformité DDI BufAfterReqCompletedIntIoctl(kmdf), BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctl(km), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedRead(kmdf), BufAfterReqCompletedReadA (kmdf), BufAfterReqCompletedWrite(kmdf), DriverCreate(kmdf), InvalidReqAccess(kmdf), Non valide, KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), OutputBufferAPI(kmdf)

Voir aussi

EvtIoInCallerContext

WdfRequestProbeAndLockUserBufferForWrite

WdfRequestRetrieveUnsafeUserInputBuffer