Поделиться через


Функция 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

См. также

StorPortFreeDmaMemory