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

請注意,雖然列印機圖形 DLLDRVENABLEDATA結構中包含其DrvEnablePDEV、DrvDisablePDEVDrvResetPDEV函式的位址,但轉譯插件會明確地將 EnablePDEVDisablePDEVResetPDEV 導出為 IPrintOemUni 介面的方法,而且不會將其位址放在 DRVENABLEDATA 結構中。

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

每個圖形 DDI 函式只能由一個轉譯外掛程式連結。 如果多個外掛程式嘗試連結相同的圖形 DDI 函式,則會忽略第一個外掛程式之後的所有勾點。

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

規格需求

需求
目標平台 桌面
標頭 prcomoem.h (包含 Prcomoem.h)