IPrintOemUni::EnableDriver 方法 (prcomoem.h)
IPrintOemUni::EnableDriver 方法可讓轉譯外掛程式 Unidrv 勾出某些圖形 DDI 函式。
語法
HRESULT EnableDriver(
DWORD DriverVersion,
DWORD cbSize,
PDRVENABLEDATA pded
);
參數
DriverVersion
呼叫端提供的介面版本號碼。 此值是由 printoem.h 中的 PRINTER_OEMINTF_VERSION 所定義。
cbSize
呼叫端提供的大小,以位元組為單位,由 pded所指向的結構。
pded
DRVENABLEDATA 結構的呼叫端提供的指標。
傳回值
方法必須傳回下列其中一個值。
傳回碼 | 描述 |
---|---|
S_OK | 作業成功。 |
E_FAIL | 作業失敗 |
言論
Unidrv 的轉譯外掛程式必須實作 IPrintOemUni::EnableDriver 方法。
IPrintOemUni::EnableDriver 方法可讓轉譯外掛程式執行與印表機圖形 DLL 導出的 DrvEnableDriver 函式相同的作業類型。
如同 DrvEnableDriver 函式,IPrintOemUni::EnableDriver 方法負責提供內部支援的圖形 DDI 函式地址,稱為勾點函式。 它也可以執行其他一次性初始化作業。 不同於 DrvEnableDriver 函式,IPrintOemUni::EnableDriver 實作是選擇性的。
如果您實作 IPrintOemUni::EnableDriver,您也必須實作 IPrintOemUni::D isableDriver。 先前方法中開始的動作可能需要在後一個方法中完成。 例如,如果在 IPrintOemUni::EnableDriver中配置大型緩衝區,但在 IPrintOemUni::D isableDriver中未解除分配,可能會發生記憶體流失。
方法應該填入提供的 DRVENABLEDATA 結構,並配置 DRVFN 結構的陣列。 它應該使用連結函式的指標填入數位,以及用來識別連結圖形 DDI 函式的winddi.h 定義索引值。
只有在 Unidrv 驅動程式定義函式時,Unidrv 的轉譯外掛程式才能攔截圖形 DDI 函式。 下列圖形 DDI 函式定義於 Unidrv 和/或 Pscript5 中,因此可以連結:
如果您提供自定義的勾點函式,它會先佔驅動程式的對等圖形 DDI 函式。 連結函式也可以回呼至驅動程序的圖形 DDI 函式。 如需詳細資訊,請參閱 自訂圖形 DDI 函式。
自定義勾點函式的輸入和輸出參數與對等圖形 DDI 函式相同,但有一個例外- 其中圖形 DDI 函式會接收 PDEV 指標,自定義勾點函式會接收 DEVOBJ 指標。 圖形 DDI 函式有兩種方式可接收 PDEV 指標:
作為目的地介面 SURFOBJ 結構 成員之 dhpdev 的內容。 對於對等的自定義攔截函式,目的地 SURFOBJ 結構的 dhpdev 成員指向 DEVOBJ 結構,而且必須在參考時轉換成類型 PDEVOBJ。 範例圖形 DDI 函式是 DrvBitBlt。
作為 dhpdev 參數的輸入自變數。 當參考 PDEVOBJ 時,對等的自定義攔截函式必須將這個輸入參數轉換成類型 PDEVOBJ。 範例圖形 DDI 函式是 DrvDitherColor。
請注意,雖然 印表機圖形 DLL 包含其 DrvEnablePDEV的位址、DrvDisablePDEV,以及 drvResetPDEV DRVENABLEDATA 結構中的 drvResetPDEV 函式, 轉譯外掛程式會明確匯出 EnablePDEV、DisablePDEV,以及 ResetPDEV 做為 IPrintOemUni 介面的方法,而且不會將其位址放在 DRVENABLEDATA 結構中。
如果 IPrintOemUni::EnableDriver 方法是由多個轉譯外掛程式匯出,則會依外掛程式指定安裝的順序呼叫方法。
每個圖形 DDI 函式只能由一個轉譯外掛程式連結。 如果多個外掛程式嘗試攔截相同的圖形 DDI 函式,則會忽略第一個外掛程式之後的所有攔截。
如需建立及安裝轉譯外掛程式的詳細資訊,請參閱 自定義Microsoft的印表機驅動程式。
要求
要求 | 價值 |
---|---|
目標平臺 | 桌面 |
標頭 | prcomoem.h (include Prcomoem.h) |