StorPortAllocateDmaMemory 函数 (storport.h)
此函数是 StorPortAllocateContiguousMemorySpecifyCacheNode 函数的扩展版本。 它分配一系列物理连续的非缓存、非分页内存,并返回已分配缓冲区的物理地址。
语法
ULONG StorPortAllocateDmaMemory(
[in] PVOID HwDeviceExtension,
[in] SIZE_T NumberOfBytes,
[in] PHYSICAL_ADDRESS LowestAcceptableAddress,
[in] PHYSICAL_ADDRESS HighestAcceptableAddress,
[in, optional] PHYSICAL_ADDRESS BoundaryAddressMultiple,
[in] MEMORY_CACHING_TYPE CacheType,
[in] NODE_REQUIREMENT PreferredNode,
[out] PVOID *BufferPointer,
[out] PPHYSICAL_ADDRESS PhysicalAddress
);
参数
[in] HwDeviceExtension
指向主机总线适配器的硬件设备扩展的指针 (HBA) 。
[in] NumberOfBytes
要分配的字节数。
[in] LowestAcceptableAddress
对分配有效的最低物理地址。 例如,如果设备只能引用 8 MB 到 16 MB 范围内的物理内存,则此值将设置为0x800000 (8 MB) 。
[in] HighestAcceptableAddress
对分配有效的最高物理地址。 例如,如果设备只能引用低于 16 MB 的物理内存,则此值将设置为0xFFFFFF (16 MB - 1) 。
[in, optional] BoundaryAddressMultiple
此分配不得交叉的物理地址倍数。
[in] CacheType
映射的所需缓存类型。
[in] PreferredNode
如果页面在该节点上可用,则应从该节点进行分配的首选节点。
[out] BufferPointer
接收已分配内存块的起始地址的变量。 从此例程返回时,如果此变量为零,则找不到连续范围来满足请求。 如果此变量不为 NULL,则它包含指针 (例如,系统非分页部分中的虚拟地址) 分配的物理连续内存。
[out] PhysicalAddress
分配的内存块的物理地址。
返回值
此函数返回STOR_STATUS代码。
返回代码 | 说明 |
---|---|
STOR_STATUS_NOT_IMPLEMENTED | 此函数未在活动操作系统上实现。 |
STOR_STATUS_SUCCESS | 操作成功。 |
STOR_STATUS_INSUFFICIENT_RESOURCES | 由于资源不足,操作未能分配请求的内存。 |
注解
如果请求失败,BufferPointer 将设置为 NULL。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 10 (版本 1803) |
目标平台 | 通用 |
标头 | storport.h |
DDI 符合性规则 | StorPortIrql |