функция обратного вызова 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. Эта структура представляет собой объект адаптера, представляющий master устройства 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 значение 0.
[out] LogicalAddress
Указатель на переменную, в которую эта подпрограмма записывает логический адрес, который устройство может использовать для доступа к общему буферу. Устройство DMA должно использовать этот логический адрес вместо физического адреса, возвращаемого подпрограммой, такой как MmGetPhysicalAddress.
[out] VirtualAddress
Указатель на переменную, в которую эта подпрограмма записывает соответствующий виртуальный адрес выделенного буфера.
Возвращаемое значение
Возвращает STATUS_SUCCESS, если вызов выполнен успешно. В противном случае возвращается соответствующее значение NTSTATUS.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 |
Верхняя часть | wdm.h (включая Wdm.h) |
IRQL | PASSIVE_LEVEL |