функция обратного вызова 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
Дескриптор домена DMA, полученный вызывающим из предыдущего вызова PGET_DMA_DOMAIN.
[in, optional] MaximumAddress
Указатель на переменную, содержащую максимальный логический адрес для общего буфера. Этот параметр указывает, что буфер должен быть выделен из памяти под этим адресом. Этот параметр является необязательным и может быть указан как NULL, чтобы указать, что нет максимального адреса.
[in] Length
Размер в байтах общего буфера, который должен быть выделен для операции DMA.
[in] Flags
Размер в байтах общего буфера, который должен быть выделен для операции DMA.
Возможные значения:
DOMAIN_COMMON_BUFFER_LARGE_PAGE
Общий буфер будет выделен с помощью более крупной детализации страницы PAGE_SIZE * 512. Обратите внимание, что это может увеличить вероятность неудачного выделения.
[in, optional] CacheType
Указатель на перечисление MEMORY_CACHING_TYPE, указывающее, должна ли подпрограмма включать или отключать кэшированную память в общем буфере, который должен быть выделен. Поддерживаются только значения mmNonCached и MmCached. Параметр является необязательным и может быть указан как 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 (include Wdm.h) |
IRQL | PASSIVE_LEVEL |