PALLOCATE_COMMON_BUFFER_WITH_BOUNDS 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 y la asigna para que un dispositivo maestro y la CPU puedan acceder a ella. El búfer común se puede enlazar mediante una dirección lógica mínima y máxima opcional.

Sintaxis

PALLOCATE_COMMON_BUFFER_WITH_BOUNDS PallocateCommonBufferWithBounds;

PVOID PallocateCommonBufferWithBounds(
  [in]           PDMA_ADAPTER DmaAdapter,
  [in, optional] PPHYSICAL_ADDRESS MinimumAddress,
  [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
)
{...}

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, optional] MinimumAddress

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

[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.

Marca Significado
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.

Valor devuelto

Devuelve PVOID que es la dirección virtual de la memoria asignada para el búfer común. Si no se puede asignar el búfer, devuelve NULL.

Comentarios

Esta función de devolución de llamada es una versión extendida de la rutina de PALLOCATE_COMMON_BUFFER_EX . En la lista siguiente se resumen las características que solo están disponibles en la versión extendida:

  • El autor de la llamada puede especificar una dirección lógica mínima para el búfer común que se va a asignar.

  • El autor de la llamada puede proporcionar una invalidación de tipo de almacenamiento en caché que se seguirá independientemente de la plataforma de hardware.

  • El autor de la llamada puede especificar el uso de una granularidad mayor para su asignación de búfer común.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 10, versión 1803
Plataforma de destino Escritorio
Encabezado wdm.h (incluya Wdm.h)
IRQL PASSIVE_LEVEL

Consulte también

DMA_OPERATIONS

PALLOCATE_COMMON_BUFFER_EX