共用方式為


IPrintCoreHelperUni::SetOptions 方法 (prcomoem.h)

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

[in] cbSize

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

[in] bResolveConflicts

布爾值,指出 IPrintCoreHelperUni::SetOptions 是否應該解決來自組態檔 GPD 檢視中一或多個條件約束的衝突,以及 Unidrv 或列印處理器所實作之功能的條件約束。 如果 為 TRUE,這個方法應該會嘗試解決衝突。 如果為 FALSE,這個方法不應該嘗試解決衝突。

[in] pFOPairs

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

[in] cPairs

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

[out] pcPairsWritten

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

[out] pdwResult

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

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

傳回值

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

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

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

備註

IPrintCoreHelperUni::SetOptions 可用來同時進行多個設定變更,以及在設定所有選取的選項之後解析條件約束。 選項的變更會循序套用,從 pFOPairs 陣列的開頭開始,因此,如果相同的功能在此陣列中出現兩次,則只會選取功能的最後一個選項。 除非 bResolveConflicts 參數為 TRUE,否則不會認可選項的變更。

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

規格需求

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

另請參閱

IPrintCoreHelperUni

IPrintCoreHelperUni::GetOption