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 열거형에 대한 포인터입니다. 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 |