PALLOCATE_DOMAIN_COMMON_BUFFER回调函数 (wdm.h)

此回调函数为域公共缓冲区分配内存。

语法

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

指向DMA_ADAPTER结构的指针。 此结构是表示驱动程序总线主 DMA 设备或系统 DMA 通道的适配器对象。 调用方从对 IoGetDmaAdapter 例程的上一次调用中获取了此指针。

[in] DomainHandle

调用方从上一次调用中获取的对 PGET_DMA_DOMAIN的 DMA 域的句柄。

[in, optional] MaximumAddress

指向包含公共缓冲区最大逻辑地址的变量的指针。 此参数指示缓冲区应从此地址下面的内存中分配。 此参数是可选的,可以指定为 NULL,以指示没有最大地址。

[in] Length

要为 DMA作分配的公共缓冲区的大小(以字节为单位)。

[in] Flags

要为 DMA作分配的公共缓冲区的大小(以字节为单位)。

可能的值包括:

  • DOMAIN_COMMON_BUFFER_LARGE_PAGE

    将使用更大页面粒度的 PAGE_SIZE * 512 分配公共缓冲区。 请注意,这会增加分配失败的可能性。

[in, optional] CacheType

指向 MEMORY_CACHING_TYPE 枚举的指针,指示例程在要分配的公共缓冲区中是否必须启用或禁用缓存内存。 仅支持 mmNonCachedmmCached 的值。 该参数是可选的,可以指定为 NULL 来指定缓存将取决于硬件平台默认值。

[in] PreferredNode

要从中分配内存的首选 NUMA 节点。 如果 N 是多处理器系统中的 NUMA 节点数,则 PreferredNode 是范围 0 到 N–1 中的数字。 对于单处理器系统或非 NUMA 多处理器系统,请将 PreferredNode 设置为零。

[out] LogicalAddress

指向此例程写入设备可用于访问公共缓冲区的逻辑地址的变量的指针。 DMA 设备应使用此逻辑地址,而不是由例程(如 MmGetPhysicalAddress)返回的物理地址。

[out] VirtualAddress

指向此例程写入所分配缓冲区的相应虚拟地址的变量的指针。

返回值

如果调用成功,则返回STATUS_SUCCESS。 否则,它将 返回适当的NTSTATUS 值。

要求

要求 价值
最低支持的客户端 Windows 10
标头 wdm.h (包括 Wdm.h)
IRQL PASSIVE_LEVEL