Partager via


PALLOCATE_DOMAIN_COMMON_BUFFER fonction de rappel (wdm.h)

Cette fonction de rappel alloue la mémoire pour une mémoire tampon commune de domaine.

Syntaxe

PALLOCATE_DOMAIN_COMMON_BUFFER PallocateDomainCommonBuffer;

NTSTATUS PallocateDomainCommonBuffer(
  [in]           PDMA_ADAPTER DmaAdapter,
  [in]           HANDLE DomainHandle,
  [in, optional] PPHYSICAL_ADDRESS MaximumAddress,
  [in]           ULONG Length,
  [in]           ULONG Flags,
  [in, optional] MEMORY_CACHING_TYPE *CacheType,
  [in]           NODE_REQUIREMENT PreferredNode,
  [out]          PPHYSICAL_ADDRESS LogicalAddress,
  [out]          PVOID *VirtualAddress
)
{...}

Paramètres

[in] DmaAdapter

Pointeur vers une structure DMA_ADAPTER. Cette structure est l’objet d’adaptateur qui représente le périphérique DMA master bus ou le canal DMA système du pilote. L’appelant a obtenu ce pointeur à partir d’un appel précédent à la routine IoGetDmaAdapter .

[in] DomainHandle

Handle du domaine DMA que l’appelant a obtenu à partir d’un appel précédent à PGET_DMA_DOMAIN.

[in, optional] MaximumAddress

Pointeur vers une variable qui contient l’adresse logique maximale pour la mémoire tampon commune. Ce paramètre indique que la mémoire tampon doit être allouée à partir de la mémoire située sous cette adresse. Ce paramètre est facultatif et peut être spécifié comme NULL pour indiquer qu’il n’y a pas d’adresse maximale.

[in] Length

Taille, en octets, de la mémoire tampon commune à allouer pour l’opération DMA.

[in] Flags

Taille, en octets, de la mémoire tampon commune à allouer pour l’opération DMA.

Les valeurs possibles incluent :

  • DOMAIN_COMMON_BUFFER_LARGE_PAGE

    La mémoire tampon commune sera allouée à l’aide d’une granularité de page plus grande de PAGE_SIZE * 512. Notez que cela peut augmenter le risque d’échec de l’allocation.

[in, optional] CacheType

Pointeur vers une énumération MEMORY_CACHING_TYPE indiquant si la routine doit activer ou désactiver la mémoire mise en cache dans la mémoire tampon commune à allouer. Seules les valeurs de MmNonCached et MmCached sont prises en charge. Le paramètre est facultatif et peut être spécifié comme NULL pour spécifier que la mise en cache dépend de la plateforme matérielle par défaut.

[in] PreferredNode

Nœud NUMA préféré à partir duquel la mémoire doit être allouée. Si N est le nombre de nœuds NUMA dans un système multiprocesseur, PreferredNode est un nombre compris entre 0 et N–1. Pour un système monoprocesseur ou un système multiprocesseur non NUMA, définissez PreferredNode sur zéro.

[out] LogicalAddress

Pointeur vers une variable dans laquelle cette routine écrit l’adresse logique que l’appareil peut utiliser pour accéder à la mémoire tampon commune. L’appareil DMA doit utiliser cette adresse logique au lieu de l’adresse physique retournée par une routine telle que MmGetPhysicalAddress.

[out] VirtualAddress

Pointeur vers une variable dans laquelle cette routine écrit l’adresse virtuelle correspondante de la mémoire tampon allouée.

Valeur retournée

Retourne STATUS_SUCCESS si l’appel réussit. Sinon, il retourne une valeur NTSTATUS appropriée.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 10
En-tête wdm.h (inclure Wdm.h)
IRQL PASSIVE_LEVEL