ポート モニター
ポート モニターは、ユーザー モード DLL で構成されます。 ユーザー モード印刷スプーラーと I/O ポート ハードウェアにアクセスするカーネル モード ポート ドライバーの間の通信パスを提供する役割を担います。 ポート モニターは通常、CreateFile、WriteFile、ReadFile、DeviceIOControl 関数を使用してカーネル モードポート ドライバーと通信します。 ポート モニターは「ポートの管理」の説明に従 って、サーバーのプリンター ポートの管理と構成も行います。
NT ベースのオペレーティング システム ユーザーの "プリンター" ビューは、実際には 1 つ以上の物理プリンター デバイスを接続できる印刷キューです。 ポートは、印刷キューと 1 つのプリンター デバイスの間の物理的な接続です。 各ポート モニターは、1 つ以上の種類のポートの 1 つ以上のインスタンスをサポートします。 たとえば、 サンプル ポート モニター Localmon.dll、サーバーのすべてのローカル COM ポートと LPT ポートをサポートできます。 印刷フォルダーは、AddPrinter 関数を呼び出してポート モニターにポートを割り当てます。
(複数のポートを介して) 複数のプリンター デバイスを表す印刷キューの場合、スプーラーは各印刷ジョブを最初の使用可能なポートに送信します。 ポート モニターが、指定されたポートがビジー状態であることを示すか、エラーが発生した場合、スプーラーはジョブをキューに再送信し、ポート モニターでサポートされている別のポートを指定します。
Localmon.dll 以外にも、Windows 2000 以降のオペレーティング システム バージョンには、追加のポート モニターがいくつか用意されています。 「Windows 2000 サーバー リソース キット」では、これらの各ポート モニターについて説明します。 (このリソースは、一部の言語や国では利用できない場合があります。)
カスタマイズされたポート モニターは、追加の種類の I/O ポート ハードウェアをサポートするように記述できます。
Windows 2000 以降の場合、各ポート モニターは 2 つの DLL に分割されます。
「ポート モニター UI DLL」 ポート モニターのユーザー インターフェイス DLL には、ユーザー インターフェイス機能が含まれており、印刷クライアント システムで実行されます。
この DLL は、クライアント システムの System32 サブディレクトリに存在する必要があります。
ポート モニター サーバー DLL
ポート モニターのサーバー DLL には、ポート通信機能が含まれており、プリント サーバー上で実行されます。 ユーザー インターフェイスを表示することはできません。
UI DLL は、スプーラー の XcvData 関数を呼び出すことによって、サーバー DLL と通信します。
サンプル ポート モニターは、Windows Driver Kit (WDK) に含まれています。