Fonction FindFirstPrinterChangeNotification

La fonction FindFirstPrinterChangeNotification crée un objet de notification de modification et retourne un handle à l’objet. Vous pouvez ensuite utiliser ce handle dans un appel à l’une des fonctions d’attente pour surveiller les modifications apportées à l’imprimante ou au serveur d’impression.

L’appel FindFirstPrinterChangeNotification spécifie le type de modifications à surveiller. Vous pouvez spécifier un ensemble de conditions pour surveiller les modifications, un ensemble de champs d’informations d’imprimante à surveiller, ou les deux.

Une opération d’attente sur le handle de notification de modification réussit quand l’une des modifications spécifiées se produit dans l’imprimante ou le serveur d’impression spécifié. Vous appelez ensuite la fonction FindNextPrinterChangeNotification pour récupérer des informations sur la modification et réinitialiser l’objet de notification de modification à utiliser lors de l’opération d’attente suivante.

Syntaxe

HANDLE FindFirstPrinterChangeNotification(
  _In_     HANDLE hPrinter,
           DWORD  fdwFilter,
           DWORD  fdwOptions,
  _In_opt_ LPVOID pPrinterNotifyOptions
);

Paramètres

hPrinter [in]

Handle de l’imprimante ou du serveur d’impression que vous souhaitez surveiller. Utilisez la fonction OpenPrinter ou AddPrinter pour récupérer un handle d’imprimante.

fdwFilter

Conditions qui entraînent l’entrée de l’objet de notification de modification dans un état signalé. Une notification de modification se produit lorsqu’une ou plusieurs des conditions spécifiées sont remplies. Le paramètre fdwFilter peut être égal à zéro si pPrinterNotifyOptions n’a pas la valeur NULL.

Ce paramètre peut prendre une ou plusieurs des valeurs suivantes.

Valeur Signification
PRINTER_CHANGE_FORM
Notifier toute modification apportée à un formulaire. Vous pouvez définir cet indicateur général ou un ou plusieurs des indicateurs spécifiques suivants :
PRINTER_CHANGE_ADD_FORM
PRINTER_CHANGE_SET_FORM
PRINTER_CHANGE_DELETE_FORM
PRINTER_CHANGE_JOB
Notifier toute modification apportée à un travail. Vous pouvez définir cet indicateur général ou un ou plusieurs des indicateurs spécifiques suivants :
PRINTER_CHANGE_ADD_JOB
PRINTER_CHANGE_SET_JOB
PRINTER_CHANGE_DELETE_JOB
PRINTER_CHANGE_WRITE_JOB
PRINTER_CHANGE_PORT
Notifier toute modification apportée à un port. Vous pouvez définir cet indicateur général ou un ou plusieurs des indicateurs spécifiques suivants :
PRINTER_CHANGE_ADD_PORT
PRINTER_CHANGE_CONFIGURE_PORT
PRINTER_CHANGE_DELETE_PORT
PRINTER_CHANGE_PRINT_PROCESSOR
Notifier toute modification apportée à un processeur d’impression. Vous pouvez définir cet indicateur général ou un ou plusieurs des indicateurs spécifiques suivants :
PRINTER_CHANGE_ADD_PRINT_PROCESSOR
PRINTER_CHANGE_DELETE_PRINT_PROCESSOR
PRINTER_CHANGE_PRINTER
Notifier toute modification apportée à une imprimante. Vous pouvez définir cet indicateur général ou un ou plusieurs des indicateurs spécifiques suivants :
PRINTER_CHANGE_ADD_PRINTER
PRINTER_CHANGE_SET_PRINTER
PRINTER_CHANGE_DELETE_PRINTER
PRINTER_CHANGE_FAILED_CONNECTION_PRINTER
PRINTER_CHANGE_PRINTER_DRIVER
Notifier toute modification apportée à un pilote d’imprimante. Vous pouvez définir cet indicateur général ou un ou plusieurs des indicateurs spécifiques suivants :
PRINTER_CHANGE_ADD_PRINTER_DRIVER
PRINTER_CHANGE_SET_PRINTER_DRIVER
PRINTER_CHANGE_DELETE_PRINTER_DRIVER
PRINTER_CHANGE_ALL
Informez si l’une des modifications précédentes se produit.
PRINTER_CHANGE_SERVER
Windows 7 : notifier toute modification apportée au serveur.
Cet indicateur n’est pas inclus dans les modifications surveillées en définissant la valeur PRINTER_CHANGE_ALL .

Pour obtenir des descriptions des indicateurs plus spécifiques dans le tableau précédent, consultez la fonction FindNextPrinterChangeNotification .

fdwOptions

Indicateur qui détermine la catégorie d’imprimantes pour laquelle les notifications fonctionneront.

Valeur Signification
PRINTER_NOTIFY_CATEGORY_ALL
0x001000
FindNextPrinterChangeNotification retourne des notifications pour les imprimantes 2D et 3D.
PRINTER_NOTIFY_CATEGORY_3D
0x002000
FindNextPrinterChangeNotification retourne des notifications uniquement pour les imprimantes 3D.

Lorsque cet indicateur est défini sur zéro (0), FindFirstPrinterChangeNotification fonctionne uniquement pour les imprimantes 2D. Il s’agit de la valeur par défaut.

pPrinterNotifyOptions [in, facultatif]

Pointeur vers une structure PRINTER_NOTIFY_OPTIONS . Le membre pTypes de cette structure est un tableau d’une ou plusieurs structures PRINTER_NOTIFY_OPTIONS_TYPE , chacune d’elles spécifiant un champ d’informations d’imprimante à surveiller. Une notification de modification se produit lorsqu’un ou plusieurs des champs spécifiés changent. Lorsqu’une modification se produit, la fonction FindNextPrinterChangeNotification peut récupérer les nouvelles informations d’imprimante. Ce paramètre peut avoir la valeur NULL si fdwFilter est différent de zéro.

Pour obtenir la liste des champs pouvant être surveillés, consultez PRINTER_NOTIFY_OPTIONS_TYPE.

Valeur retournée

Si la fonction réussit, la valeur de retour est un handle d’un objet de notification de modification associé à l’imprimante ou au serveur d’impression spécifié.

Si la fonction échoue, la valeur de retour est INVALID_HANDLE_VALUE.

Notes

Notes

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 les facteurs d’implémentation du pilote 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 donner l’impression que l’application ne répond pas.

Pour surveiller une imprimante ou un serveur d’impression, appelez la fonction FindFirstPrinterChangeNotification , puis utilisez le handle de l’objet de notification de modification retourné dans un appel à l’une des fonctions d’attente. Une opération d’attente sur un objet de notification de modification est satisfaite lorsque l’objet de notification de modification entre dans l’état signalé. Le système signale l’objet lorsqu’une ou plusieurs des modifications spécifiées par fdwFilter ou pPrinterNotifyOptions se produisent dans l’imprimante ou le serveur d’impression surveillé.

Lorsque vous appelez FindFirstPrinterChangeNotification, fdwFilter doit être différent de zéro ou pPrinterNotifyOptions doit être non NULL. Si les deux sont spécifiés, des notifications se produisent pour les deux.

Lorsqu’une opération d’attente sur un objet de notification de modification d’imprimante est satisfaite, appelez la fonction FindNextPrinterChangeNotification pour déterminer la cause de la notification. Pour une condition spécifiée par fdwFilter, FindNextPrinterChangeNotification signale la ou les conditions qui ont changé. Pour un champ d’informations d’imprimante spécifié par pPrinterNotifyOptions, FindNextPrinterChangeNotification signale le ou les champs qui ont changé, ainsi que les nouvelles informations pour ces champs. FindNextPrinterChangeNotification réinitialise également l’objet de notification de modification à l’état non signé afin que vous puissiez l’utiliser dans une autre opération d’attente pour continuer à surveiller l’imprimante ou le serveur d’impression.

À une exception près, n’appelez pas la fonction FindNextPrinterChangeNotification si l’objet de notification de modification n’est pas à l’état signalé. Si la fonction wait retourne la valeur WAIT_TIMEOUT, l’objet de modification n’est pas à l’état signalé. Appelez la fonction FindNextPrinterChangeNotification uniquement si la fonction d’attente réussit sans délai d’attente. L’exception est lorsque FindNextPrinterChangeNotification est appelé avec le PRINTER_NOTIFY_OPTIONS_REFRESH bit défini dans le paramètre pPrinterNotifyOptions .

Lorsque vous n’avez plus besoin de l’objet de notification de modification, fermez-le en appelant la fonction FindClosePrinterChangeNotification .

Les appelants de FindFirstPrinterChangeNotification doivent s’assurer que le handle d’imprimante passé dans FindFirstPrinterChangeNotification reste valide jusqu’à ce que FindClosePrinterChangeNotification soit appelé. Si le handle d’imprimante est fermé avant le handle de notification de changement d’imprimante, d’autres notifications ne seront pas remises.

FindFirstPrinterChangeNotification n’envoie pas de notifications de modification pour les imprimantes 3D aux handles de serveur.

Notes

Dans Windows XP avec Service Pack 2 (SP2) et versions ultérieures, 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’impression peut être activée. Si un utilisateur établit une connexion d’imprimante à un autre ordinateur et que l’exception n’est pas activée, l’utilisateur ne reçoit pas de notifications de modification d’imprimante du serveur. Un administrateur de machine doit activer l’exception.

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
Winspool.h (inclure Windows.h)
Bibliothèque
Winspool.lib
DLL
Spoolss.dll

Voir aussi

Impression

Fonctions API du spouleur d’impression

FindClosePrinterChangeNotification

FindNextPrinterChangeNotification

OpenPrinter

PRINTER_NOTIFY_OPTIONS

PRINTER_NOTIFY_OPTIONS_TYPE