WdfMemoryCopyFromBuffer, fonction (wdfmemory.h)
[S’applique à KMDF et UMDF]
La méthode WdfMemoryCopyFromBuffer copie le contenu d’une mémoire tampon source spécifiée dans la mémoire tampon d’un objet mémoire spécifié.
Syntaxe
NTSTATUS WdfMemoryCopyFromBuffer(
[in] WDFMEMORY DestinationMemory,
[in] size_t DestinationOffset,
[in] PVOID Buffer,
[in] size_t NumBytesToCopyFrom
);
Paramètres
[in] DestinationMemory
Handle vers un objet de mémoire du framework qui représente la mémoire tampon de destination.
[in] DestinationOffset
Décalage, en octets, du début de la mémoire tampon de destination. L’opération de copie commence au décalage spécifié dans la mémoire tampon de destination.
[in] Buffer
Pointeur vers une mémoire tampon source.
[in] NumBytesToCopyFrom
Nombre d’octets à copier de la mémoire tampon source vers la mémoire tampon de destination. Cette valeur ne doit pas être supérieure à la taille de la mémoire tampon source.
Valeur retournée
WdfMemoryCopyFromBuffer 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 non valide a été détecté. |
|
Décalage d’octet que le paramètre DestinationOffset a spécifié était trop grand. |
|
La taille de la mémoire tampon de destination spécifiée par le paramètre DestinationOffset , à partir du décalage de destination, était supérieure au paramètre NumBytesToCopyFrom . |
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
L’infrastructure vérifie que la mémoire tampon de destination est suffisamment grande pour recevoir la quantité de données spécifiée par le paramètre NumBytesToCopyFrom .
Pour plus d’informations sur les objets de mémoire du framework, consultez Utilisation de mémoire tampons.
Si la mémoire tampon source ou de destination a été allouée à partir du pool de mémoire paginable, la méthode WdfMemoryCopyFromBuffer doit être appelée à l’adresse IRQL <= APC_LEVEL. Sinon, la méthode peut être appelée au niveau de n’importe quel IRQL.
Exemples
L’exemple de code suivant obtient un handle pour l’objet mémoire du framework qui représente la mémoire tampon de sortie d’une requête d’E/S, puis copie le contenu d’une autre mémoire tampon dans la mémoire tampon de sortie de la requête d’E/S.
WDFMEMORY memoryBuffer;
NTSTATUS status;
status = WdfRequestRetrieveOutputMemory(
Request,
&memoryBuffer
);
if (!NT_SUCCESS(status)) {
goto Error;
}
status = WdfMemoryCopyFromBuffer(
memoryBuffer,
0,
deviceContext->Buffer,
Length
);
if (!NT_SUCCESS(status)) {
goto Error;
}
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Universal |
Version KMDF minimale | 1.0 |
Version UMDF minimale | 2.0 |
En-tête | wdfmemory.h (include Wdf.h) |
Bibliothèque | Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF) |
IRQL | N’importe quel niveau (voir la section Remarques) |
Règles de conformité DDI | BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreate(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf) |