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 열거형에 대한 포인터입니다. MmNonCached 및 MmCached 값만 지원됩니다. 매개 변수는 선택 사항이며 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 |