共用方式為


IPrintCoreHelper::SetOptions 方法 (prcomoem.h)

IPrintCoreHelper::SetOptions 方法會同時設定多個功能選項組。

語法

HRESULT SetOptions(
  [in, optional] IN PDEVMODE                      pDevmode,
  [in]           IN DWORD                         cbSize,
  [in]           IN BOOL                          bResolveConflicts,
  [in]           IN const PRINT_FEATURE_OPTION [] pFOPairs,
  [in]           IN DWORD                         cPairs,
  [out]          OUT PDWORD                       pcPairsWritten,
  [out]          OUT PDWORD                       pdwResult
);

參數

[in, optional] pDevmode

DEVMODEW 結構的指標。 如果提供此指標,IPrintCoreHelper::SetOptions 應該使用 pDevmode 指向的 DEVMODEW 結構,而不是預設或目前的 DEVMODEW 結構。 如果這個方法是從外掛程式提供者呼叫,或是從 IPrintOemPS::D evModeIPrintOemUni::D evMode呼叫,則需要此參數。 在其他大部分情況下,參數應該 NULL。 當核心驅動程式將 pDevmode 設定為 NULL時,它會修改其內部狀態,而不是傳入的 DEVMODEW 結構。 這在完整UI取代等作業期間是必要的,其中 DDI 傳回的DEVMODEW結構,例如 DrvDocumentPropertySheets,是由核心驅動程式的UI模組提供服務。

[in] cbSize

pDevmode 參數所指向之 DEVMODEW 結構的大小,以位元組為單位。

[in] bResolveConflicts

布爾值,指出 IPrintCoreHelper::SetOptions 是否應該解決組態檔 GPD 或 PPD 檢視中指定的一或多個條件約束所引發的衝突,以及 Unidrv 或 Pscript 或列印處理器所實作之功能的條件約束。 如果 TRUE,這個方法應該嘗試解決衝突。 如果 FALSE,則此方法不應該嘗試解決衝突。 如需詳細資訊,請參閱一節。

[in] pFOPairs

PRINT_FEATURE_OPTION 項目的陣列,其中每個元素都包含功能選項組。 每個功能選項組都會列出一個功能,以及針對該功能選取的選項。 所有設定都會循序套用。 不允許重複專案,但稍後出現在數位中的設定(也就是在較高的索引處)會覆寫稍早出現在陣列中的設定。

[in] cPairs

pFOPairs 參數所指向的功能選項組數目。

[out] pcPairsWritten

變數的指標,會接收在傳回或失敗 IPrintCoreHelper::SetOption s 之前成功儲存的功能選項組數目。 如果這個方法傳回成功,*pcPairsWritten 的值會與 cPairs 值相同。 如果方法失敗,*pcPairsWritten 可以有從零到 cPairs值的任何值。 這個參數是選擇性的,而且可以 NULL

[out] pdwResult

接收衝突解決狀態之變數的指標。 狀態可以是下列其中一個值。

價值 描述
SETOPTIONS_RESULT_NO_CONFLICT 相對於新設定,未違反組態檔之 GPD 或 PPD 檢視中指定的條件約束。
SETOPTIONS_RESULT_CONFLICT_RESOLVED 違反組態檔之 GPD 或 PPD 檢視中指定的至少一個條件約束,而呼叫端要求方法應該解決衝突。 此值會導致已解決衝突的變更設定。
SETOPTIONS_RESULT_CONFLICT_NOT_RESOLVED 違反組態檔之 GPD 或 PPD 檢視中指定的至少一個條件約束,而呼叫端要求此方法不應解決衝突。 這些設定不會變更,而且衝突會維持不變。

傳回值

IPrintCoreHelper::SetOptions 應該傳回下列其中一個值。

傳回碼 描述
S_OK 作業成功。
E_INVALIDARG 一或多個自變數無效,或不支援此功能。
E_OUTOFMEMORY 無法配置結果陣列的記憶體。

對於其他失敗,方法應該會傳回標準 COM 錯誤碼。

言論

IPrintCoreHelper::SetOptions 可用來同時變更多個設定,並在設定所有選取的選項之後解析條件約束。 選項的變更會循序套用,從 pFOPairs 陣列的開頭開始,因此如果相同的功能出現在此陣列中兩次,則只會選取功能的最後一個選項。 除非 bResolveConflicts 參數 TRUE,否則不會認可選項的變更(也就是儲存至登錄)。

在大部分情況下,bResolveConflicts 參數應該設定為 true 。 如果您想要提示使用者解決衝突,請將此參數設定為 FALSE

要求

要求 價值
目標平臺 桌面
標頭 prcomoem.h (include Prcomoem.h)

另請參閱

IPrintCoreHelper

IPrintCoreHelper::GetOption