PALLOCATE_COMMON_BUFFER_WITH_BOUNDS 콜백 함수(wdm.h)

이 콜백 함수는 공통 버퍼에 대한 메모리를 할당하고 master 디바이스 및 CPU에서 액세스할 수 있도록 매핑합니다. 공통 버퍼는 선택적 최소 및 최대 논리 주소로 바인딩할 수 있습니다.

구문

PALLOCATE_COMMON_BUFFER_WITH_BOUNDS PallocateCommonBufferWithBounds;

PVOID PallocateCommonBufferWithBounds(
  [in]           PDMA_ADAPTER DmaAdapter,
  [in, optional] PPHYSICAL_ADDRESS MinimumAddress,
  [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
)
{...}

매개 변수

[in] DmaAdapter

DMA_ADAPTER 구조체에 대한 포인터입니다. 이 구조체는 드라이버의 버스 master DMA 디바이스 또는 시스템 DMA 채널을 나타내는 어댑터 개체입니다. 호출자는 IoGetDmaAdapter 루틴에 대한 이전 호출에서 이 포인터를 얻었습니다.

[in, optional] MinimumAddress

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

[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와 같은 루틴에서 반환되는 실제 주소 대신 이 논리 주소를 사용해야 합니다.

반환 값

공통 버퍼에 할당된 메모리의 가상 주소인 PVOID를 반환합니다. 버퍼를 할당할 수 없는 경우 NULL을 반환합니다.

설명

이 콜백 함수는 PALLOCATE_COMMON_BUFFER_EX 루틴의 확장 버전입니다. 다음 목록에는 확장 버전에서만 사용할 수 있는 기능이 요약되어 있습니다.

  • 호출자는 할당할 공통 버퍼에 대한 최소 논리 주소를 지정할 수 있습니다.

  • 호출자는 하드웨어 플랫폼에 관계없이 따를 캐싱 형식 재정의를 제공할 수 있습니다.

  • 호출자는 공통 버퍼 할당에 더 큰 세분성을 사용하도록 지정할 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10, 버전 1803
대상 플랫폼 데스크톱
머리글 wdm.h(Wdm.h 포함)
IRQL PASSIVE_LEVEL

추가 정보

DMA_OPERATIONS

PALLOCATE_COMMON_BUFFER_EX