IPrintOemPS::EnableDriver 메서드(prcomoem.h)
IPrintOemPS::EnableDriver 메서드를 사용하면 Pscript 대한 렌더링 플러그 인이 일부 그래픽 DDI 함수를 후크할 수 있습니다.
통사론
HRESULT EnableDriver(
DWORD DriverVersion,
DWORD cbSize,
PDRVENABLEDATA pded
);
매개 변수
DriverVersion
호출자가 제공한 인터페이스 버전 번호입니다. 이 값은 PRINTER_OEMINTF_VERSION printoem.h로 정의됩니다.
cbSize
pded 가리키는 구조체의 호출자 제공 크기(바이트)입니다.
pded
DRVENABLEDATA 구조체에 대한 호출자 제공 포인터입니다.
반환 값
메서드는 다음 값 중 하나를 반환해야 합니다.
반환 코드 | 묘사 |
---|---|
S_OK | 작업이 성공했습니다. |
E_FAIL | 작업이 실패했습니다. |
E_NOTIMPL | 메서드가 구현되지 않았습니다. |
발언
IPrintOemPS::EnableDriver 메서드를 사용하면 렌더링 플러그 인이 프린터 그래픽 DLL에서 내보낸 DrvEnableDriver 함수와 동일한 유형의 작업을 수행할 수 있습니다.
DrvEnableDriver 함수와 마찬가지로 IPrintOemPS::EnableDriver 메서드는 후킹 함수라고도 하는 내부적으로 지원되는 그래픽 DDI 함수의 주소를 제공합니다. 다른 일회성 초기화 작업을 수행할 수도 있습니다. DrvEnableDriver 함수와 달리 IPrintOemPS::EnableDriver 메서드의 구현은 선택 사항입니다.
IPrintOemPS::EnableDriver구현하는 경우 IPrintOemPS::D isableDriver 구현해야 합니다. 이전 메서드에서 시작된 작업은 후자의 메서드에서 완료해야 할 수 있습니다. 예를 들어 IPrintOemPS::EnableDriver 큰 버퍼가 할당되었지만 IPrintOemPS::D isableDriver할당 취소되지 않은 경우 메모리 누수가 발생할 수 있습니다.
메서드는 제공된 DRVENABLEDATA 구조를 채우고 DRVFN 구조의 배열을 할당해야 합니다. 후킹 함수에 대한 포인터와 후크 아웃 그래픽 DDI 함수를 식별하는 winddi.h 정의 인덱스 값으로 배열을 채워야 합니다.
Pscript5용 렌더링 플러그 인은 Pscript5 드라이버가 함수를 정의하는 경우에만 그래픽 DDI 함수를 연결할 수 있습니다. 다음 그래픽 DDI 함수는 Pscript5 또는 Unidrv에 정의되어 있으므로 연결할 수 있습니다.
사용자 지정된 후킹 함수를 제공하는 경우 드라이버의 동등한 그래픽 DDI 함수를 선점합니다. 후킹 함수는 드라이버의 그래픽 DDI 함수로 다시 호출할 수도 있습니다. 자세한 내용은 사용자 지정된 그래픽 DDI 함수 참조하세요.
사용자 지정된 후킹 함수는 동일한 그래픽 DDI 함수와 동일한 입력 및 출력 매개 변수를 갖습니다. 단, 그래픽 DDI 함수가 PDEV 포인터를 수신하고, 사용자 지정된 후크 함수는 DEVOBJ 포인터를 받습니다. 이러한 함수가 PDEV 포인터를 수신하는 방법에는 두 가지가 있습니다.
대상 화면에 대한 SURFOBJ 구조체의 dhpdev 멤버의 내용으로. 동일한 사용자 지정 후킹 함수의 경우 대상 SURFOBJ 구조체의 dhpdev 멤버는 DEVOBJ 구조를 가리키며 참조할 때 PDEVOBJ 형식으로 캐스팅되어야 합니다. 예제 그래픽 DDI 함수는 DrvBitBlt .
dhpdev 매개 변수에 대한 입력 인수입니다. 이와 동등한 사용자 지정 후킹 함수는 참조할 때 이 입력 매개 변수를 PDEVOBJ 형식으로 캐스팅해야 합니다. 예제 그래픽 DDI 함수는 DrvDitherColor .
프린터 그래픽 DLL drvEnablePDEV 주소, drvDisablePDEV 및 drvResetPDEV 함수를 DRVENABLEDATA 구조에, Pscript5용 렌더링 플러그 인은 EnablePDEV, DisablePDEV및 ResetPDEVIPrintOemPS 인터페이스의 메서드로 구현하며 해당 주소를 DRVENABLEDATA 구조에 배치하지 않습니다.
IPrintOemPS::EnableDriver 메서드가 여러 렌더링 플러그 인에 의해 내보내지면 플러그 인이 설치되도록 지정된 순서대로 메서드가 호출됩니다.
각 그래픽 DDI 함수는 하나의 렌더링 플러그 인으로 연결할 수 있습니다. 여러 플러그 인이 동일한 그래픽 DDI 함수를 연결하려고 하면 첫 번째 플러그 인 이후의 모든 후크 아웃이 무시됩니다.
렌더링 플러그 인을 만들고 설치하는 방법에 대한 자세한 내용은 Microsoft의 프린터 드라이버사용자 지정을 참조하세요.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 바탕 화면 |
헤더 | prcomoem.h(Prcomoem.h 포함) |