次の方法で共有


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

呼び出し元が対象とする単一の機能を含む呼び出し元から提供されるバッファーへのポインターキーワード (keyword)。

[in] pszOptionKeyword

オプション キーワード (keyword)を含む呼び出し元が指定したバッファーへのポインター。

[out] pmszReasonList

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

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

[in] cbSize

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

[out] pcbNeeded

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

戻り値

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

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

pmszReasonListNULL に設定して、メソッドが呼び出されました。

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

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

機能の持続性 ( 「プロパティ シート ページ 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 番目の呼び出しを続行する必要があります。

要件

要件
対象プラットフォーム デスクトップ
Header prcomoem.h (Prcomoem.h を含む)

こちらもご覧ください

IPrintCoreUI2

IPrintCoreUI2::EnumConstrainedOptions

IPrintOemUI::D evicePropertySheets

IPrintOemUI::D ocumentPropertySheets

OEMUIOBJ