다음을 통해 공유


USBPRINT에 대한 프로그래밍 고려 사항

Usbprint.sysUSBMON과 함께 병렬 프린터에서 사용하는 것과 매우 유사한 인터페이스를 제공합니다. 대부분의 경우 단일 프린터 드라이버 또는 언어 모니터가 수정 없이 병렬 및 USB 프린터 모두에서 올바르게 작동할 수 있습니다. 언어 모니터가 WritePortReadPort 함수와 IOCTL_PAR_QUERY_DEVICE_ID 요청만 사용하는 경우 USB와 병렬 프린터 간에 이식 가능합니다.

경우에 따라 언어 모니터가 특수 프린터 기능을 활용하기 위해 프린터에 대한 공급업체별 요청을 수행해야 할 수 있습니다. 이렇게 하려면 IOCTL_USBPRINT_VENDOR_SET_COMMAND 사용하고 IOCTL_USBPRINT_VENDOR_GET_COMMAND. 그러나 이러한 IOCTL을 사용하면 언어 모니터가 병렬 포트 모니터와 호환되지 않습니다.

언어 모니터는 일반적으로 관리하는 프린터의 디바이스 핸들에 액세스할 수 없습니다. 대신 언어 모니터와 버스 드라이버(이 경우Usbprint.sys ) 사이에 있는 포트 모니터에서 제공하는 포트 이름이 있습니다. 자세한 내용은 언어 및 포트 모니터 상호 작용 을 참조하세요. 디바이스 핸들이 없을 경우 언어 모니터가 디바이스 버스 드라이버 IOCTL을 직접 호출할 수 없습니다. 이러한 제한을 극복하기 위해 USBMON은 언어 모니터가 USBMON을 통해 USBPRINT로 IOCTL을 발급할 수 있는 GetPrinterDataFromPort API를 구현합니다.

USB 인쇄 스택은 병렬 인쇄 스택과 다음 API 및 IOCTL을 공유합니다.

WritePort

ReadPort

IOCTL_PAR_QUERY_DEVICE_ID

다음 IOCTL은 USB 인쇄 스택과 관련이 있습니다.

IOCTL_USBPRINT_GET_1284_ID

IOCTL_USBPRINT_GET_LPT_STATUS

IOCTL_USBPRINT_SOFT_RESET

IOCTL_USBPRINT_VENDOR_GET_COMMAND

IOCTL_USBPRINT_VENDOR_SET_COMMAND

참고

Usbprint.sys 디바이스에서 설명자를 가져오거나 USB 파이프를 직접 조작하는 메커니즘을 제공하지 않습니다.