Partager via


WdfMemoryCreateFromLookaside, fonction (wdfmemory.h)

[S’applique uniquement à KMDF]

La méthode WdfMemoryCreateFromLookaside crée un objet mémoire framework et obtient une mémoire tampon à partir d’une liste de recherche spécifiée.

Syntaxe

NTSTATUS WdfMemoryCreateFromLookaside(
  [in]  WDFLOOKASIDE Lookaside,
  [out] WDFMEMORY    *Memory
);

Paramètres

[in] Lookaside

Handle d’un objet lookaside-list de framework obtenu en appelant WdfLookasideListCreate.

[out] Memory

Pointeur vers un emplacement qui reçoit un handle vers le nouvel objet de mémoire framework.

Valeur retournée

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

Code de retour Description
STATUS_INVALID_PARAMETER
Un paramètre non valide a été détecté.
STATUS_INSUFFICIENT_RESOURCES
La mémoire était insuffisante.
 

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

Une fois que votre pilote a appelé WdfLookasideListCreate pour créer un objet lookaside-list, le pilote peut appeler WdfMemoryCreateFromLookaside pour obtenir une mémoire tampon à partir de la liste de lookaside.

L’infrastructure fournit un handle à un objet mémoire qui représente la mémoire tampon. Lorsque l’infrastructure crée l’objet mémoire, elle utilise les attributs d’objet que le pilote a fournis lorsqu’il a appelé WdfMemoryCreateFromLookaside.

Lorsque votre pilote a terminé d’utiliser un objet de mémoire qu’il a obtenu à partir d’une liste de recherche, le pilote doit appeler WdfObjectDelete pour renvoyer l’objet mémoire à la liste de recherche.

Pour plus d’informations sur les objets de mémoire du framework et les listes de recherche, consultez Utilisation de mémoire tampons.

Si des mémoires tampons de liste de recherche sont allouées à partir du pool de mémoire paginable, la méthode WdfMemoryCreateFromLookaside doit être appelée à l’adresse IRQL <= APC_LEVEL. Sinon, la méthode peut être appelée à l’adresse IRQL <= DISPATCH_LEVEL.

Exemples

L’exemple de code suivant crée une liste de lookaside et stocke le handle de la liste dans l’espace contextuel de l’objet d’appareil défini par le pilote. Ensuite, le pilote obtient une mémoire tampon à partir de la liste de recherche.

PDRIVER_CONTEXT  driverContext;
WDFMEMORY  memHandle;

driverContext = GetDriverContext(driver);

status = WdfLookasideListCreate(
                                WDF_NO_OBJECT_ATTRIBUTES,
                                sizeof(MY_LOOKASIDE_BUFFER),
                                NonPagedPool,
                                WDF_NO_OBJECT_ATTRIBUTES,
                                MY_POOL_TAG,
                                &driverContext->LookasideListHandle
                                );
...
status = WdfMemoryCreateFromLookaside(
                                      driverContext->LookasideListHandle,
                                      &memHandle
                                      );

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
En-tête wdfmemory.h (include Wdf.h)
Bibliothèque Wdf01000.sys (consultez Gestion de version de la bibliothèque d’infrastructure.)
IRQL Consultez la section Notes.
Règles de conformité DDI DriverCreate(kmdf)

Voir aussi

WdfLookasideListCreate

WdfMemoryCreate

WdfMemoryCreatePreallocated

WdfObjectDelete