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.
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
)
{...}
[in] DmaAdapter
Puntero a una estructura 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 rutinaIoGetDmaAdapter.
[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 del 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.
Entre los valores posibles se incluyen:
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 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 va a 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 solo procesador o un sistema de varios procesadores 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 devuelta por 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.
Devuelve STATUS_SUCCESS si la llamada se realiza correctamente. De lo contrario, devuelve un valor NTSTATUS adecuado .
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 10 |
encabezado de | wdm.h (incluya Wdm.h) |
irQL | PASSIVE_LEVEL |