次の方法で共有


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

IPrintOemPrintTicketProvider::BindPrinter メソッドを使用すると、コア ドライバーは一連のプライベート名前空間 UNIFORM リソース識別子 (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 プラグインは、バージョン パラメーターで指定されている印刷スキーマのバージョンをサポートしていません。

備考

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

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

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

必要条件

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

関連項目

IPrintOemPrintTicketProvider

IPrintOemPrintTicketProvider::ConvertDevModeToPrintTicket

IPrintOemPrintTicketProvider::ConvertPrintTicketToDevMode

IPrintOemPrintTicketProvider::GetSupportedVersions