Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
[S’applique à KMDF et UMDF]
La méthode WdfMemoryAssignBuffer affecte une mémoire tampon spécifiée à un objet mémoire créé par un pilote créé en appelant WdfMemoryCreatePreallocated.
Syntaxe
NTSTATUS WdfMemoryAssignBuffer(
[in] WDFMEMORY Memory,
[in] PVOID Buffer,
[in] size_t BufferSize
);
Paramètres
[in] Memory
Handle vers un objet de mémoire de framework obtenu en appelant WdfMemoryCreatePreallocated.
[in] Buffer
Pointeur vers une mémoire tampon fournie par le pilote.
[in] BufferSize
Taille différente de zéro, en octets, de la mémoire tampon vers laquelle tampon pointe.
Valeur de retour
WdfMemoryAssignBuffer 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é. |
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 peut affecter une mémoire tampon à un objet mémoire qui WdfMemoryCreatePreallocated créé, mais pas à un objet mémoire qui WdfMemoryCreate créé.
Mémoire tampon à laquelle le tampon points de paramètres peuvent être alloués à partir du pool de mémoire paginable ou non paginable. Si le pilote alloue la mémoire tampon à partir du pool paginable ou si la mémoire tampon provient d’un pool paginable, car elle provient d’une application en mode utilisateur, le pilote doit accéder à la mémoire tampon uniquement au niveau du < DISPATCH_LEVEL IRQL. (Notez que les fonctions de rappel EvtCleanupCallback et EvtDestroyCallback, le cas échéant, peuvent être appelées à IRQL <= DISPATCH_LEVEL.)
Pour plus d’informations sur les objets de mémoire du framework, consultez Utilisation des mémoires tampons.
Exemples
L’exemple de code suivant alloue une mémoire tampon, puis affecte la mémoire tampon à un objet mémoire du framework.
PVOID pNewBuffer = NULL;
pNewBuffer = ExAllocatePoolWithTag(
NonPagedPool,
NEW_BUFFER_SIZE,
MY_DRIVER_TAG
);
if (pNewBuffer == NULL){
goto Error;
}
status = WdfMemoryAssignBuffer(
memHandle,
pNewBuffer,
NEW_BUFFER_SIZE
);
Spécifications
| Besoin | Valeur |
|---|---|
| plateforme cible | Universel |
| version minimale de KMDF | 1.0 |
| version minimale de UMDF | 2.0 |
| En-tête | wdfmemory.h (include Wdf.h) |
| Bibliothèque | Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF) |
| IRQL | N’importe quel niveau |
| règles de conformité DDI | BufAfterReqCompletedIntIoctlA(kmdf), BufAfterReqCompletedIoctlA(kmdf), BufAfterReqCompletedReadA(kmdf), BufAfterReqCompletedWriteA(kmdf), DriverCreCreA(kmdf)ate(kmdf), MemAfterReqCompletedIntIoctlA(kmdf), MemAfterReqCompletedIoctlA(kmdf), MemAfterReqCompletedReadA(kmdf), MemAfterReqCompletedWriteA(kmdf) |