次の方法で共有


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 は、既定または現在の DEVMODEW 構造体ではなく 、pDevmode によって指される DEVMODEW 構造体を使用する必要があります。 このメソッドがプラグイン プロバイダーから、または IPrintOemPS::D evMode または IPrintOemUni::D evMode のいずれかから呼び出される場合は、このパラメーターが必要です。 その他のほとんどの場合、 パラメーターは NULL にする必要があります。 コア ドライバーは 、pDevmodeを NULL に設定すると、渡された DEVMODEW 構造体の状態ではなく、内部状態を変更します。 これは、 DrvDocumentPropertySheets などの DDI によって返される DEVMODEW 構造体が、コア ドライバーの UI モジュールによって処理される、完全な UI 置換などの操作中に必要です。

[in] cbSize

pDevmode パラメーターによって指される DEVMODEW 構造体のサイズ (バイト単位)。

[in] bResolveConflicts

構成ファイルの GPD ビューまたは PPD ビューで指定された 1 つ以上の制約、および Unidrv または Pscript または印刷プロセッサによって実装される機能の制約によって発生する競合を、 IPrintCoreHelper::SetOptions で解決するかどうかを示すブール値。 TRUE の場合、このメソッドは競合の解決を試みる必要があります。 FALSE の場合、このメソッドは競合の解決を試みてはなりません。 詳細については、「解説」を参照してください。

[in] pFOPairs

PRINT_FEATURE_OPTION要素の配列。各要素には機能オプションのペアが含まれています。 各機能とオプションのペアには、機能とその機能に対して選択するオプションが一覧表示されます。 すべての設定が順番に適用されます。 重複は許可されませんが、後で配列に表示される設定 (つまり、上位のインデックス) は、配列の前に表示されたものをオーバーライドします。

[in] cPairs

pFOPairs パラメーターによって指される機能とオプションのペアの数。

[out] pcPairsWritten

IPrintCoreHelper::SetOptions が返されるか失敗する前に正常に保存された機能とオプションのペアの数を受け取る変数へのポインター。 このメソッドが正常に返された場合、*pcPairsWrittencPairs と同じ値を持ちます。 メソッドが失敗した場合、*pcPairsWrittencPairs の値を通じて 0 から任意の値を持つことができます。 このパラメーターは省略可能であり、 NULL にすることができます

[out] pdwResult

競合解決の状態を受け取る変数へのポインター。 状態には、次のいずれかの値を指定できます。

説明
SETOPTIONS_RESULT_NO_CONFLICT 新しい設定に対して、構成ファイルの GPD ビューまたは PPD ビューで指定された制約に違反はありませんでした。
SETOPTIONS_RESULT_CONFLICT_RESOLVED 構成ファイルの GPD ビューまたは PPD ビューで指定された制約が少なくとも 1 つ違反しており、呼び出し元はメソッドで競合を解決する必要があることを要求しました。 この値により、競合が解決された設定が変更されます。
SETOPTIONS_RESULT_CONFLICT_NOT_RESOLVED 構成ファイルの GPD ビューまたは PPD ビューで指定された制約が少なくとも 1 つ違反しており、呼び出し元はメソッドが競合を解決しないように要求しました。 設定は変更されず、競合は残ります。

戻り値

IPrintCoreHelper::SetOptions は、次のいずれかの値を返す必要があります。

リターン コード 説明
S_OK 操作が成功しました。
E_INVALIDARG 1 つ以上の引数が無効であるか、機能がサポートされていません。
E_OUTOFMEMORY 結果配列のメモリを割り当てませんでした。

その他のエラーの場合、メソッドは標準の COM エラー コードを返す必要があります。

注釈

IPrintCoreHelper::SetOptions を使用すると、複数の設定を同時に変更したり、選択したすべてのオプションを設定した後に制約を解決したりできます。 オプションの変更は、 pFOPairs 配列の先頭から順番に適用されるため、この配列に同じ機能が 2 回表示される場合は、その機能の最後のオプションのみが選択されます。 bResolveConflicts パラメーターが TRUE でない限り、オプションの変更はコミットされません (つまり、レジストリに保存されます)。

ほとんどのシナリオでは、 bResolveConflicts パラメーターをTRUE に設定する必要があります。 競合の解決をユーザーに求める場合は、このパラメーターを FALSE に設定します。

要件

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

こちらもご覧ください

IPrintCoreHelper

IPrintCoreHelper::GetOption