次の方法で共有


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

予約済みであり、0 に設定する必要があります。

[in] pszFeatureKeyword

呼び出し元に関心のある単一の特徴キーワードを含む呼び出し元が指定したバッファーへのポインター。

[in] pszOptionKeyword

option キーワードを含む呼び出し元が指定したバッファーへのポインター。

[out] pmszReasonList

指定した機能/オプションに制約を配置する機能/オプション キーワード ペアの一覧を受け取る呼び出し元が指定したバッファーへのポインター。 このリストはMULTI_SZ形式で、リスト内の各項目は null 文字で区切られます。 リストは 2 つの null 文字で終了します。

リストを入力せずに理由リストのサイズ (*pcbNeeded) を照会するには、このパラメーターを NULL 設定します。

[in] cbSize

pmszReasonList が指すバッファーのサイズバイト単位で指定します。

[out] pcbNeeded

理由リストの実際のサイズ (バイト単位) を受け取るメモリ位置へのポインター。

戻り値

このメソッドは、次のいずれかの値を返す必要があります。

リターン コード 形容
S_OK
メソッドは成功しました。
E_OUTOFMEMORY
cbSize の値が、出力バッファーに書き込まれるバイト数 (pmszReasonList 指すバッファー) よりも小さかった。

このメソッドは、pmszReasonList null 設定 呼び出されました。

E_NOTIMPL
このメソッドはサポートされていません。
E_INVALIDARG
パラメーターが無効なコンテキスト オブジェクトを指しています。

機能キーワードまたはオプション キーワードが認識されませんでした。

機能の持続性 (プロパティ シート ページDriver-Supplied 置き換えるを参照) は、現在のコンテキストで指定されているのと一致しませんでした。

E_FAIL
メソッドが失敗しました

備考

このメソッドは、コア ドライバーの標準 UI ページを完全に置き換える Windows XP Pscript5 UI プラグインでのみサポートされ、UI プラグインの IPrintOemUI::D ocumentPropertySheets および IPrintOemUI::D evicePropertySheets 関数、およびプロパティ シート コールバック ルーチン中にのみサポートされます。 詳細については、「プロパティ シート ページ Driver-Supplied 置き換える」 を参照してください。

OEM UI のユーザーが制約されている項目を選択しようとすると、呼び出し元は、このメソッドを使用して、アイテムが制約されている理由を説明するメッセージを表示できます。 このメソッドから制御が戻ると、pmszReasonList は、現在のドライバー設定に表示される 1 つ以上の機能/オプション ペアの一覧を指しますが、選択した機能/オプション キーワードと競合します。 競合がない場合、メソッドはS_OKを返し、pmszReasonList null 文字のみを含む空の ASCII 文字列を入力し、*pcbNeeded を 1 に設定する必要があります。

データ アクセスごとに 2 つの呼び出しを行う必要性を減らすには、メソッドに固定サイズ (1 KB など) の出力バッファーを渡し、関数の戻り値を確認します。 メソッドがS_OKを返す場合、バッファーには対象のデータが既に含まれています。 メソッドがE_OUTOFMEMORYを返す場合、*pcbNeeded の値は、目的のデータを保持するために必要なバッファー サイズです。 呼び出し元は、その大きなサイズのバッファーを割り当て、メソッドの 2 番目の呼び出しを続行する必要があります。

必要条件

要件 価値
ターゲット プラットフォーム デスクトップ
ヘッダー prcomoem.h (Prcomoem.h を含む)

関連項目

IPrintCoreUI2

IPrintCoreUI2::EnumConstrainedOptions

IPrintOemUI::D evicePropertySheets

IPrintOemUI::D ocumentPropertySheets

OEMUIOBJ する