Функция 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 МБ до 16 МБ, это значение будет иметь значение 0x800000 (8 МБ).
[in] HighestAcceptableAddress
Самый высокий физический адрес, допустимый для выделения. Например, если устройство может ссылаться только на физическую память ниже 16 МБ, это значение будет иметь значение 0xFFFFFF (16 МБ – 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 | Операция не удалось выделить запрошенную память из-за нехватки ресурсов. |
Замечания
Если запрос завершается ошибкой, БуферPointer будет иметь значение NULL.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows 10 (версия 1803) |
целевая платформа | Всеобщий |
заголовка | storport.h |
правил соответствия DDI | StorPortIrql |