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 evMode 或 IPrintOemUni::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::SetOptions 傳回或失敗之前成功儲存的功能選項組數目。 如果此方法成功傳回,*pcPairsWritten 的值會與 cPairs 相同。 如果方法失敗,*pcPairsWritten 可以有從零到 cPairs 值的任何值。 此參數是選擇性的,可以是 NULL。
[out] pdwResult
接收衝突解決狀態之變數的指標。 狀態可以是下列其中一個值。
值 | Description |
---|---|
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 (包括 Prcomoem.h) |