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 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 時,對等的自定義勾點函式必須將此輸入參數轉換成類型 PDEVOBJ。 範例圖形 DDI 函式是 DrvDitherColor。
雖然 列印機圖形 DLL 在DRVENABLEDATA結構中包含 其DrvEnablePDEV、 DrvDisablePDEV和 DrvResetPDEV 函式的位址,但 Pscript5 的轉譯外掛程式會實作 EnablePDEV、 DisablePDEV 和 ResetPDEV 做為 IPrintOemPS 介面的方法,而且不會將其位址放在 DRVENABLEDATA 結構中。
如果多個轉譯外掛程式匯出 了 IPrintOemPS::EnableDriver 方法,則會依外掛程式指定安裝的順序呼叫方法。
每個圖形 DDI 函式都可以由一個轉譯外掛程式連結。 如果多個外掛程式嘗試連結相同的圖形 DDI 函式,則會忽略第一個外掛程式之後的所有勾點。
如需建立及安裝轉譯外掛程式的詳細資訊,請參閱 自定義 Microsoft 的印表機驅動程式。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | prcomoem.h (包含 Prcomoem.h) |