次の方法で共有


印刷モニターの初期化

スプーラーが LoadLibrary を呼び出して印刷モニター DLL を読み込むと、システムは直ちに DLL の DllEntryPoint 関数を呼び出します。 通常、エントリ ポイント関数で DisableThreadLibraryCalls を呼び出すのが良い考えなので、スレッドの作成と削除時に DLL に不必要な通知は行われません。

各 DLL は初期化関数をエクスポートします。この関数は、LoadLibrary の呼び出し後にスプーラーによって呼び出されます。 言語モニター DLL とポート モニター サーバー DLL は、InitializePrintMonitor2 関数をエクスポートします。 ポート モニター UI DLL は InitializePrintMonitorUI 関数をエクスポートします。

これら 2 つの初期化関数は、印刷モニターによって定義された残りの関数へのポインターを返す役割を果たすので、スプーラーはそれらを呼び出すことができます。 初期化関数では、読み込み時の初期化操作を実行することもできます。 モニターの InitializePrintMonitor2 関数は、モニター インスタンス ハンドルを返します。 モニターは、インスタンス固有の情報を格納するためにローカル メモリを割り当て、割り当てられたメモリの識別子としてモニター ハンドルを使用する必要があります。

スプーラーを初めて起動すると、インストールされているすべてのモニター DLL が読み込まれます。 すべてのモニター初期化関数を呼び出した後、スプーラーは各ポート モニターの EnumPorts 関数を呼び出します。これにより、モニターでサポートされているポートが列挙されます。 (モニターは、モニターのデータベースにポートが追加されている場合にポートをサポートします(以下を参照)。 ポートの追加。)サポートされている各ポートは、ポートのオープンとクローズの説明に従って開かれます。