Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта функция обратного вызова выделяет память для общего буфера домена.
Синтаксис
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, чтобы указать кэширование, будет зависеть от аппаратной платформы по умолчанию.
Если вызывающий объект предоставляет переопределенное значение 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 |