次の方法で共有


印刷プロバイダーの概要

警告

Windows 10 以降では、サード パーティの印刷プロバイダーをサポートする API は非推奨となります。 Microsoft は、サード パーティの印刷プロバイダーへの投資を推奨していません。 さらに、v4 印刷ドライバー モデルを使用できる Windows 8 以降の製品では、サード パーティの印刷プロバイダーが v4 印刷ドライバーを使用するキューを作成または管理できない場合があります。

印刷プロバイダーは、印刷ジョブをローカルまたはリモートの印刷デバイスに転送する役割を担います。 また、サーバーの印刷キューの開始、停止、列挙などの印刷キュー管理操作も担当します。 印刷プロバイダーは、コンピューターに依存しない、オペレーティング システムに依存しない高レベルの印刷サーバーのビューを定義します。

すべての印刷プロバイダーは、一連の共通の印刷プロバイダー機能を実装します。 これらの機能は、スプーラーのルーター (Spoolss.dll) によって呼び出される API 関数のセットによって定義されます。

印刷プロバイダーによって定義されるほとんどの関数には、入力としてプリンター ハンドルが必要です。 スプーラー クライアントは、API サーバー (Spoolsv.exe) を呼び出す Winspool.drv で OpenPrinter を呼び出すことによってプリンター ハンドルを取得します。 スプーラーのルーター (Spoolss.dll) は、プリンター ハンドルと印刷プロバイダー が指定されたプリンター名を認識することを示す戻り値を提供するまで、各印刷プロバイダーの OpenPrinter 関数を呼び出します。 その後、ルーターは API サーバーに独自のハンドルを返します。 ルーターのハンドルには、プリンター ハンドルとプロバイダー ハンドルの両方が含まれます。 このハンドルは、アプリケーションからの後続の呼び出しを適切なプロバイダーとプリンターに転送できるように、アプリケーションに返されます。

Microsoft では、Windows 2000 以降で次の印刷プロバイダーを提供しています。

Localspl.dll
ローカル印刷プロバイダー ローカル サーバーから管理されているプリンターに送信されるすべての印刷ジョブを処理します。

Win32spl.dll
Windows ネットワーク印刷プロバイダー。 リモート Win32 (NT ベースのオペレーティング システムまたはワークグループ用 Windows) サーバーに送信される印刷ジョブを処理します。 ジョブがリモート サーバーに到着すると、サーバーのローカル印刷プロバイダーに渡されます。

Nwprovau.dll
Novell NetWare 印刷プロバイダー。 Novell NetWare プリント サーバーに送信される印刷ジョブを処理します。

Inetpp.dll
HTTP 印刷プロバイダー URL に送信された印刷ジョブを処理します。

ベンダーは、追加のネットワーク印刷プロバイダーを作成できます。 詳細については、ネットワーク印刷プロバイダーの作成を参照してください。

次の図は、これらの印刷プロバイダーに関係する可能性のあるフロー パスを示しています。

print provider flow paths.

図を表示するときは、次の点を考慮する必要があります。

  • プリンターがクライアント システムによって管理されている場合、印刷ジョブはローカル印刷プロバイダー (Localspl.dll) によって処理されます。 Localspl.dll によって管理されるプリンターは、クライアントに物理的にローカルである必要はありません。ネットワーク カードに直接接続できます。

  • プリンターが NT ベースのオペレーティング システム サーバーにある場合、ネットワーク プロバイダー (Win32spl.dll) は RPC を使用して、クライアントのルーターからサーバーのSpoolsv.exe プロセスに呼び出しをリダイレクトします。 プリンターはサーバーに対してローカルであるため、サーバーのローカル印刷プロバイダーが印刷ジョブを処理します。

  • プリンターが他の種類のサーバーにある場合は、ローカル印刷プロバイダー、またはそのサーバーの種類をサポートするネットワーク印刷プロバイダーが、サーバーでサポートされているデータ形式とネットワーク プロトコルを使用してアクセスできます。

  • ローカル印刷プロバイダーがリモート プリンターにアクセスするには、リモート プリンターまたはサーバーによって認識されるネットワーク プロトコルを使用できるポート モニターが含まれている必要があります。