次の方法で共有


プリンター ディレクトリ サービスの印刷ドライバー サポート

プリンター ドライバーは、印刷キューをディレクトリ サービスに発行する責任を負いません。 Microsoft Windows 2000 以降の印刷フォルダーは、プリンターのインストール プロセス中に (スプーラーの SetPrinter 関数を呼び出すことによって) 印刷キュー オブジェクトを作成します。

ユーザーがタスク バーの [スタート] メニューの [検索] オプションを使用して特定のプロパティを持つプリンターを検索できるように、印刷キューのプロパティが発行されます。 印刷フォルダーは、DriverCapabilities から使用できるプリンター機能の一部 (すべてではありません) を発行します。 閲覧目的に役立つと見なされる機能のみが発行されます。

プリンター ドライバーは、印刷キュー オブジェクトのプロパティ情報を追加または変更できます。 発行できる印刷キューのプロパティは、winspool.h に定義された、SPLDS_ のプレフィックスが付いた定数によって識別されます。 プリンターのプロパティを追加または変更するために、ドライバーは、これらの定義済みのプロパティ名識別子を使用する必要があります。

印刷キュー オブジェクトのプロパティ情報を追加または変更するには、次の手順を実行します。

  1. スプーラーの SetPrinterDataEx 関数を呼び出して、レジストリの SPLDS_DRIVER_KEY の下にプロパティ名と値を追加します。

  2. スプーラーの SetPrinter 関数を呼び出し、PRINTER_INFO_7 入力構造体 (Windows SDK ドキュメントで説明されています) と DSPRINT_UPDATE アクションを使用して、発行された印刷キュー オブジェクトを更新する必要があることをスプーラーに通知します。 (ドライバーで DSPRINT_PUBLISH アクションを指定してはなりません)。

これらの手順は、プリンター ドライバーの DrvPrinterEvent 関数内で、関数が PRINTER_EVENT_INITIALIZE イベントを受信するときに実装する必要があります。

ドライバーがプリンターの発行されたプロパティの現在の値を取得する必要がある場合は、GetPrinterDataEx または EnumPrinterDataEx を呼び出して、スプーラーによって管理されて常に最新に保たれている情報をレジストリから取得する必要があります。 別の方法として、GetPrinter を呼び出して印刷キューのオブジェクト識別子を取得し、ADSI 関数を呼び出して発行されたプロパティの値を取得します。 この手法は、多くのリソースを消費するうえ、返されるデータが常に最新であるとは限らないため、お勧めしません。