Considérations relatives à la programmation pour USBPRINT
Usbprint.sys, avec USBMON, fournit une interface très similaire à celle utilisée par les imprimantes parallèles. Dans de nombreux cas, il est possible qu’un seul pilote d’imprimante ou moniteur de langue fonctionne correctement sur les imprimantes parallèles et USB sans modification. Si un moniteur de langue utilise uniquement les fonctions WritePort et ReadPort et la demande IOCTL_PAR_QUERY_DEVICE_ID , il sera portable entre les imprimantes USB et parallèles.
Dans certains cas, il peut être nécessaire pour un moniteur de langue d’effectuer des demandes spécifiques à un fournisseur à une imprimante afin de tirer parti des fonctionnalités spéciales de l’imprimante. Pour ce faire, utilisez IOCTL_USBPRINT_VENDOR_SET_COMMAND et IOCTL_USBPRINT_VENDOR_GET_COMMAND. Notez toutefois que l’utilisation de ces IOCTL rend un moniteur de langue incompatible avec le moniteur de port parallèle.
Les moniteurs de langue n’ont normalement pas accès à un handle d’appareil pour l’imprimante qu’ils gèrent. Au lieu de cela, ils ont un nom de port fourni par le moniteur de port qui se trouve entre le moniteur de langue et le pilote de bus (Usbprint.sys dans ce cas). Pour plus d’informations, consultez Interaction du moniteur de langue et de port . L’absence d’un handle d’appareil empêche les moniteurs de langue d’appeler directement les pilotes de bus d’appareil IOCTL. Pour surmonter cette limitation, USBMON implémente l’API GetPrinterDataFromPort , qui permet aux moniteurs de langue d’émettre des IOCTL via USBMON vers USBPRINT.
La pile d’impression USB partage les API et IOCTL suivantes avec la pile d’impression parallèle :
Les listes IOCTL suivantes sont spécifiques à la pile d’impression USB :
IOCTL_USBPRINT_VENDOR_GET_COMMAND
IOCTL_USBPRINT_VENDOR_SET_COMMAND
Notes
Usbprint.sys ne fournit pas de mécanisme permettant d’obtenir des descripteurs à partir de l’appareil, ni de manipuler directement des canaux USB.