IPortWaveRTStream::AllocatePagesForMdl 메서드(portcls.h)
AllocatePagesForMdl
메서드는 페이지가 지정되지 않은 실제 메모리 페이지 목록을 할당하고 이를 설명하는 메모리 설명자 목록(MDL)에 대한 포인터를 반환합니다.
통사론
PMDL AllocatePagesForMdl(
[in] PHYSICAL_ADDRESS HighAddress,
[in] SIZE_T TotalBytes
);
매개 변수
[in] HighAddress
MDL에 대한 스토리지를 할당할 수 있는 주소 범위의 하이 엔드를 지정합니다. 주소 범위의 아래쪽 끝은 암시적으로 0입니다.
[in] TotalBytes
MDL에 할당할 총 바이트 수를 지정합니다. 이 메서드는 항상 정수의 메모리 페이지를 할당합니다.
반환 값
AllocatePagesforMdl
실제 메모리 페이지 목록을 설명하는 MDL에 대한 포인터를 반환합니다. 메서드가 요청된 버퍼를 할당할 수 없는 경우 NULL반환합니다.
발언
Windows 오디오 스택은 버퍼에 대한 메모리 액세스 맞춤 요구 사항을 표현하는 메커니즘을 지원하지 않으므로 오디오 드라이버는 플랫폼별 맞춤 요구 사항을 적용하지 않는 매핑된 메모리 버퍼에 대한 캐싱 유형을 선택해야 합니다. 즉, 오디오 드라이버가 매핑된 메모리 버퍼에 사용하는 캐싱 형식은 특정 플랫폼에 대한 메모리 맞춤 요구 사항을 가정해서는 안 됩니다.
드라이버는 이 메서드를 호출하여 사용자 또는 커널 모드에 매핑할 수 있는 메모리를 할당합니다. MDL의 실제 메모리 페이지는 반드시 실제 메모리에서 연속되는 것은 아니지만 모두 지정된 주소 범위에 속합니다.
메서드는 항상 정수의 페이지를 할당합니다. 충분한 메모리를 사용할 수 있는 경우 메모리 할당은 요청된 크기가 다음 페이지로 반올림됩니다. 그렇지 않으면 메모리 할당이 요청된 크기보다 작을 수 있습니다. 호출자는 실제로 할당된 바이트 수를 확인해야 합니다.
오디오 디바이스의 DMA 컨트롤러에 버퍼의 실제 메모리 페이지가 연속되어야 하는 경우 드라이버는 IPortWaveRTStream::AllocateContiguousPagesForMdl 호출해야 합니다.
MmAllocatePagesForMdl 함수와 마찬가지로 AllocatePagesforMdl
메서드는 잠겨 있지만 매핑되지 않은 메모리 페이지를 할당합니다. 미니포트 드라이버가 이 메모리에 대한 소프트웨어 액세스를 설정하려는 경우 미니포트 드라이버는 IPortWaveRTStream::MapAllocatedPages 호출하여 페이지를 커널 모드 주소 공간에 매핑해야 합니다.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista 이상 Windows 운영 체제에서 사용할 수 있습니다. |
대상 플랫폼 | 보편적 |
헤더 | portcls.h |
IRQL | 수동 수준 |