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의 모든 실제 메모리 페이지는 LowAddressHighAddress 매개 변수에 지정된 주소 범위에 속합니다. 충분한 메모리를 사용할 수 있는 경우 메모리 할당은 요청된 크기가 다음 페이지로 반올림됩니다. 그렇지 않으면 호출이 실패합니다.

시스템이 일정 시간 동안 실행되면 시스템의 비페이징 메모리 풀이 조각화되는 경향이 있으므로 연속된 물리적 메모리의 큰 블록을 할당하는 요청이 실패할 가능성이 높아집니다. 오디오 디바이스의 DMA 컨트롤러에 실제 메모리 페이지가 연속되지 않아도 되는 경우 드라이버는 IPortWaveRTStream::AllocatePagesForMdl 을 대신 호출해야 합니다. 달리 AllocateContiguousPagesForMdlAllocatePagesForMdl 메서드는 메모리 조각화의 영향을 받지 않습니다.

메서드는 AllocateContiguousPagesforMdl 잠겨 있지만 매핑되지 않은 메모리 페이지를 할당합니다. 미니포트 드라이버에 이 메모리에 대한 소프트웨어 액세스가 필요한 경우 미니포트 드라이버는 IPortWaveRTStream::MapAllocatedPages 를 후속 호출하여 페이지를 커널 모드 주소 공간에 매핑해야 합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 유니버설
헤더 portcls.h
IRQL 수동 수준

추가 정보

IPortWaveRTStream

IPortWaveRTStream::AllocatePagesForMdl

IPortWaveRTStream::MapAllocatedPages