Programmeeroverwegingen voor USBPRINT

Usbprint.sys, samen met USBMON, biedt een interface die vergelijkbaar is met die van parallelle printers. In veel gevallen is het mogelijk dat één printerstuurprogramma of taalmonitor correct werkt op zowel parallelle als USB-printers zonder aanpassingen. Als een taalmonitor alleen gebruikmaakt van de functies WritePort en ReadPort en de IOCTL_PAR_QUERY_DEVICE_ID aanvraag, is deze overdraagbaar tussen USB en parallelle printers.

In sommige gevallen kan het nodig zijn voor een taalmonitor om leverancierspecifieke aanvragen te doen aan een printer om te profiteren van speciale printerfuncties. Gebruik hiervoor IOCTL_USBPRINT_VENDOR_SET_COMMAND en IOCTL_USBPRINT_VENDOR_GET_COMMAND. Houd er echter rekening mee dat met behulp van deze IOCTL's een taalmonitor wordt weergegeven die niet compatibel is met de parallelle poortmonitor.

Taalmonitors hebben normaal gesproken geen toegang tot een apparaatgreep voor de printer die ze beheren. Bovendien hebben ze een poortnaam die wordt opgegeven door de poortmonitor, die zich bevindt tussen de taalbeheerder en de busdriver (in dit geval Usbprint.sys). Zie Taal- en poortmonitorinteractie voor meer informatie. Het ontbreken van een apparaatgreep voorkomt dat taalmonitoren IOCTLs voor apparaatbusstuurprogramma's rechtstreeks aanroepen. Om deze beperking te verhelpen, implementeert USBMON de GetPrinterDataFromPort-API , waarmee taalmonitors IOCTLs via USBMON naar USBPRINT kunnen uitgeven.

De USB-afdrukstack deelt de volgende API's en IOCTL met de parallelle afdrukstack:

WritePort

ReadPort

IOCTL_PAR_QUERY_DEVICE_ID

De volgende IOCTL's zijn specifiek voor de USB-afdrukstack:

IOCTL_USBPRINT_GET_1284_ID

IOCTL_USBPRINT_GET_LPT_STATUS

IOCTL_USBPRINT_SOFT_RESET

IOCTL_USBPRINT_VENDOR_GET_COMMAND

IOCTL_USBPRINT_VENDOR_SET_COMMAND

Opmerking

Usbprint.sys biedt geen mechanisme voor het verkrijgen van descriptors van het apparaat, noch voor het rechtstreeks bewerken van USB-pijpen.