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 수동 수준

추가 정보

IPortWaveRTStream

IPortWaveRTStream::AllocateContiguousPagesForMdl

IPortWaveRTStream::MapAllocatedPages