다음을 통해 공유


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

호출자가 PGET_DMA_DOMAIN 이전 호출에서 가져온 DMA 도메인에 대한 핸들입니다.

[in, optional] MaximumAddress

공통 버퍼의 최대 논리 주소를 포함하는 변수에 대한 포인터입니다. 이 매개 변수는 이 주소 아래의 메모리에서 버퍼를 할당해야 했음을 나타냅니다. 이 매개 변수는 선택 사항이며 최대 주소가 없음을 나타내기 위해 NULL로 지정할 수 있습니다.

[in] Length

DMA 작업에 할당할 공통 버퍼의 크기(바이트)입니다.

[in] Flags

DMA 작업에 할당할 공통 버퍼의 크기(바이트)입니다.

가능한 값은 다음과 같습니다.

  • DOMAIN_COMMON_BUFFER_LARGE_PAGE

    공통 버퍼는 PAGE_SIZE * 512의 더 큰 페이지 세분성을 사용하여 할당됩니다. 이렇게 하면 할당이 실패할 가능성이 높아질 수 있습니다.

[in, optional] CacheType

루틴이 할당할 공통 버퍼에서 캐시된 메모리를 사용하거나 사용하지 않도록 설정해야 하는지 여부를 나타내는 MEMORY_CACHING_TYPE 열거형에 대한 포인터입니다. MmNonCachedMmCached 값만 지원됩니다. 매개 변수는 선택 사항이며 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