LPT ポートに接続されているプリンター
LPT 列挙子は、バス ドライバーの例です。 LPT 列挙子は、IEEE 1284 拡張機能ポート プロトコルおよび ISA インターフェイス標準に準拠する LPT ポート ハードウェアから識別情報を取得できます。
Windows 2000 以降のシステムが起動すると、構成マネージャーは LPT 列挙子を呼び出して、LPT ポートに接続されている IEEE 1284 互換デバイスを列挙します。 検出されたそれぞれのデバイスに対し、構成マネージャーはプリンター クラス インストーラーを呼び出します。 プリンター クラス インストーラーは、SetupDi のプレフィックスを持つデバイス インストール関数を呼び出して、プリンター INF ファイルから情報を取得します。
パラレル接続プリンターの場合、パラレル列挙子は、プリンターから受信した 1284 文字列から生成される一意のハードウェア ID を持つ devnode を作成します。
1284 文字列の例を次に示します。
"MANUFACTURER:Hewlett-Packard;COMMAND SET:PJL,MLC,PCL,POSTSCRIPT;MODEL:HP Color LaserJet 550;CLASS:PRINTER;COMMENT:HP LaserJet;"
パラレル列挙子は、この 1284 文字列から次のハードウェア ID を生成します。
LPTENUM\Hewlett-PackardHP_Co3115
ハードウェア ID は、列挙子プレフィックスとそれに続く製造元名、モデル名、および巡回冗長検査 (CRC) コードで構成されます。 ハードウェア ID の最後の 4 桁である CRC コードは、製造元とモデルの文字列から生成されます。 文字列内のスペースはアンダースコアに置き換えられます。
デバイスから 1284 ID 文字列を読み取るには、IOCTL_PAR_QUERY_DEVICE_ID を送信します。 スプーラーは LPTx シンボリック リンク (ここで、x は LPT 番号 1、2、または 3) をスプーラーの名前付きパイプにリダイレクトすることに注意してください。これは、スプーラーが実行されている場合、parport は LPTx に送信された IOCTL を認識しないことを意味します。
パラレル接続されたプラグ アンド プレイ プリンターの devnode は、HKLM\SYSTEM\CurrentControlSet\Enum\LPTENUM の下に配置され、次の形式のハードウェア ID を 1 つ持ちます。
LPTENUM\Company_NameModelNam1234
次のコード サンプルの後の図にドライバー スタックを示します。
次の例では、LPTENUM\Company_NameModelNam1234 形式のハードウェア ID を正しく "プラグ アンド プレイ" する INF コードを示します。 INF Manufacturer セクションに "Model Name XYZ" デバイスの記述が 2 つあることに注意してください。 最初の行のハードウェア ID にはバス列挙子が含まれていますが、2 行目のハードウェア ID には含まれていません。 この 2 行により、プリンターがインストールされているバスの種類に関係なく、ランク 0 のハードウェア ID が一致することが保証されます。 詳細については、「カスタム プラグ アンド プレイ プリンター ドライバーのインストール」を参照してください。
[Manufacturer]
%Company_Name%=Company_Name
; Section name for all drivers for Company_Name
[Company_Name]
"Model Name XYZ" = Install_Section_XYZ, LPTENUM\Company_NameModelNam1234 ; plus any compatible IDs
"Model Name XYZ" = Install_Section_XYZ, Company_NameModelNam1234 ; plus any compatible IDs
; The install section for the XYZ model
[Install_Section_XYZ]
[Strings]
Company_Name="Company Name"
他のモデルとデバイス ID を共有するプリンターの場合、INF ファイルは次のようになります。
[Manufacturer]
%Company_Name%=Company_Name
; The section for all drivers for Company_Name
[Company_Name]
"Model Name XYA" = Install_Section_XYA, LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs
"Model Name XYA" = Install_Section_XYA, Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs
"Model Name XYB" = Install_Section_XYB, LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234; plus any other compatible IDs
"Model Name XYB" = Install_Section_XYB, Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs
; The install sections
[Install_Section_XYA]
[Install_Section_XYB]
[ControlFlags]
InteractiveInstall = LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234
[Strings]
Company_Name = "Company Name"
前の例と同様に、INF Manufacturer セクションの各モデルは、ほぼ同じ内容の行のペアで表されます。 特定のモデルに対し、ペアの 1 つの行にはバス列挙子が含まれますが、もう一方の行には含まれません。 この 2 行により、プリンターがインストールされているバスの種類に関係なく、ランク 0 のハードウェア ID が一致することが保証されます。 詳細については、「カスタム プラグ アンド プレイ プリンター ドライバーのインストール」を参照してください。