IPrintOemUni::D riverDMS 方法 (prcomoem.h)

方法 IPrintOemUni::DriverDMS 可讓 Unidrv 的轉譯外掛程式使用裝置管理的繪圖介面。

語法

HRESULT DriverDMS(
  PVOID  pDevObj,
  PVOID  pBuffer,
  DWORD  cbSize,
  PDWORD pcbNeeded
);

參數

pDevObj

呼叫端提供的 DEVOBJ 結構指標。

pBuffer

呼叫端提供的緩衝區指標,以接收方法指定的旗標。 (請參閱下列一節。)

cbSize

呼叫端提供的大小,以位元組為單位,由 pBuffer 指向的緩衝區。

pcbNeeded

呼叫端提供的位置指標,以接收所需的最小 pBuffer 大小。

傳回值

方法必須傳回下列其中一個值。

傳回碼 描述
S_OK
作業成功。
E_FAIL
作業失敗

備註

Unidrv 的轉譯外掛程式必須實 IPrintOemUni::DriverDMS 作 方法。 只有在 Unidrv 找到 OEM 轉譯外掛程式的有效介面指標時,才會呼叫 方法。

方法 IPrintOemUni::DriverDMS 可讓轉譯外掛程式指出它會使用裝置管理的繪圖介面,而不是預設的 GDI 管理介面。

方法必須在 pBuffer 指向的緩衝區中指定HOOK_前置旗標,指出要針對繪圖介面呼叫哪一個外掛程式的圖形 DDI 勾點函式。 HOOK_前置旗標定義於winddi.h中,並在 EngAssociateSurface 函式的描述中描述。 所 IPrintOemUni::DriverDMS 指定的旗標會由 Unidrv 傳遞至 EngAssociateSurface。 (請注意,若要支援裝置管理的介面,轉譯外掛程式必須連結所有繪圖函式。) 如需詳細資訊,請參閱 處理 Device-Managed Surface

如果在 IPrintOemUni::DriverDMSpBuffer 指向的緩衝區中設定旗標,Unidrv 會呼叫 EngCreateDeviceSurface 來建立裝置管理的介面。 如果未 IPrintOemUni::DriverDMS 設定任何旗標,Unidrv 會呼叫 EngCreateBitmap 來建立 GDI 管理的介面。 在這些情況下, IPrintOemUni::DriverDMS 應該傳回S_OK。

如果 cbSize 指定的輸出緩衝區大小太小,方法應該在 由 (ERROR_INSUFFICIENT_BUFFER) 呼叫 SetLastError 的位置指定所需的大小,並傳回E_FAIL。

規格需求

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