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

메서드를 IPrintOemUni::Compression Unidrv 지원 프린터와 함께 사용하여 사용자 지정된 비트맵 압축 방법을 제공할 수 있습니다.

구문

HRESULT Compression(
        PDEVOBJ pdevobj,
        PBYTE   pInBuf,
        PBYTE   pOutBuf,
        DWORD   dwInLen,
        DWORD   dwOutLen,
  [out] OUT INT *piResult
);

매개 변수

pdevobj

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

pInBuf

입력 스캔 라인 데이터에 대한 호출자 제공 포인터입니다.

pOutBuf

압축된 스캔 라인 데이터를 수신하기 위해 출력 버퍼에 대한 호출자 제공 포인터입니다.

dwInLen

입력 데이터의 호출자 제공 길이입니다.

dwOutLen

출력 버퍼의 호출자 제공 길이입니다.

[out] piResult

메서드 제공 결과 값을 받습니다. 작업이 성공하면 이 값은 dwOutLen에 대해 받은 값보다 크지 않아야 하는 압축된 바이트 수여야 합니다. 오류가 발생하거나 메서드가 압축할 수 없는 경우 결과 값은 -1이어야 합니다.

반환 값

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

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

설명

메서드는 IPrintOemUni::Compression 인쇄 스풀러로 전송되기 전에 플러그 인을 렌더링하여 스캔 라인 데이터를 압축하는 데 사용됩니다. 이 메서드의 목적은 Unidrv에서 지원하지 않는 프린터 관련 압축 메서드에 대한 지원을 제공하는 것입니다.

메서드가 IPrintOemUni::Compression 정의되고 프린터의 GPD 파일에 CmdEnableOEMComp 명령 항목이 포함된 경우 Unidrv는 스캔 줄을 인쇄 스풀러로 보낼 준비가 될 때마다 메서드를 호출합니다. (CmdEnableOEMComp 명령에 대한 자세한 내용은 래스터 데이터 압축 명령을 참조하세요.)

pInBufdwInLen 매개 변수 값은 압축할 이미지 데이터의 스캔 줄을 포함하는 버퍼를 설명합니다. pOutBufdwOutLen 매개 변수 값은 메서드가 압축된 데이터를 배치해야 하는 IPrintOemUni::Compression 버퍼를 설명합니다.

Unidrv가 인쇄 스풀러에 스캔 라인을 보내기 전에 활성화된 모든 압축 방법을 시도하여 가장 작은 데이터 스트림을 만드는 방법을 결정합니다. 각 방법을 사용하여 데이터를 압축하여 최상의 압축 알고리즘을 결정한 후 프린터가 최상의 압축 형식을 수락할 수 있도록 하는 프린터 명령을 스풀링한 다음 압축된 데이터를 프린터로 보냅니다.

따라서 메서드에서 IPrintOemUni::Compression 반환된 압축된 데이터가 실제로 사용되는지 여부에 관계없이 모든 검사 줄에 대해 메서드가 호출됩니다. 메서드가 호출되면 dwOutLen 에는 Unidrv가 시도한 최상의 압축 메서드에서 반환된 길이가 포함됩니다. (다른 메서드를 시도하지 않은 경우 dwOutLen 에는 압축되지 않은 길이가 포함됩니다.) 알고리즘이 dwOutLen 바이트와 같거나 짧은 압축된 검사 줄을 생성할 수 없는 경우 piResult로 지정된 위치에서 -1을 반환해야 합니다.

Unidrv가 활성화된 모든 압축 메서드를 시도한 후 에서 반환 IPrintOemUni::Compression 된 압축 데이터의 길이가 가장 작은 경우 Unidrv는 CmdEnableOEMComp 명령 항목에서 지정한 명령 앞에 버퍼를 인쇄 스풀러로 보냅니다.

가능한 경우 메서드의 압축 알고리즘은 수신된 dwOutLen 값을 사용하여 완료 전에 알고리즘을 중지할 수 있는지 여부를 결정하여 다른 압축 메서드가 이미 더 나은 결과를 생성한 경우 시간을 절약해야 합니다.

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

요구 사항

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