DeviceCapabilitiesA, fonction (wingdi.h)

La fonction DeviceCapabilities récupère les fonctionnalités d’un pilote d’imprimante.

Syntaxe

int DeviceCapabilitiesA(
  [in]  LPCSTR         pDevice,
  [in]  LPCSTR         pPort,
  [in]  WORD           fwCapability,
  [out] LPSTR          pOutput,
  [in]  const DEVMODEA *pDevMode
);

Paramètres

[in] pDevice

Pointeur vers une chaîne terminée par null qui contient le nom de l’imprimante. Notez qu’il s’agit du nom de l’imprimante, et non du pilote d’imprimante.

[in] pPort

Pointeur vers une chaîne terminée par null qui contient le nom du port auquel l’appareil est connecté, par exemple LPT1.

[in] fwCapability

Fonctionnalités à interroger. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
DC_BINNAMES
Récupère les noms des bacs à papier de l’imprimante. La mémoire tampon pOutput reçoit un tableau de mémoires tampons de chaîne. Chaque mémoire tampon de chaîne comporte 24 caractères et contient le nom d’un bac à papier. La valeur de retour indique le nombre d’entrées dans le tableau. Les chaînes de nom sont terminées par null, sauf si le nom contient 24 caractères. Si pOutput a la valeur NULL, la valeur de retour est le nombre d’entrées bin requises.
DC_BINS
Récupère la liste des bacs à papier disponibles. La mémoire tampon pOutput reçoit un tableau de valeurs WORD qui indiquent les sources de papier disponibles pour l’imprimante. La valeur de retour indique le nombre d’entrées dans le tableau. Pour obtenir la liste des valeurs de tableau possibles, consultez la description du membre dmDefaultSource de la structure DEVMODE . Si pOutput a la valeur NULL, la valeur renvoyée indique le nombre requis d’entrées dans le tableau.
DC_COLLATE
Si l’imprimante prend en charge le classement, la valeur de retour est 1 ; sinon, la valeur de retour est égale à zéro. Le paramètre pOutput n’est pas utilisé.
DC_COLORDEVICE
Si l’imprimante prend en charge l’impression couleur, la valeur de retour est 1 ; sinon, la valeur de retour est égale à zéro. Le paramètre pOutput n’est pas utilisé.
DC_COPIES
Retourne le nombre de copies que l’appareil peut imprimer.
DC_DRIVER
Retourne le numéro de version du pilote d’imprimante.
DC_DUPLEX
Si l’imprimante prend en charge l’impression recto verso, la valeur de retour est 1 ; sinon, la valeur de retour est égale à zéro. Le paramètre pOutput n’est pas utilisé.
DC_ENUMRESOLUTIONS
Récupère la liste des résolutions prises en charge par l’imprimante. La mémoire tampon pOutput reçoit un tableau de valeurs LONG . Pour chaque résolution prise en charge, le tableau contient une paire de valeurs LONG qui spécifient les dimensions x et y de la résolution, en points par pouce. La valeur de retour indique le nombre de résolutions prises en charge. Si pOutput a la valeur NULL, la valeur renvoyée indique le nombre de résolutions prises en charge.
DC_EXTRA
Retourne le nombre d’octets requis pour la partie spécifique au périphérique de la structure DEVMODE pour le pilote d’imprimante.
DC_FIELDS
Retourne le membre dmFields de la structure DEVMODE du pilote d’imprimante. Le membre dmFields indique les membres de la partie indépendante du périphérique de la structure qui sont pris en charge par le pilote d’imprimante.
DC_FILEDEPENDENCIES
Récupère les noms des fichiers supplémentaires qui doivent être chargés lorsqu’un pilote est installé. La mémoire tampon pOutput reçoit un tableau de mémoires tampons de chaîne. Chaque mémoire tampon de chaîne contient 64 caractères et contient le nom d’un fichier. La valeur de retour indique le nombre d’entrées dans le tableau. Les chaînes de nom sont terminées par un caractère Null, sauf si le nom contient 64 caractères. Si pOutput a la valeur NULL, la valeur renvoyée est le nombre de fichiers.
DC_MAXEXTENT
Retourne la taille de papier maximale que les membres dmPaperLength et dmPaperWidth de la structure DEVMODE du pilote d’imprimante peuvent spécifier. Le LOWORD de la valeur de retour contient la valeur maximale dmPaperWidth , et hiWORD contient la valeur maximale dmPaperLength .
DC_MEDIAREADY
Récupère les noms des formulaires papier actuellement disponibles. La mémoire tampon pOutput reçoit un tableau de mémoires tampons de chaîne. Chaque mémoire tampon de chaîne contient 64 caractères et contient le nom d’un formulaire papier. La valeur de retour indique le nombre d’entrées dans le tableau. Les chaînes de nom sont terminées par un caractère Null, sauf si le nom contient 64 caractères. Si pOutput a la valeur NULL, la valeur renvoyée est le nombre de formulaires papier.
DC_MEDIATYPENAMES
Récupère les noms des types de supports pris en charge. La mémoire tampon pOutput reçoit un tableau de mémoires tampons de chaîne. Chaque mémoire tampon de chaîne contient 64 caractères et contient le nom d’un type de média pris en charge. La valeur de retour indique le nombre d’entrées dans le tableau. Les chaînes sont terminées par un caractère Null, sauf si le nom contient 64 caractères. Si pOutput a la valeur NULL, la valeur de retour correspond au nombre de noms de type de média requis.
DC_MEDIATYPES
Récupère une liste des types de médias pris en charge. La mémoire tampon pOutput reçoit un tableau de valeurs DWORD qui indiquent les types de média pris en charge. La valeur de retour indique le nombre d’entrées dans le tableau. Pour obtenir la liste des valeurs de tableau possibles, consultez la description du membre dmMediaType de la structure DEVMODE . Si pOutput a la valeur NULL, la valeur renvoyée indique le nombre requis d’entrées dans le tableau.
DC_MINEXTENT
Retourne le format de papier minimal que les membres dmPaperLength et dmPaperWidth de la structure DEVMODE du pilote d’imprimante peuvent spécifier. Le LOWORD de la valeur de retour contient la valeur minimale dmPaperWidth , et HIWORD contient la valeur minimale dmPaperLength .
DC_ORIENTATION
Retourne la relation entre les orientations portrait et paysage pour un appareil, en termes de degrés de rotation de l’orientation portrait dans le sens inverse des aiguilles d’une montre pour produire une orientation paysage. La valeur de retour peut être une des suivantes :
0
Aucune orientation paysage.
90
Portrait est pivoté de 90 degrés pour produire le paysage.
270
Portrait est pivoté de 270 degrés pour produire le paysage.
DC_NUP
Récupère un tableau d’entiers qui indiquent que l’imprimante peut imprimer plusieurs pages de document par page imprimée. La mémoire tampon pOutput reçoit un tableau de valeurs DWORD . Chaque valeur représente un nombre pris en charge de pages de document par page imprimée. La valeur de retour indique le nombre d’entrées dans le tableau. Si pOutput a la valeur NULL, la valeur renvoyée indique le nombre requis d’entrées dans le tableau.
DC_PAPERNAMES
Récupère une liste de noms de papier pris en charge (par exemple, Lettre ou Juridique). La mémoire tampon pOutput reçoit un tableau de mémoires tampons de chaîne. Chaque mémoire tampon de chaîne contient 64 caractères et contient le nom d’un formulaire papier. La valeur de retour indique le nombre d’entrées dans le tableau. Les chaînes de nom sont terminées par un caractère Null, sauf si le nom contient 64 caractères. Si pOutput a la valeur NULL, la valeur renvoyée est le nombre de formulaires papier.
DC_PAPERS
Récupère la liste des formats de papier pris en charge. La mémoire tampon pOutput reçoit un tableau de valeurs WORD qui indiquent les tailles de papier disponibles pour l’imprimante. La valeur de retour indique le nombre d’entrées dans le tableau. Pour obtenir la liste des valeurs de tableau possibles, consultez la description du membre dmPaperSize de la structure DEVMODE . Si pOutput a la valeur NULL, la valeur renvoyée indique le nombre requis d’entrées dans le tableau.
DC_PAPERSIZE
Récupère les dimensions, en dixièmes de millimètre, de chaque format de papier pris en charge. La mémoire tampon pOutput reçoit un tableau de structures POINT . Chaque structure contient la largeur (dimension x) et la longueur (dimension y) d’un format de papier comme si le papier était dans l’orientation DMORIENT_PORTRAIT . La valeur de retour indique le nombre d’entrées dans le tableau.
DC_PERSONALITY
Récupère la liste des langues de description de l’imprimante prises en charge par l’imprimante. La mémoire tampon pOutput reçoit un tableau de mémoires tampons de chaîne. Chaque mémoire tampon comporte 32 caractères et contient le nom d’une langue de description de l’imprimante. La valeur de retour indique le nombre d’entrées dans le tableau. Les chaînes de nom sont terminées par null, sauf si le nom contient 32 caractères. Si pOutput a la valeur NULL, la valeur de retour indique le nombre requis d’entrées de tableau.
DC_PRINTERMEM
La valeur de retour est la quantité de mémoire d’imprimante disponible, en kilo-octets. Le paramètre pOutput n’est pas utilisé.
DC_PRINTRATE
La valeur de retour indique la vitesse d’impression de l’imprimante. La valeur retournée pour DC_PRINTRATEUNIT indique les unités de la valeur DC_PRINTRATE . Le paramètre pOutput n’est pas utilisé.
DC_PRINTRATEPPM
La valeur de retour indique la vitesse d’impression de l’imprimante, en pages par minute. Le paramètre pOutput n’est pas utilisé.
DC_PRINTRATEUNIT
La valeur de retour est l’une des valeurs suivantes qui indiquent les unités de taux d’impression pour la valeur retournée pour l’indicateur DC_PRINTRATE . Le paramètre pOutput n’est pas utilisé.
PRINTRATEUNIT_CPS
Caractères par seconde.
PRINTRATEUNIT_IPM
Pouces par minute.
PRINTRATEUNIT_LPM
Lignes par minute.
PRINTRATEUNIT_PPM
Pages par minute.
DC_SIZE
Retourne le membre dmSize de la structure DEVMODE du pilote d’imprimante.
DC_STAPLE
Si l’imprimante prend en charge l’agrafage, la valeur de retour est une valeur différente de zéro ; sinon, la valeur de retour est égale à zéro. Le paramètre pOutput n’est pas utilisé.
DC_TRUETYPE
Récupère les capacités du pilote à utiliser des polices TrueType. Pour DC_TRUETYPE, le paramètre pOutput doit être NULL. La valeur de retour peut être une ou plusieurs des valeurs suivantes :
DCTT_BITMAP
L’appareil peut imprimer des polices TrueType en tant que graphiques.
DCTT_DOWNLOAD
L’appareil peut télécharger des polices TrueType.
DCTT_SUBDEV
L’appareil peut remplacer les polices d’appareil par les polices TrueType.
DC_VERSION
Retourne la version de spécification à laquelle le pilote d’imprimante est conforme.

[out] pOutput

Pointeur vers un tableau. Le format du tableau dépend du paramètre fwCapability . Consultez chaque fonctionnalité ci-dessus pour savoir ce qui est retourné si pOutput a la valeur NULL.

[in] pDevMode

Pointeur vers une structure DEVMODE . Si ce paramètre a la valeur NULL, DeviceCapabilities récupère les valeurs d’initialisation par défaut actuelles pour le pilote d’imprimante spécifié. Sinon, la fonction récupère les valeurs contenues dans la structure vers laquelle pDevMode pointe.

Valeur retournée

Si la fonction réussit, la valeur de retour dépend du paramètre fwCapability . Une valeur de retour égale à zéro indique généralement que, même si la fonction s’est terminée avec succès, il y a eu un certain type de défaillance, par exemple une fonctionnalité qui n’est pas prise en charge. Pour plus d’informations, consultez les descriptions des valeurs fwCapability .

Si la fonction retourne -1, cela peut signifier que la fonctionnalité n’est pas prise en charge ou qu’il y a eu une défaillance générale de la fonction.

Remarques

Note Il s’agit d’une fonction bloquante ou synchrone qui peut ne pas être retournée immédiatement. La rapidité avec laquelle cette fonction retourne dépend de facteurs d’exécution tels que l’status réseau, la configuration du serveur d’impression et l’implémentation du pilote d’imprimante, facteurs difficiles à prédire lors de l’écriture d’une application. L’appel de cette fonction à partir d’un thread qui gère l’interaction avec l’interface utilisateur peut donner l’impression que l’application ne répond pas.
 
La structure DEVMODE pointée par le paramètre pDevMode peut être obtenue en appelant la fonction DocumentProperties .

Si un pilote d’imprimante prend en charge des fonctionnalités de périphérique personnalisées, le pilote doit appeler la fonction SetPrinterData pour chaque fonctionnalité personnalisée. La fonction SetPrinterData ajoute les données d’imprimante appropriées au système d’impression, ce qui permet aux applications 32 bits d’accéder aux fonctionnalités personnalisées sur les installations Windows 64 bits.

Pour chaque fonctionnalité personnalisée, vous devez d’abord ajouter des données d’imprimante qui décrivent le type de la fonctionnalité. Pour ce faire, lorsque vous appelez SetPrinterData, définissez la chaîne pValueNamesur CustomDeviceCapabilityType_Xxx, où « Xxx » est la représentation hexadécimale de la fonctionnalité. Par exemple, vous pouvez avoir « CustomDeviceCapabilityType_1234 ». Les données de Registre que vous définissez doivent être de type REG_DWORD et vous devez définir leur valeur sur l’une des valeurs suivantes :

  • 0, si la fonctionnalité personnalisée est un DWORD
  • 1, si la fonctionnalité personnalisée est une mémoire tampon d’octets
  • 2, si la fonctionnalité personnalisée est un tableau d’éléments
Si la fonctionnalité personnalisée est un tableau d’éléments, vous devez appeler SetPinterData une deuxième fois pour fournir des informations sur la taille d’un élément dans le tableau. Pour ce faire, lorsque vous appelez SetPinterData, la chaîne pValueName que vous fournissez doit être « CustomDeviceCapabilitySize_Xxx », où Xxx est la représentation hexadécimale de la fonctionnalité. Par exemple, vous pouvez avoir « CustomDeviceCapabilitySize_1234 ». Les données de Registre que vous définissez doivent être du type REG_DWORD et vous devez définir leur valeur sur la taille en octets d’un élément du tableau.

Notes

L’en-tête wingdi.h définit DeviceCapabilities comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. La combinaison de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête wingdi.h (inclure Windows.h)
Bibliothèque WinSpool.lib
DLL WinSpool.drv

Voir aussi

DEVMODE

DOCINFO

DocumentProperties

GetDeviceCaps

GetProcAddress

LoadLibrary

POINT

Fonctions API du spouleur d’impression

Impression

StartDoc