共用方式為


PTConvertPrintTicketToDevMode 函式 (prntvpt.h)

將列印票證轉換成 DEVMODE 結構。

語法

HRESULT PTConvertPrintTicketToDevMode(
  [in]  HPTPROVIDER         hProvider,
  [in]  IStream             *pPrintTicket,
        EDefaultDevmodeType baseDevmodeType,
  [in]  EPrintTicketScope   scope,
  [out] ULONG               *pcbDevmode,
  [out] PDEVMODE            *ppDevmode,
  [out] BSTR                *pbstrErrorMessage
);

參數

[in] hProvider

已開啟之列印票證提供者的句柄。 PTOpenProviderPTOpenProviderEx 函式會傳回此句柄。

[in] pPrintTicket

IStream 的指標,其搜尋位置位於列印票證的開頭。

baseDevmodeType

值,指出當 pPrintTicket 未指定 DEVMODE 的每個可能設定時,會使用使用者的預設 DEVMODE 或列印佇列的預設 DEVMODE 來提供值給輸出 DEVMODE

[in] scope

值,指定 pPrintTicket 的範圍。 此值可以指定單頁、整份檔或列印作業中的所有檔。 會忽略超出指定範圍之 pPrintTicket 中的設定。 請參閱<備註>。

[out] pcbDevmode

DEVMODE 大小的指標,以位元組為單位。

[out] ppDevmode

新建立 之 DEVMODE 的指標。

[out] pbstrErrorMessage

字串的指標,指定 pPrintTicket 的相關內容無效。 如果有效,則為 NULL

傳回值

如果作業成功,傳回值會S_OK。

如果在不同的線程中開啟 hProvider則 HRESULT 會E_INVALIDARG。

如果 pPrintTicket 無效, 則 HRESULT 會E_PRINTTICKET_FORMAT。

否則, HRESULT 中會傳回一些其他錯誤碼。 如需 COM 錯誤碼的詳細資訊,請參閱 錯誤處理

備註

注意 這是封鎖或同步函式,可能不會立即傳回。 此函式傳回的速度取決於運行時間因素,例如網路狀態、列印伺服器設定和印表機驅動程序實作—撰寫應用程式時難以預測的因素。 從管理與使用者介面互動的線程呼叫此函式,可能會使應用程式看起來沒有回應。
 
hProvider 參數必須是在與用於此函式之線程相同的線程中開啟的句柄。

如果 baseDevmodeType 是 kUserDefaultDevmode,但使用者的預設無法使用,則會使用裝置的預設值。

傳回的 DEVMODE 在內部可能會不一致,或與硬式印表機設定衝突,即使其中每個設定都是個別可行的。 例如,如果印表機支援選擇性雙工器,但 pPrintTicket 會呼叫雙工,則傳回的 DEVMODE 也會呼叫雙工,即使未安裝雙工器也一樣。 使用 DocumentProperties 更正傳回的 DEVMODE

傳回 ppDevmode 中的緩衝區應該以 PTReleaseMemory 釋出。

忽略超出範圍的pPrintTicket 值。 例如,如果範圍只是單一頁面,則會忽略全作業設定和全檔設定。 作業範圍包括檔範圍和頁面範圍。 檔範圍包括頁面範圍。

如果 pbstrErrorMessage 在函式傳回時不是 NULL ,則呼叫端必須使用 SysFreeString 釋放字串。

規格需求

需求
最低支援的用戶端 Windows XP [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限桌面應用程式]
目標平台 Windows
標頭 prntvpt.h
程式庫 Prntvpt.lib
Dll Prntvpt.dll

另請參閱

列印架構

列印多工緩衝處理器 API 函式

列印