AddPrinter fonction)
La fonction AddPrinter ajoute une imprimante à la liste des imprimantes prises en charge pour un serveur spécifié.
Syntaxe
HANDLE AddPrinter(
_In_ LPTSTR *pName,
_In_ DWORD Level,
_In_ LPBYTE pPrinter
);
Paramètres
-
pname [ dans]
-
Pointeur vers une chaîne se terminant par un caractère null qui spécifie le nom du serveur sur lequel l’imprimante doit être installée. Si cette chaîne est null, l’imprimante est installée localement.
-
De niveau [ dans]
-
Version de la structure vers laquelle pPrinter pointe. Cette valeur doit être 2.
-
pPrinter [ dans]
-
Pointeur vers une structure d' _ informations _ d’imprimante 2 qui contient des informations sur l’imprimante. Vous devez spécifier des valeurs non null pour les membres pPrinterName, pPortName, pDriverName et pPrintProcessor de cette structure avant d’appeler AddPrinter.
Valeur de retour
Si la fonction est réussie, la valeur de retour est un handle (pas thread-safe) vers un nouvel objet Printer. Lorsque vous avez terminé avec le descripteur, transmettez-le à la fonction ClosePrinter pour le fermer.
Si la fonction échoue, la valeur de retour est null.
Notes
N’appelez pas cette méthode dans DllMain.
Notes
Il s’agit d’une fonction de blocage ou synchrone qui peut ne pas être renvoyée immédiatement. La vitesse à laquelle cette fonction est retournée dépend des facteurs d’exécution tels que l’état du réseau, la configuration du serveur d’impression et les facteurs d’implémentation des pilotes d’imprimante qui sont 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 faire que l’application semble ne pas répondre.
L’appelant doit avoir le SeLoadDriverPrivilege.
Le handle retourné n’est pas thread-safe. Si les appelants doivent l’utiliser simultanément sur plusieurs threads, ils doivent fournir un accès de synchronisation personnalisé au handle d’imprimante à l’aide des fonctions de synchronisation. Pour éviter d’écrire du code personnalisé, l’application peut ouvrir un handle d’imprimante sur chaque thread, si nécessaire.
Voici les membres de la structure Printer _ info _ 2 qui peuvent être définis avant l’appel de la fonction AddPrinter :
- Attributs
- pPrintProcessor
- DefaultPriority
- Priorité
- pComment
- pSecurityDescriptor
- pDatatype
- pSepFile
- pDevMode
- pShareName
- pLocation
- StartTime
- pParameters
- UntilTime
Les membres Status, cJobs et AveragePPM de la structure Printer _ info _ 2 sont réservés pour une utilisation par la fonction GetPrinter . Ils ne doivent pas être définis avant d’appeler AddPrinter.
Si pSecurityDescriptor a la valeur null, le système affecte un descripteur de sécurité par défaut à l’imprimante. Le descripteur de sécurité par défaut dispose des autorisations suivantes.
| Valeur | Description |
|---|---|
| Administrateurs et utilisateurs avec pouvoir | Contrôle total sur la file d’attente à l’impression. Cela signifie que les membres de ces groupes peuvent imprimer, gérer la file d’attente (peut supprimer la file d’attente, modifier les paramètres de la file d’attente, y compris le descripteur de sécurité) et gérer les travaux d’impression de tous les utilisateurs (supprimer, suspendre, reprendre, redémarrer les travaux). notez que les utilisateurs avec pouvoir n’existent pas avant Windows XP Professional. |
| Propriétaire créateur | Peut gérer ses propres travaux. Cela signifie que les utilisateurs qui envoient des travaux peuvent gérer (supprimer, suspendre, reprendre, redémarrer) leurs propres travaux. |
| Tout le monde | Exécution et contrôle de lecture standard. Cela signifie que les membres du groupe tout le monde peuvent imprimer et lire les propriétés de la file d’attente à l’impression. |
Une fois qu’une application a créé un objet Printer avec la fonction AddPrinter , elle doit utiliser la fonction PrinterProperties pour spécifier les paramètres corrects pour le pilote d’imprimante associé à l’objet Printer.
La fonction AddPrinter renvoie une erreur si un objet Printer portant le même nom existe déjà, sauf si cet objet est marqué comme étant en attente de suppression. Dans ce cas, l’imprimante existante n’est pas supprimée et les paramètres de création de AddPrinter sont utilisés pour modifier les paramètres d’imprimante existants (comme si l’application avait utilisé la fonction SetPrinter ).
Utilisez la fonction EnumPrintProcessors pour énumérer l’ensemble des processeurs d’impression installés sur un serveur. Utilisez la fonction EnumPrintProcessorDatatypes pour énumérer l’ensemble des types de données pris en charge par un processeur d’impression. Utilisez la fonction EnumPorts pour énumérer l’ensemble des ports disponibles. Utilisez la fonction EnumPrinterDrivers pour énumérer les pilotes d’imprimante installés.
L’appelant de la fonction AddPrinter doit disposer d’un accès serveur _ _ administrer l’accès au serveur sur lequel l’imprimante doit être créée. Le descripteur retourné par la fonction disposera de l' _ autorisation d’accès imprimante All _ et pourra être utilisé pour effectuer des opérations administratives sur l’imprimante.
Si la fonction DrvPrinterEvent est passée à l' _ indicateur _ d’événement d’imprimante _ no _ UI, le pilote ne doit pas utiliser d’appel d’interface utilisateur pendant DrvPrinterEvent. Pour effectuer des tâches liées à l’interface utilisateur, le programme d’installation doit utiliser l’entrée VendorSetup dans le fichier. inf de l’imprimante ou, pour plug-and-Play appareils, le programme d’installation peut utiliser un co-programme d’installation spécifique à l’appareil. pour plus d’informations sur VendorSetup, consultez le kit de développement de pilotes (DDK) Microsoft Windows.
Le pare-feu de connexion Internet (ICF) bloque les ports d’imprimante par défaut, mais une exception pour le partage de fichiers et d’imprimantes est activée lorsque vous exécutez AddPrinter.
Spécifications
| 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] |
| En-tête |
|
| Bibliothèque |
|
| DLL |
|
| Noms Unicode et ANSI |
AddPrinterW (Unicode) et AddPrinterA (ANSI) |