共用方式為


DrvConvertDevMode 函式 (winddiui.h)

印表機介面 DLL 的 DrvConvertDevMode 函式會將印表機的 DEVMODEW 結構從一個版本轉換成另一個版本。

語法

BOOL DrvConvertDevMode(
  [in]      LPTSTR   pPrinterName,
  [in]      PDEVMODE pdmIn,
  [out]     PDEVMODE pdmOut,
  [in, out] PLONG    pcbNeeded,
  [in]      DWORD    fMode
);

參數

[in] pPrinterName

印表機名稱字串的呼叫端提供的指標。 如需此參數的詳細資訊,請參閱下列一節。

[in] pdmIn

呼叫端提供的輸入 DEVMODEW 結構的指標。 如果CDM_DRIVER_DEFAULT fMode,此指標會 NULL

[out] pdmOut

呼叫端提供的緩衝區指標,以接收輸出 DEVMODEW 結構。 如果 fMode CDM_CONVERT 緩衝區包含輸入時,表示目標驅動程式版本的有效 DEVMODEW 結構。

[in, out] pcbNeeded

呼叫端提供的緩衝區大小指標,以位元組為單位,由 pdmOut所指向的緩衝區。 在輸出中,印表機介面 DLL 應該以已轉換之 DEVMODEW 結構的實際大小覆寫收到的大小值。 如果接收的緩衝區太小,印表機介面 DLL 應該以所需的緩衝區大小覆寫接收的大小值。

[in] fMode

呼叫端提供的位旗標,指出要執行的作業類型。 這可以是下列其中一個旗標:

CDM_CONVERT

函式應將輸入 DEVMODEW 結構的內容(pdmIn所指向)轉換成新的 DEVMODEW 結構,並將結果放在 pdmOut 所指向的 DEVMODEW 結構中。 所接收輸出 DEVMODEW 結構的初始內容(pdmOut所指向)應該用來判斷輸出版本。

CDM_CONVERT351

函式應該轉換輸入 DEVMODEW 結構的內容(pdmIn所指向),建立與 Windows NT 3.51 相容的輸出 DEVMODEW 結構,並將結果放在 pdmOut 所指向的 DEVMODEW 結構中

如果驅動程式不支援 Windows NT 3.51 的 DEVMODEW 結構,函式應該會將輸入 DEVMODEW 轉換為目前的版本。

CDM_DRIVER_DEFAULT

函式應該將目前版本的預設 DEVMODEW 結構複製到 pdmOut 所指向的緩衝區。

傳回值

如果作業成功,函式應該會傳回 true ;否則,它應該呼叫 SetLastError 來設定錯誤碼,並傳回 FALSE

言論

在用戶端/伺服器環境中,用戶端在執行另一個作系統或列印機驅動程式時,可能會執行一個版本的作系統或印表機驅動程式,這表示列印機的 DEVMODEW 結構定義在用戶端與伺服器之間可能不一致。 DrvConvertDevMode 函式必須能夠執行從某個版本的印表機 DEVMODEW 結構轉換成另一個版本的轉換。

從某個 DEVMODEW 版本轉換成另一個版本時,必須包含公用和私人 DEVMODEW 成員。

pPrinterName 所指向的印表機名稱,可作為 OpenPrinter 函式的輸入自變數(如 Microsoft Windows SDK 檔所述),可在收到CDM_DRIVER_DEFAULT旗標時呼叫,以取得預存的預設值。 請注意,在呼叫 openPrinter 之前,不得以任何方式修改印表機名稱字串。 此外,OpenPrinter 的呼叫必須位於與 用來呼叫 DrvConvertDevMode相同的線程中。

函式應該確認 pdmInpdmOut (如果適用)指向有效的 DEVMODEW 結構。 如果沒有,函式應該呼叫 SetLastError(ERROR_INVALID_PARAMETER),並傳回 FALSE。 如果 所指定的輸出 DEVMODEW 大小太小,驅動程式應該以所需的緩衝區大小覆寫 提供的大小值,呼叫 SetLastError(ERROR_INSUFFICIENT_BUFFER),並傳回 FALSE

DrvConvertDevMode 函式會在多任務緩衝處理程式的內容中執行,因此不得顯示使用者介面。

當呼叫 DrvConvertDevMode 時,會在 pdmOut 參數中使用 NULL DEVMODEW 結構指標來取得緩衝區大小,驅動程式預期會將最後一個錯誤設定為ERROR_INSUFFICIENT_BUFFER。 如果最後一個錯誤未設定為此值,多任務緩衝處理程式會假設發生一般錯誤。

要求

要求 價值
目標平臺 桌面
標頭 winddiui.h (包括 Winddiui.h)