Функция 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 | Операция не смогла выделить запрошенную память из-за нехватки ресурсов. |
Комментарии
Если запрос завершается сбоем, BufferPointer будет иметь значение NULL.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 (версия 1803) |
Целевая платформа | Универсальное |
Верхняя часть | storport.h |
Правила соответствия DDI | StorPortIrql |