共用方式為


IPrintOemPS::EnableDriver 方法 (prcomoem.h)

IPrintOemPS::EnableDriver 方法可讓轉譯外掛程式 Pscript 勾出某些圖形 DDI 函式。

語法

HRESULT EnableDriver(
  DWORD          DriverVersion,
  DWORD          cbSize,
  PDRVENABLEDATA pded
);

參數

DriverVersion

呼叫端提供的介面版本號碼。 此值是由 printoem.h 中的 PRINTER_OEMINTF_VERSION 所定義。

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 isisableDriver中解除分配,就會發生記憶體流失。

方法應該填入提供的 DRVENABLEDATA 結構,並配置 DRVFN 結構的陣列。 它應該使用連結函式的指標填入數位,以及用來識別連結圖形 DDI 函式的winddi.h 定義索引值。

Pscript5 的轉譯外掛程式只有在 Pscript5 驅動程式定義函式時,才能攔截圖形 DDI 函式。 下列圖形 DDI 函式定義於 Pscript5 和 或 Unidrv 中,因此可以連結:

如果您提供自定義的勾點函式,它會先佔驅動程式的對等圖形 DDI 函式。 連結函式也可以回呼至驅動程序的圖形 DDI 函式。 如需詳細資訊,請參閱 自訂圖形 DDI 函式

自定義勾點函式的輸入和輸出參數與對等圖形 DDI 函式相同,但有一個例外- 其中圖形 DDI 函式會接收 PDEV 指標,自定義勾點函式會接收 DEVOBJ 指標。 有兩種方式可讓這些函式接收 PDEV 指標:

  1. 作為目的地介面 SURFOBJ 結構 成員之 dhpdev 的內容。 對於對等的自定義攔截函式,目的地 SURFOBJ 結構的 dhpdev 成員指向 DEVOBJ 結構,而且必須在參考時轉換成類型 PDEVOBJ。 範例圖形 DDI 函式是 DrvBitBlt

  2. 作為 dhpdev 參數的輸入自變數。 當參考 PDEVOBJ 時,對等的自定義攔截函式必須將這個輸入參數轉換成類型 PDEVOBJ。 範例圖形 DDI 函式是 DrvDitherColor

雖然 印表機圖形 DLL 包含其 DrvEnablePDEVDrvDisablePDEV和 drvResetPDEV 函式在 DRVENABLEDATA 結構中的 DrvResetPDEV 位址, Pscript5 的轉譯外掛程式會實作 EnablePDEVDisablePDEV,以及 ResetPDEV 做為 IPrintOemPS 介面的方法,而且不會將其位址放在 DRVENABLEDATA 結構中。

如果 IPrintOemPS::EnableDriver 方法是由多個轉譯外掛程式匯出,則會依照外掛程式指定安裝的順序呼叫方法。

每個圖形 DDI 函式都可以由一個轉譯外掛程式連結。 如果多個外掛程式嘗試攔截相同的圖形 DDI 函式,則會忽略第一個外掛程式之後的所有攔截。

如需建立及安裝轉譯外掛程式的詳細資訊,請參閱 自定義Microsoft的印表機驅動程式

要求

要求 價值
目標平臺 桌面
標頭 prcomoem.h (include Prcomoem.h)