IPrintCoreHelperPS::SetOptions 方法 (prcomoem.h)

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

[in] cbSize

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

[in] bResolveConflicts

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

[in] pFOPairs

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

[in] cPairs

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

[out] pcPairsWritten

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

[out] pdwResult

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

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

傳回值

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

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

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

備註

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

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

規格需求

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

另請參閱

IPrintCoreHelperPS

IPrintCoreHelperPS::GetOptions