次の方法で共有


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

ディレクトリ サービスの印刷スプーラーのサポートは、次のもので構成されます。

  • 印刷キューの発行

  • 3 つのレジストリ キーの管理

  • スプーラー メインに含まれたレジストリ キーへのアクセスを許可する

  • 印刷キューのパブリケーション状態を返す

印刷キューの発行

SetPrinter 関数を使用すると、呼び出し元は印刷キュー オブジェクトを発行、発行解除、または更新できます。 このような場合は、SetPrinter 関数を PRINTER_INFO_7 の入力構造で呼び出す必要があります。

印刷キュー オブジェクトは、ユーザーが接続されているプリント サーバーを記述するコンピューター オブジェクトに関連付けられている場合にのみ発行できます。 印刷キューを発行するユーザーの機能は、ユーザーのクライアント セキュリティ コンテキストに含まれるアクセス権によって決まります。 印刷キューに対するプリンターの管理権限がある場合は、印刷キューを発行できます。

3 つのレジストリ キーの管理

3 つのレジストリ キーには、印刷キュー オブジェクトに発行されたすべての情報のコピーが含まれています。 3 つのキーは、winspool.h で定義されている次の識別子を使用して参照されます。

キー Definition
SPLDS_DRIVER_KEY スプーラーまたはドライバーから提供できるドライバー固有の情報を格納する場合。
SPLDS_SPOOLER_KEY スプーラー指定のスプーラー固有の情報を格納する場合。
SPLDS_USER_KEY アプリケーション提供のユーザー固有の情報を格納する場合。

スプーラーは、SPLDS_DRIVER_KEYを使用して、DeviceCapabilities 関数を呼び出すことによって取得できるドライバー機能を格納します。 ドライバーは「プリンター ディレクトリ サービスのプリンター ドライバーのサポート」で説明 されているように、スプーラーが取得できないドライバー機能を格納する役割を担います。 これらのキーの下に格納されている値は、winspool.h で定義SPLDS_プレフィックス付き定数で識別する必要があります。

スプーラーは、印刷キュー オブジェクトが最後に更新されてから、これらのキーの下のどの値が変更されたかを追跡します。 スプーラーは、印刷キュー オブジェクトを発行または更新するたびに、変更されたすべての値をオブジェクトにコピーします。

スプーラー メインに含まれたレジストリ キーへのアクセスを許可する

スプーラーを使用すると、プリンター ドライバーは、SetPrinterDataExGetPrinterDataExEnumPrinterDataEx 関数を呼び出すことによって、3 つのスプーラー メインに含まれるレジストリ キーにアクセスできます。 SetPrinterDataEx 関数はキーの下に値を設定し、GetPrinterDataExEnumPrinterDataEx は現在の値を返します。 ドライバーは、SPLDS_SPOOLER_KEY キーの下に値を設定しないでください。 これらの関数の呼び出し元は、完全なレジストリ パスを指定しません。関数は、指定された印刷キューのレジストリ エントリへのパスを自動的に決定します。

印刷キューのパブリケーション状態を返す

GetPrinter 関数を使用すると、呼び出し元は、印刷キューが現在発行されているかどうかを判断できます。 この場合は、GetPrinter 関数を PRINTER_INFO_7 の入力構造で呼び出す必要があります。 この関数は、印刷キューのパブリケーション状態 (発行済みまたは発行されていない) とオブジェクト識別子を返します。