Share via


Considerazioni sulla programmazione per USBPRINT

Usbprint.sys, insieme a USBMON, fornisce un'interfaccia molto simile a quella usata dalle stampanti parallele. In molti casi, è possibile che un singolo driver di stampante o monitoraggio del linguaggio funzioni correttamente su stampanti parallele e USB senza modifiche. Se un monitoraggio del linguaggio usa solo le funzioni WritePort e ReadPort e la richiesta di IOCTL_PAR_QUERY_DEVICE_ID , sarà portabile tra stampanti USB e parallele.

In alcuni casi, potrebbe essere necessario che un monitoraggio della lingua faccia richieste specifiche del fornitore a una stampante per sfruttare le funzionalità speciali della stampante. A tale scopo, usare IOCTL_USBPRINT_VENDOR_SET_COMMAND e IOCTL_USBPRINT_VENDOR_GET_COMMAND. Si noti tuttavia che l'uso di questi IOCTLs esegue il rendering di un monitoraggio del linguaggio incompatibile con il monitoraggio della porta parallela.

I monitoraggi linguistici normalmente non hanno accesso a un handle di dispositivo per la stampante che gestiscono. Invece, hanno un nome di porta fornito dal monitor della porta che si trova tra il monitoraggio della lingua e il driver del bus (Usbprint.sys in questo caso). Per altre informazioni, vedere Linguaggio e monitoraggio delle porte . La mancanza di un handle del dispositivo impedisce ai monitoraggi linguistici di chiamare direttamente IOCTLs del driver del bus di dispositivo. Per superare questa limitazione, USBMON implementa l'API GetPrinterDataFromPort , che consente ai monitoraggi del linguaggio di emettere IOCTLs tramite USBMON a USBPRINT.

Lo stack di stampa USB condivide le API seguenti e IOCTL con lo stack di stampa parallela:

WritePort

ReadPort

IOCTL_PAR_QUERY_DEVICE_ID

Gli IOCTLs seguenti sono specifici dello stack di stampa 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

Nota

Usbprint.sys non fornisce un meccanismo per ottenere descrittori dal dispositivo, né per modificare direttamente le pipe USB.