LPT 포트에 연결된 프린터
LPT 열거자는 버스 드라이버의 예입니다. LPT 열거자는 IEEE 1284 확장 기능 포트 프로토콜 및 ISA 인터페이스 표준을 준수하는 LPT 포트 하드웨어에서 식별 정보를 가져올 수 있습니다.
Windows 2000 이상 시스템이 시작되면 구성 관리자는 LPT 열거자를 호출하여 LPT 포트에 연결된 IEEE 1284 호환 디바이스를 열거합니다. 발견된 각 디바이스에 대해 구성 관리자는 프린터 클래스 설치 관리자를 호출합니다. 프린터 클래스 설치 관리자는 프린터 INF 파일에서 정보를 가져오는 SetupDi 접두사 디바이스 설치 함수를 호출합니다.
병렬 연결 프린터의 경우 병렬 열거자는 프린터에서 받은 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가 있습니다.
LPTENUM\Company_NameModelNam1234
드라이버 스택은 다음 코드 샘플 다음에 나오는 그림에 나타납니다.
LPTENUM\Company_NameModelNam1234 형식의 하드웨어 ID를 올바르게 "연결하고 재생"하는 INF 코드가 다음 예제에 나와 있습니다. INF Manufacturer 섹션에서 "모델 이름 XYZ" 디바이스 설명이 두 번 표시됩니다. 첫 번째 줄의 하드웨어 ID에는 버스 열거자가 포함되지만 두 번째 줄의 하드웨어 ID는 포함되지 않습니다. 두 줄은 프린터가 설치된 버스 유형에 관계없이 순위-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 섹션 의 각 모델은 거의 동일한 줄 쌍으로 표시됩니다. 지정된 모델의 경우 쌍의 한 줄에는 버스 열거자가 포함됩니다. 다른 하나는 그렇지 않습니다. 두 줄은 프린터가 설치된 버스 유형에 관계없이 순위-0 하드웨어 ID 일치를 보장합니다. 자세한 내용은 사용자 지정 플러그 앤 플레이 프린터 드라이버 설치를 참조하세요.