Serveur d'impression

Fonction EnumPrinters (Winspool.h) – Applications Win32 – Serveur d’impression

Le 3 novembre 2021 - 9 minutes de lecture


<!– –>

Les EnumPrinters La fonction énumère les imprimantes, les serveurs d'impression, les domaines ou les fournisseurs d'impression disponibles.

Syntaxe

BOOL EnumPrinters(
  _In_ DWORD Drapeaux,
  _In_ LPTSTR Nom,
  _In_ Niveau DWORD,
  _Out_ LPBYTE pPrinterEnum,
  _In_ DWORD cbBuf,
  _Out_ LPDWORD pcbNeeded,
  _Out_ LPDWORD pcRetourné
);

Paramètres

Drapeaux [in]

Les types d'objets d'impression que la fonction doit énumérer. Cette valeur peut être une ou plusieurs des valeurs suivantes.

Valeur Sens

PRINTER_ENUM_LOCAL
Si le drapeau PRINTER_ENUM_NAME n'est pas également passé, la fonction ignore le Nom paramètre et énumère les imprimantes installées localement. Si PRINTER_ENUM_NAME est également passé, la fonction énumère les imprimantes locales sur Nom.

PRINTER_ENUM_NAME
La fonction énumère l'imprimante identifiée par Nom. Il peut s'agir d'un serveur, d'un domaine ou d'un fournisseur d'impression. Si Nom est NUL, la fonction énumère les fournisseurs d'impression disponibles.

PRINTER_ENUM_SHARED
La fonction énumère les imprimantes qui ont l'attribut partagé. Ne peut pas être utilisé isolément ; utiliser une opération OU pour combiner avec un autre type PRINTER_ENUM.

PRINTER_ENUM_CONNECTIONS
La fonction énumère la liste des imprimantes auxquelles l'utilisateur s'est déjà connecté.

PRINTER_ENUM_NETWORK
La fonction énumère les imprimantes réseau dans le domaine de l'ordinateur. Cette valeur n'est valide que si Niveau est 1.

PRINTER_ENUM_REMOTE
La fonction énumère les imprimantes réseau et les serveurs d'impression dans le domaine de l'ordinateur. Cette valeur n'est valide que si Niveau est 1.

PRINTER_ENUM_CATEGORY_3D
La fonction énumère uniquement les imprimantes 3D.

PRINTER_ENUM_CATEGORY_ALL
La fonction énumère tous les périphériques d'impression, y compris les imprimantes 3D.

Si Niveau est 4, vous ne pouvez utiliser que les constantes PRINTER_ENUM_CONNECTIONS et PRINTER_ENUM_LOCAL.

Noter

Les périphériques d'impression 3D ne sont pas énumérés par défaut. Vous devez inclure les deux PRINTER_ENUM_CATEGORY_3D et PRINTER_ENUM_LOCAL pour n'énumérer que les imprimantes 3D. Pour inclure des imprimantes 3D, avec toutes les autres imprimantes locales, utilisez PRINTER_ENUM_CATEGORY_ALL et PRINTER_ENUM_LOCAL.

Nom [in]

Si Niveau est 1, Drapeaux contient PRINTER_ENUM_NAME, et Nom n'est pasNUL, alors Nom est un pointeur vers une chaîne terminée par NULL qui spécifie le nom de l'objet à énumérer. Cette chaîne peut être le nom d'un serveur, d'un domaine ou d'un fournisseur d'impression.

Si Niveau est 1, Drapeaux contient PRINTER_ENUM_NAME, et Nom est NUL, la fonction énumère les fournisseurs d'impression disponibles.

Si Niveau est 1, Drapeaux contient PRINTER_ENUM_REMOTE, et Nom est NUL, la fonction énumère les imprimantes du domaine de l'utilisateur.

Si Niveau est 2 ou 5,Nom est un pointeur vers une chaîne terminée par NULL qui spécifie le nom d'un serveur dont les imprimantes doivent être énumérées. Si cette chaîne est NUL, puis la fonction énumère les imprimantes installées sur l'ordinateur local.

Si Niveau est 4, Nom devrait être NUL. La fonction interroge toujours l'ordinateur local.

Lorsque Nom est NUL, réglage Drapeaux à PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS énumère les imprimantes installées sur la machine locale. Ces imprimantes incluent celles qui sont physiquement connectées à la machine locale ainsi que les imprimantes distantes auxquelles elle dispose d'une connexion réseau.

Lorsque Nom n'est pas NUL, réglage Drapeaux à PRINTER_ENUM_LOCAL | PRINTER_ENUM_NAME énumère les imprimantes locales installées sur le serveur Nom.

Niveau [in]

Le type de structures de données pointées par pPrinterEnum. Les valeurs valides sont 1, 2, 4 et 5, qui correspondent au IMPRIMANTE_INFO_1, IMPRIMANTE_INFO_2 , IMPRIMANTE_INFO_4, et IMPRIMANTE_INFO_5 structures de données.

Cette valeur peut être 1, 2, 4 ou 5.

pPrinterEnum [out]

Un pointeur vers un tampon qui reçoit un tableau de IMPRIMANTE_INFO_1, IMPRIMANTE_INFO_2, IMPRIMANTE_INFO_4, ou IMPRIMANTE_INFO_5 structure. Chaque structure contient des données qui décrivent un objet d'impression disponible.

Si Niveau est 1, le tableau contient IMPRIMANTE_INFO_1 structure. Si Niveau est 2, le tableau contient IMPRIMANTE_INFO_2 structure. Si Niveau est 4, le tableau contient IMPRIMANTE_INFO_4 structure. Si Niveau est 5, le tableau contient IMPRIMANTE_INFO_5 structure.

Le tampon doit être suffisamment grand pour recevoir le tableau de structures de données et toutes les chaînes ou autres données vers lesquelles pointent les membres de la structure. Si le tampon est trop petit, le pcbRequis Le paramètre renvoie la taille de tampon requise.

cbBuf [in]

La taille, en octets, du tampon pointé par pPrinterEnum.

pcbRequis [out]

Un pointeur vers une valeur qui reçoit le nombre d'octets copiés si la fonction réussit ou le nombre d'octets requis si cbBuf c'est trop petit.

pcRetour [out]

Un pointeur vers une valeur qui reçoit le nombre de IMPRIMANTE_INFO_1, IMPRIMANTE_INFO_2 , IMPRIMANTE_INFO_4, ou IMPRIMANTE_INFO_5 structures que la fonction renvoie dans le tableau auquel pPrinterEnum points.

Valeur de retour

Si la fonction réussit, la valeur de retour est une valeur non nulle.

Si la fonction échoue, la valeur de retour est zéro.

Remarques

N'appelez pas cette méthode dans DllMain.

Noter

Il s'agit d'une fonction bloquante ou synchrone et peut ne pas revenir immédiatement. La vitesse de retour de cette fonction dépend de facteurs d'exécution tels que l'état du réseau, la configuration du serveur d'impression et les facteurs d'implémentation du pilote d'imprimante qui sont difficiles à prévoir 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.

Si EnumPrinters renvoie un IMPRIMANTE_INFO_1 structure dans laquelle PRINTER_ENUM_CONTAINER est spécifié, cela indique qu'il existe une hiérarchie d'objets imprimante. Une application peut énumérer la hiérarchie en appelant EnumPrinters encore une fois, le réglage Nom à la valeur de la IMPRIMANTE_INFO_1 la structure pNom membre.

Les EnumPrinters La fonction ne récupère pas les informations de sécurité. Si IMPRIMANTE_INFO_2 les structures sont retournées dans le tableau pointé par pPrinterEnum, leur pDescripteurDeSécurité les membres seront mis à NUL.

Pour obtenir des informations sur l'imprimante par défaut, appelez Obtenir l'imprimante par défaut.

Les IMPRIMANTE_INFO_4 structure fournit un moyen simple et extrêmement rapide de récupérer les noms des imprimantes installées sur une machine locale, ainsi que les connexions à distance qu'un utilisateur a établies. Lorsque EnumPrinters est appelé avec un IMPRIMANTE_INFO_4 structure de données, cette fonction interroge le registre pour les informations spécifiées, puis renvoie immédiatement. Cela diffère du comportement de EnumPrinters lorsqu'il est appelé avec d'autres niveaux de IMPRIMANTE_INFO_* structures de données. En particulier, lorsque EnumPrinters est appelé avec un niveau 2 (IMPRIMANTE_INFO_2) structure de données, il effectue une OpenPrinter appel à chaque connexion distante. Si une connexion distante est interrompue, ou si le serveur distant n'existe plus, ou si l'imprimante distante n'existe plus, la fonction doit attendre que RPC expire et par conséquent échouer le OpenPrinter appel. Cela peut prendre un certain temps. Passer un IMPRIMANTE_INFO_4 la structure permet à une application de récupérer un strict minimum d'informations requises ; si des informations plus détaillées sont souhaitées, une EnumPrinters un appel de niveau 2 peut être effectué.

Windows Vista: Les données d'imprimante renvoyées par EnumPrinters est récupéré à partir d'un cache local lorsque la valeur de Niveau est 4.

Le tableau suivant montre les EnumPrinters sortie pour divers Drapeaux valeurs lorsque le Niveau paramètre est mis à 1.

Dans le Nom paramètre de la table, vous devez substituer un nom approprié pour le fournisseur d'impression, le domaine et la machine. Par exemple, pour « Fournisseur d'impression », vous pouvez utiliser le nom du fournisseur d'impression réseau ou le nom du fournisseur d'impression local. Pour récupérer les noms des fournisseurs d'impression, appelez EnumPrinters avec Nom mis à NUL.

Drapeaux paramètre Nom paramètre Résultat
PRINTER_ENUM_LOCAL (et non PRINTER_ENUM_NAME) Les Nom paramètre est ignoré. Toutes les imprimantes locales.
PRINTER_ENUM_NAME "Fournisseur d'impression" Tous les noms de domaine
PRINTER_ENUM_NAME « Fournisseur d'impression ! Domaine » Toutes les imprimantes et serveurs d'impression du domaine de l'ordinateur
PRINTER_ENUM_NAME "Fournisseur d'impression !!\Machine" Toutes les imprimantes partagées sur \Machine
PRINTER_ENUM_NAME Une chaîne vide, "" Toutes les imprimantes locales.
PRINTER_ENUM_NAME NUL Tous les fournisseurs d'impression dans le domaine de l'ordinateur
PRINTER_ENUM_CONNECTIONS Les Nom paramètre est ignoré. Toutes les imprimantes distantes connectées
PRINTER_ENUM_NETWORK Les Nom paramètre est ignoré. Toutes les imprimantes du domaine de l'ordinateur
PRINTER_ENUM_REMOTE Une chaîne vide, "" Toutes les imprimantes et serveurs d'impression du domaine de l'ordinateur
PRINTER_ENUM_REMOTE "Fournisseur d'impression" Identique à PRINTER_ENUM_NAME
PRINTER_ENUM_REMOTE « Fournisseur d'impression ! Domaine » Toutes les imprimantes et serveurs d'impression dans le domaine de l'ordinateur, indépendamment de Domaine spécifié.
PRINTER_ENUM_CATEGORY_3D Les Nom paramètre est ignoré. Seules les imprimantes 3D sont énumérées.
PRINTER_ENUM_CATEGORY_ALL Les Nom paramètre est ignoré. Les imprimantes 3D sont énumérées, ainsi que toutes les autres imprimantes.

Conditions

Exigence Valeur
Client minimum pris en charge Windows 2000 Professionnel [desktop apps only]
Serveur minimum pris en charge Serveur Windows 2000 [desktop apps only]
Entête
Winspool.h (y compris Windows.h)
Une bibliothèque
Winspool.lib
DLL
Winspool.drv
Noms Unicode et ANSI EnumPrintersW (Unicode) et EnumPrintersA (ANSI)

Voir également

Impression

Fonctions de l'API du spouleur d'impression

Ajouter une imprimante

Supprimer l'imprimante

ObtenirImprimante

IMPRIMANTE_INFO_1

IMPRIMANTE_INFO_2

IMPRIMANTE_INFO_4

IMPRIMANTE_INFO_5

Définir l'imprimante

<!– –>

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.