次の方法で共有


USBPRINT のプログラミング考慮事項

Usbprint.sys は、USBMON と共に、パラレル プリンターで使用されるインターフェイスと非常によく似たインターフェイスを提供します。 多くの場合、1 つのプリンター ドライバーまたは言語モニターをパラレル プリンターと USB プリンターの両方で変更なしで正常に動作させることができます。 言語モニターで WritePort 関数、ReadPort 関数、IOCTL_PAR_QUERY_DEVICE_ID 要求のみが使用されている場合は、USB プリンターとパラレル プリンターの間で移植が可能になります。

場合によっては、特殊なプリンター機能を利用するために、言語モニターがプリンターに対してベンダー固有の要求を行う必要がある場合があります。 これを行うには、IOCTL_USBPRINT_VENDOR_SET_COMMANDIOCTL_USBPRINT_VENDOR_GET_COMMAND を使用します。 ただし、これらの IOCTL を使用すると、パラレル ポート モニターと互換性のない言語モニターがレンダリングされることに注意してください。

言語モニターは、通常、管理しているプリンターのデバイス ハンドルにアクセスできません。 代わりに、言語モニターとバス ドライバー (この場合は Usbprint.sys) の間に配置されるポート モニターによって提供されるポート名があります。 詳細については、「言語とポート モニターの相互作用」を参照してください。 デバイス ハンドルがないため、言語モニターはデバイス バス ドライバーの IOCTL を直接呼び出すことができません。 この制限を克服するために、USBMON は GetPrinterDataFromPort API を実装します。これにより、言語モニターは USBMON 経由で USBPRINT に IOCTL を発行できます。

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

Note

Usbprint.sys では、デバイスから記述子を取得したり、USB パイプを直接操作したりするためのメカニズムは提供されません。