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


функция обратного вызова 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