WdfRequestRetrieveUnsafeUserInputBuffer, fonction (wdfrequest.h)

[S’applique uniquement à KMDF]

La méthode WdfRequestRetrieveUnsafeUserInputBuffer récupère la mémoire tampon d’entrée d’une demande d’E/S, si la technique de la demande pour accéder aux mémoires tampons de données n’est ni mise en mémoire tampon ni E/S directe.

Syntaxe

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

Paramètres

[in] Request

Handle d’un objet de requête d’infrastructure.

[in] MinimumRequiredLength

Taille de mémoire tampon minimale, en octets, dont le pilote a besoin pour traiter la demande d’E/S.

[out] InputBuffer

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 retournée

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

Code de retour 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.

Un bogue case activée se produit si le pilote fournit un handle d’objet non valide.

Remarques

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

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

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

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

Exemples

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

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
En-tête wdfrequest.h (include Wdf.h)
Bibliothèque Wdf01000.sys (consultez Gestion de version de la bibliothèque d’infrastructure.)
IRQL PASSIVE_LEVEL
Règles de conformité 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)

Voir aussi

EvtIoInCallerContext

WdfRequestProbeAndLockUserBufferForRead

WdfRequestRetrieveUnsafeUserOutputBuffer