WdfRequestRetrieveUnsafeUserOutputBuffer, fonction (wdfrequest.h)
[S’applique uniquement à KMDF]
La méthode WdfRequestRetrieveUnsafeUserOutputBuffer récupère la mémoire tampon de sortie 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 WdfRequestRetrieveUnsafeUserOutputBuffer(
[in] WDFREQUEST Request,
[in] size_t MinimumRequiredLength,
[out] PVOID *OutputBuffer,
[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] 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 retournée
WdfRequestRetrieveUnsafeUserOutputBuffer retourne STATUS_SUCCESS si l’opération réussit. Sinon, cette méthode peut retourner l’une des valeurs suivantes :
Code de retour | Description |
---|---|
|
Un paramètre d’entrée n’est pas valide. |
|
Cette valeur est retournée si l’une des opérations suivantes se produit :
|
|
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 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’il termine la demande d’E/S que représente le paramètre Request .
Pour plus d’informations sur WdfRequestRetrieveUnsafeUserOutputBuffer, consultez Accès aux mémoires tampons de données dans les pilotes Framework-Based.
Exemples
Pour obtenir un exemple de code qui utilise WdfRequestRetrieveUnsafeUserOutputBuffer, 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), BufAfterReqCompletedReadA(kmdf),BufAfterReqCompletedWrite(kmdf),DriverCreate(kmdf), InvalidReqAccess(kmdf), InvalidReqAccessLocal(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), OutputBufferAPI(kmdf) |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour