IPrintOemPrintTicketProvider::BindPrinter メソッド (prcomoem.h)

IPrintOemPrintTicketProvider::BindPrinter メソッドを使用すると、コア ドライバーはプライベート名前空間の一様リソース識別子 (URI) のセットをデバイスに関連付けることができます。 このメソッドを使用すると、後で使用できる情報 (プリンター ハンドルなど) をプラグインでキャッシュすることもできます。

構文

HRESULT BindPrinter(
  [in]  HANDLE     hPrinter,
  [in]  INT        version,
  [out] POEMPTOPTS pOptions,
  [out] INT        *cNamespaces,
  [out] BSTR       **ppNamespaces
);

パラメーター

[in] hPrinter

Unidrv によって提供されるスプーラーの印刷ハンドル。 プロバイダーのクライアントは、このハンドルの有効期間を管理する責任があるため、プロバイダーはいつでもこのハンドルを閉じてはいけません。 プロバイダーは、印刷ハンドルをキャッシュできます。このオブジェクトに対する今後のすべての呼び出しは、このハンドルに関連付けられているプリンターに対して相対的です。

[in] version

印刷スキーマのメジャー バージョン番号。 Windows Vista では、バージョン 1 のみがサポートされています。

[out] pOptions

次のいずれかの列挙値を受け取る変数へのポインター。

OEMPT_DEFAULT

システムは、DEVMODEW から印刷チケットへの変換で、プライベート DEVMODEW 構造体のバイナリ エンコード (バイナリ ラージ オブジェクト [BLOB]) を印刷チケットに配置します。

OEMPT_NOSNAPSHOT

DEVMODEW から印刷チケットへの変換では、システムは、プライベート DEVMODEW 構造体のバイナリ エンコード (BLOB) を印刷チケットに配置しません。 すべてのパブリックおよびプライベート DEVMODEW メンバーが印刷チケットで完全に表されている場合は、この値を使用します。

呼び出される OEM オブジェクトは、このパラメーターが指す値を設定する必要があります。

[out] cNamespaces

プラグインで使用されるプライベート名前空間 URI の数を受け取る変数へのポインター。 この数値は、*ppNamespaces によって指される配列内の文字列の数を表します。

[out] ppNamespaces

BSTR 配列の最初の要素のアドレスを受け取る変数へのポインター。 プラグインは、各配列位置に名前空間 URI を入力します。 このパラメーターの詳細については、次の「解説」セクションを参照してください。

戻り値

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

リターン コード 説明
S_OK 操作が成功しました。
E_VERSION_NOT_SUPPORTED プラグインは、version パラメーターで指定された印刷スキーマの バージョン をサポートしていません。

注釈

プラグインは、 ppNamespaces パラメーターによって指される配列と名前空間 URI 文字列にメモリを割り当てる役割を担います。 配列は、CoTaskMemAlloc 関数を使用して割り当てる必要があります。名前空間文字列は、SysAllocString 関数を使用して割り当てる必要があります。 これらの両方の関数については、Microsoft Windows SDKドキュメントで説明されています。 ppNamespaces パラメーターが指す配列は、印刷スキーマ キーワードまたは印刷スキーマ フレームワークの名前空間を含める必要はありません。

デバイスへのバインドにより、プロバイダーは特定のオブジェクトをキャッシュし、そのデバイス上の今後の印刷チケットまたは印刷機能サービスに必要な処理を行うことができます。 たとえば、 hPrinter のプリンター ハンドルをキャッシュできます。 IPrintOemPrintTicketProvider::BindPrinter は 1 回だけ呼び出されます。

IPrintOemPrintTicketProvider オブジェクトは、複数回バインドできる必要はありません。 印刷チケット マネージャーは、異なるデバイスへのバインドに常に異なる IPrintOemPrintTicketProvider オブジェクト インスタンスを使用します。 IPrintOemPrintTicketProvider オブジェクトの参照カウントが 0 の場合、IPrintOemPrintTicketProvider::BindPrinter の正常な呼び出しで取得されたすべてのリソースを解放する必要があります。 (プロバイダーは BindPrinter の呼び出しに渡されたハンドルを閉じないように注意してください)。 複数のバージョンがサポートされている場合、印刷チケット マネージャーは、異なるバージョンの同じデバイスに対して複数のプロバイダーを作成する場合があります。

要件

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

こちらもご覧ください

IPrintOemPrintTicketProvider

IPrintOemPrintTicketProvider::ConvertDevModeToPrintTicket

IPrintOemPrintTicketProvider::ConvertPrintTicketToDevMode

IPrintOemPrintTicketProvider::GetSupportedVersions