IPortWaveRTStream::AllocateContiguousPagesForMdl 메서드(portcls.h)
메서드는 AllocateContiguousPagesForMdl
연속되고 페이지가 없는 실제 메모리 페이지 목록을 할당하고 이를 설명하는 MDL(메모리 설명자 목록)에 대한 포인터를 반환합니다.
구문
PMDL AllocateContiguousPagesForMdl(
[in] PHYSICAL_ADDRESS LowAddress,
[in] PHYSICAL_ADDRESS HighAddress,
[in] SIZE_T TotalBytes
);
매개 변수
[in] LowAddress
MDL에 대한 스토리지를 할당할 수 있는 주소 범위의 아래쪽 끝을 지정합니다.
[in] HighAddress
MDL에 대한 스토리지를 할당할 수 있는 주소 범위의 하이 엔드를 지정합니다.
[in] TotalBytes
MDL에 할당할 총 바이트 수를 지정합니다. 이 메서드는 항상 정수의 메모리 페이지를 할당합니다.
반환 값
AllocateContiguousPagesForMdl
는 실제 메모리 페이지 목록을 설명하는 MDL(PMDL)에 대한 포인터를 반환합니다. 메서드가 요청된 버퍼를 할당할 수 없는 경우 NULL을 반환합니다.
설명
드라이버는 이 메서드를 호출하여 물리적으로 연속된 메모리 페이지 블록을 할당합니다. MDL의 모든 실제 메모리 페이지는 LowAddress 및 HighAddress 매개 변수에 지정된 주소 범위에 속합니다. 충분한 메모리를 사용할 수 있는 경우 메모리 할당은 요청된 크기가 다음 페이지로 반올림됩니다. 그렇지 않으면 호출이 실패합니다.
시스템이 일정 시간 동안 실행되면 시스템의 비페이징 메모리 풀이 조각화되는 경향이 있으므로 연속된 물리적 메모리의 큰 블록을 할당하는 요청이 실패할 가능성이 높아집니다. 오디오 디바이스의 DMA 컨트롤러에 실제 메모리 페이지가 연속되지 않아도 되는 경우 드라이버는 IPortWaveRTStream::AllocatePagesForMdl 을 대신 호출해야 합니다. 달리 AllocateContiguousPagesForMdl
AllocatePagesForMdl 메서드는 메모리 조각화의 영향을 받지 않습니다.
메서드는 AllocateContiguousPagesforMdl
잠겨 있지만 매핑되지 않은 메모리 페이지를 할당합니다. 미니포트 드라이버에 이 메모리에 대한 소프트웨어 액세스가 필요한 경우 미니포트 드라이버는 IPortWaveRTStream::MapAllocatedPages 를 후속 호출하여 페이지를 커널 모드 주소 공간에 매핑해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista 이상 Windows 운영 체제에서 사용할 수 있습니다. |
대상 플랫폼 | 유니버설 |
헤더 | portcls.h |
IRQL | 수동 수준 |