Compartir a través de


PALLOCATE_DOMAIN_COMMON_BUFFER función de devolución de llamada (wdm.h)

Esta función de devolución de llamada asigna la memoria de un búfer común de dominio.

Sintaxis

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
)
{...}

Parámetros

[in] DmaAdapter

Puntero a una estructura de DMA_ADAPTER. Esta estructura es el objeto de adaptador que representa el dispositivo DMA maestro de bus del controlador o el canal DMA del sistema. El autor de la llamada obtuvo este puntero de una llamada anterior a la rutina IoGetDmaAdapter .

[in] DomainHandle

Identificador del dominio DMA que el autor de la llamada obtuvo de una llamada anterior a PGET_DMA_DOMAIN.

[in, optional] MaximumAddress

Puntero a una variable que contiene la dirección lógica máxima para el búfer común. Este parámetro indica que el búfer debe asignarse desde la memoria debajo de esta dirección. Este parámetro es opcional y se puede especificar como NULL para indicar que no hay ninguna dirección máxima.

[in] Length

Tamaño, en bytes, del búfer común que se va a asignar para la operación DMA.

[in] Flags

Tamaño, en bytes, del búfer común que se va a asignar para la operación DMA.

Los valores posibles son:

  • DOMAIN_COMMON_BUFFER_LARGE_PAGE

    El búfer común se asignará mediante una granularidad de página mayor de PAGE_SIZE * 512. Tenga en cuenta que esto puede aumentar la posibilidad de que la asignación no se realice correctamente.

[in, optional] CacheType

Puntero a una enumeración MEMORY_CACHING_TYPE que indica si la rutina debe habilitar o deshabilitar la memoria almacenada en caché en el búfer común que se va a asignar. Solo se admiten los valores de MmNonCached y MmCached . El parámetro es opcional y se puede especificar como NULL para especificar que el almacenamiento en caché dependerá del valor predeterminado de la plataforma de hardware.

[in] PreferredNode

Nodo NUMA preferido desde el que se asignará la memoria. Si N es el número de nodos NUMA en un sistema multiprocesador, PreferredNode es un número del intervalo entre 0 y N-1. Para un sistema de un procesador o un sistema multiprocesador que no sea NUMA, establezca PreferredNode en cero.

[out] LogicalAddress

Puntero a una variable en la que esta rutina escribe la dirección lógica que el dispositivo puede usar para acceder al búfer común. El dispositivo DMA debe usar esta dirección lógica en lugar de la dirección física que devuelve una rutina como MmGetPhysicalAddress.

[out] VirtualAddress

Puntero a una variable en la que esta rutina escribe la dirección virtual correspondiente del búfer asignado.

Valor devuelto

Devuelve STATUS_SUCCESS si la llamada se realiza correctamente. De lo contrario, devuelve un valor NTSTATUS adecuado.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10
Encabezado wdm.h (incluya Wdm.h)
IRQL PASSIVE_LEVEL