Partager via


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é, tel que LPT1.

[in] fwCapability

Fonctionnalités à interroger. Ce paramètre peut être l’une des valeurs suivantes.

Valeur Signification
DC_BINNAMES
Récupère les noms des bacs de 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 est de 24 caractères et contient le nom d’une corbeille de 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 est de 24 caractères. Si pOutput est NULL, la valeur de retour est le nombre d’entrées bin requises.
DC_BINS
Récupère la liste des bacs de 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 de la membre dmDefaultSource de la structure DEVMODE. Si pOutput est NULL, la valeur de retour indique le nombre requis d’entrées dans le tableau.
DC_COLLATE
Si l’imprimante prend en charge la fusion, 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 de 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 duplex, 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 une 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 est NULL, la valeur de retour indique le nombre de résolutions prises en charge.
DC_EXTRA
Retourne le nombre d’octets requis pour la partie spécifique de l’appareil de la structure DEVMODE pour le pilote d’imprimante.
DC_FIELDS
Retourne le dmFields membre de la structure devmode du pilote d’imprimante. Le membre dmFields indique quels membres de la partie indépendante de l’appareil de la structure 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 est de 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 null, sauf si le nom est de 64 caractères. Si pOutput est NULL, la valeur de retour correspond au nombre de fichiers.
DC_MAXEXTENT
Retourne la taille maximale du papier que les membres dmPaperLength et dmPaperWidth membres de la structure DEVMODE du pilote d’imprimante peuvent spécifier. 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 est de 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 null, sauf si le nom est de 64 caractères. Si pOutput est NULL, la valeur de retour correspond au 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 est de 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 null, sauf si le nom est long de 64 caractères. Si pOutput est NULL, la valeur de retour correspond au nombre de noms de types de média requis.
DC_MEDIATYPES
Récupère une liste des types de supports pris en charge. La mémoire tampon pOutput reçoit un tableau de valeurs DWORD qui indiquent les types de supports 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 de la membre dmMediaType de la structure DEVMODE . Si pOutput est NULL, la valeur de retour indique le nombre requis d’entrées dans le tableau.
DC_MINEXTENT
Renvoie le format de papier minimal que les membres dmPaperLength et dmPaperWidth membres de la structure de DEVMODE du pilote d’imprimante peuvent spécifier. 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 nombre de degrés de rotation de l’orientation portrait pour produire une orientation paysage. La valeur de retour peut être l’une des suivantes :
0
Aucune orientation paysage.
90
Portrait est pivoté de 90 degrés pour produire un paysage.
270
Portrait est pivoté de 270 degrés pour produire un paysage.
DC_NUP
Récupère un tableau d’entiers qui indiquent que l’imprimante peut imprimer plusieurs pages de documents par page imprimée. La mémoire tampon pOutput reçoit un tableau de valeurs de 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 est NULL, la valeur de retour 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 est de 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 null, sauf si le nom est de 64 caractères. Si pOutput est NULL, la valeur de retour correspond au nombre de formulaires papier.
DC_PAPERS
Récupère une liste de tailles de papier prises 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 de la dmPaperSize membre de la structure DEVMODE. Si pOutput est NULL, la valeur de retour indique le nombre requis d’entrées dans le tableau.
DC_PAPERSIZE
Récupère les dimensions, en dixièmes de millimètres, de chaque taille de papier prise en charge. La mémoire tampon pOutput reçoit un tableau de structures POINT. Chaque structure contient la largeur (x-dimension) 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 est de 32 caractères et contient le nom d’une langue de description d’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 est de 32 caractères. Si pOutput est NULL, la valeur de retour indique le nombre requis d’entrées de tableau.
DC_PRINTERMEM
La valeur de retour correspond à 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 le taux 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 le taux 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 de 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 dmSize membre 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 pour 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 pour 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 est NULL.

[in] pDevMode

Pointeur vers une structure DEVMODE . Si ce paramètre est 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 dans laquelle pDevMode points.

Valeur de retour

Si la fonction réussit, la valeur de retour dépend du paramètre fwCapability paramètre. Une valeur de retour de zéro indique généralement que, même si la fonction s’est terminée correctement, il y a eu un certain type d’échec, comme 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

Remarque Il s’agit d’une fonction bloquante ou synchrone et 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’état 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 rendre l’application sans réponse.
 
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 les fonctionnalités d’appareil 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 pValueName sur 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 du type REG_DWORD, et vous devez définir sa 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 sa valeur sur la taille en octets d’un élément dans le tableau.

Note

L’en-tête wingdi.h définit DeviceCapabilities comme 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. Le mélange 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.

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête wingdi.h (include Windows.h)
bibliothèque WinSpool.lib
DLL WinSpool.drv

Voir aussi

DEVMODE

DOCINFO

DocumentProperties

GetDeviceCaps

GetProcAddress

LoadLibrary

POINT

fonctions d’API Print Spooler

impression

StartDoc