Partager via


WdfMemoryAssignBuffer, fonction (wdfmemory.h)

[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
STATUS_INVALID_PARAMETER
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)

Voir aussi

ExAllocatePoolWithTag

WdfMemoryCreatePreallocated