IPrintOemUni::MemoryUsage 메서드(prcomoem.h)

메서드는 IPrintOemUni::MemoryUsage Unidrv 지원 프린터와 함께 사용하여 렌더링 플러그 인의 IPrintOemUni::ImageProcessing 메서드에서 사용하는 데 필요한 메모리 양을 지정할 수 있습니다.

구문

HRESULT MemoryUsage(
  PDEVOBJ         pdevobj,
  POEMMEMORYUSAGE pMemoryUsage
);

매개 변수

pdevobj

DEVOBJ 구조체에 대한 호출자 제공 포인터입니다.

pMemoryUsage

OEMMEMORYUSAGE 구조체에 대한 호출자 제공 포인터입니다.

반환 값

메서드는 다음 값 중 하나를 반환해야 합니다.

반환 코드 Description
S_OK
작업에 성공했습니다.
E_FAIL
작업이 실패했습니다.
E_NOTIMPL
메서드가 구현되지 않았습니다.

설명

IPrintOemUni::MemoryUsage 메서드의 목적은 IPrintOemUni::ImageProcessing 메서드의 메모리 요구 사항에 따라 Unidrv 드라이버가 GDI 드로잉 화면의 최적의 크기를 결정하는 데 도움이 되는 것입니다. 메서드의 IPrintOemUni::MemoryUsage 구현은 선택 사항입니다.

메서드는 IPrintOemUni::MemoryUsage 다음과 같이 두 값을 반환해야 합니다.

  • IPrintOemUni::ImageProcessing 메서드가 할당해야 하는 영구적으로 할당된 고정 크기 메모리의 양입니다.

    이 값은 OEMMEMORYUSAGE 구조체의 dwFixedMemoryUsage 멤버에 반환됩니다.

  • IPrintOemUni::ImageProcessing 메서드가 처리를 완료한 후 비트맵을 유지하는 데 필요한 메모리 양입니다.

    렌더링 플러그 인은 이 처리된 비트맵을 Unidrv로 반환하거나 스풀링합니다. 처리된 비트맵을 저장하는 데 필요한 메모리 양은 OEMMEMORYUSAGE 구조체의 dwPercentMemoryUsage 멤버에 반환되며 소스 비트맵 크기의 백분율로 표시됩니다.

dwPercentMemoryUsage 멤버에 반환되는 값에는 처리된 비트맵의 크기 외에도 원본 비트맵의 크기에 따라 달라지는 추가 메모리 할당의 양이 포함되어야 합니다.

OEMMEMORYUSAGE 구조체의 dwMaxBandSize 멤버는 Unidrv에서 제공하며 기본 최대 대역 크기를 지정합니다.

Unidrv 드라이버는 그리기 표면을 만들기 전에 GDI에 사용 가능한 시스템 메모리를 기반으로 이미지 밴딩 비트맵의 최적의 크기를 결정하도록 요청합니다. 이 최적의 메모리 공간은 IPrintOemUni::ImageProcessing 메서드에 전달되는 원본 비트맵과 메서드가 반환하거나 출력하는 (일반적으로 더 작은) 처리된 비트맵 간에 각 밴딩 비트맵에 대해 공유되어야 합니다. Unidrv는 렌더링 플러그 인의 IPrintOemUni::MemoryUsage 메서드(있는 경우)를 호출하고 결과를 사용하여 최적의 메모리 공간을 나누는 가장 좋은 방법을 계산합니다.

예를 들어 GDI가 그리기에 사용할 최적의 메모리 양이 6MB(OEMMEMORYUSAGE 구조의 dwMaxBandSize 멤버에 포함됨)라고 보고하는 반면 렌더링 플러그 인의 IPrintOemUni::MemoryUsage 메서드는 dwFixedMemoryUsage 의 경우 0, dwPercentMemoryUsage의 경우 50의 값을 반환한다고 가정해 보겠습니다. 값이 50이면 IPrintOemUni::ImageProcessing 메서드의 출력 비트맵이 원본 비트맵보다 50% 더 작습니다. 따라서 Unidrv는 4MB의 원본 비트맵 크기를 할당하므로 출력 비트맵이 2MB가 됩니다.

메서드가 IPrintOemUni::MemoryUsage 제공되지 않으면 Unidrv는 사용 가능한 모든 최적의 공간을 원본 비트맵에 할당합니다. IPrintOemUni::ImageProcessing 메서드가 원본 비트맵에 할당된 메모리 공간에서 처리된 비트맵을 반환하는 경우 허용됩니다. 그러나 렌더링 플러그 인의 IPrintOemUni::ImageProcessing 메서드가 대상 비트맵에 대한 공간을 할당하지만 메서드를 제공하지 IPrintOemUni::MemoryUsage 않으면 사용 가능한 최적 크기보다 비트맵에 더 많은 메모리가 할당되어 성능이 저하될 수 있습니다.

메서드는 IPrintOemUni::MemoryUsage 선택 사항입니다. 렌더링 플러그 인이 이 메서드를 구현하는 경우 플러그 인의 IPrintOemUni::GetImplementedMethod 메서드는 "MemoryUsage"를 입력으로 받을 때 S_OK 반환해야 합니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 prcomoem.h(Prcomoem.h 포함)

추가 정보

DEVOBJ

IPrintOemUni

IPrintOemUni::ImageProcessing

OEMMEMORYUSAGE