IPrintCoreUI2::WhyConstrained 方法 (prcomoem.h)

方法 IPrintCoreUI2::WhyConstrained 會決定為何會限制指定的特徵/選項選取。

語法

HRESULT WhyConstrained(
  [in]  POEMUIOBJ poemuiobj,
  [in]  DWORD     dwFlags,
  [in]  PCSTR     pszFeatureKeyword,
  [in]  PCSTR     pszOptionKeyword,
  [out] PZZSTR    pmszReasonList,
  [in]  DWORD     cbSize,
  [out] PDWORD    pcbNeeded
);

參數

[in] poemuiobj

目前內容的指標, OEMUIOBJ 結構。

[in] dwFlags

為保留,且必須設定為零。

[in] pszFeatureKeyword

呼叫端提供的緩衝區指標,其中包含呼叫端感興趣的單一功能關鍵詞。

[in] pszOptionKeyword

包含 option 關鍵詞之呼叫端提供的緩衝區指標。

[out] pmszReasonList

呼叫端提供的緩衝區指標,接收功能/選項關鍵片語清單,將條件約束放在指定的功能/選項上。 此清單的格式MULTI_SZ,清單中的每個項目都會以 Null 字元分隔。 清單會以兩個 Null 字元終止。

將此參數設定為 NULL ,只要查詢原因清單的大小 (*) *) ,而不需要填入清單。

[in] cbSize

指定 pmszReasonList 所指向之緩衝區的大小,以位元組為單位。

[out] pcbNeeded

接收原因清單之實際大小的記憶體位置指標,以位元組為單位。

傳回值

方法必須傳回下列其中一個值。

傳回碼 描述
S_OK
此方法已成功。
E_OUTOFMEMORY
cbSize 中的值小於要寫入輸出緩衝區的位元元組數目, (pmszReasonList 所指向的緩衝區) 。

方法已呼叫, 並將 pmszReasonList 設定為 NULL

E_NOTIMPL
不支援此方法。
E_INVALIDARG
poemuiobj 參數指向無效的內容物件。

無法辨識 feature 關鍵詞或 option 關鍵詞。

功能黏性 (請參閱 取代 Driver-Supplied 屬性表頁面) 與目前內容中指定的不相符。

E_FAIL
方法失敗

備註

只有完全取代核心驅動程式標準 UI 頁面的 Windows XP Pscript5 UI 外掛程式才支援此方法,而且只有在 UI 外掛程式的 IPrintOemUI::D ocumentPropertySheetsIPrintOemUI::D evicePropertySheets 函式及其屬性表回呼例程期間才支援此方法。 如需詳細資訊 ,請參閱取代屬性表頁面 Driver-Supplied

當 OEM UI 的使用者嘗試選取受限制的專案時,呼叫端可以使用此方法來顯示訊息,說明專案限制的原因。 當此方法傳回時, pmszReasonList 會指向出現在目前驅動程式設定中的一或多個功能/選項組清單,但與選取的功能/選項關鍵詞衝突。 如果沒有衝突,方法應該會傳回 S_OK,pmszReasonList 應該填入只包含 Null 字元的空白 ASCII 字串,而 *azureNeeded 應該設定為 1。

若要減少每個數據存取兩次呼叫的需求,請傳遞固定大小的輸出緩衝區 (1 KB,例如) ,然後檢查函式傳回值。 如果方法傳回S_OK,則緩衝區已經包含感興趣的數據。 如果方法傳回E_OUTOFMEMORY,*azureNeeded 中的值就是保存感興趣的數據所需的緩衝區大小。 接著呼叫端應該配置該較大大小的緩衝區,然後繼續進行方法的第二次呼叫。

規格需求

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

另請參閱

IPrintCoreUI2

IPrintCoreUI2::EnumConstrainedOptions

IPrintOemUI::D evicePropertySheets

IPrintOemUI::D ocumentPropertySheets

OEMUIOBJ