Fonction DrvPrinterEvent (winddiui.h)
La fonction DrvPrinterEvent d’une DLL d’imprimante est appelée par le spouleur d’impression lors du traitement des événements spécifiques à l’imprimante qui peuvent nécessiter une action du pilote d’imprimante.
Syntaxe
BOOL DrvPrinterEvent(
[in] LPWSTR pPrinterName,
int DriverEvent,
DWORD Flags,
LPARAM lParam
);
Paramètres
[in] pPrinterName
Pointeur fourni par l’appelant vers une chaîne de nom d’imprimante terminée par NULL. Le format de chaîne peut être \Machine\PrinterName pour spécifier une imprimante distante ou PrinterName pour spécifier une imprimante locale.
DriverEvent
Code d’événement fourni par l’appelant identifiant l’événement. Les codes d’événement suivants sont définis :
Code de l’événement | Définition |
---|---|
PRINTER_EVENT_ADD_CONNECTION | Le spouleur vient de terminer le traitement d’un appel à sa fonction AddPrinterConnection , qui permet à un utilisateur client de se connecter à une imprimante distante créée précédemment. |
PRINTER_EVENT_ATTRIBUTES_CHANGED | Les bits d’attribut d’une imprimante ont été modifiés. En réponse à l’appel d’une application à la fonction SetPrinter , le spouleur appelle la fonction DrvPrinterEvent du pilote d’imprimante, en passant le code d’événement dans l’appel. Lorsque ce code d’événement est utilisé, le paramètre lParam pointe vers une structure PRINTER_EVENT_ATTRIBUTES_INFO qui décrit l’ancien et le nouveau attributs. |
PRINTER_EVENT_CACHE_DELETE | Le spouleur supprime le cache de fichiers du client. |
PRINTER_EVENT_CACHE_REFRESH | Le spouleur met à jour les fichiers mis en cache du client. |
PRINTER_EVENT_CONFIGURATION_CHANGE | Réservé. |
PRINTER_EVENT_CONFIGURATION_UPDATE | La configuration de l’imprimante a changé. Lorsque ce code d’événement est utilisé, le paramètre lParam pointe vers une chaîne Unicode qui contient une notification mise en forme selon le schéma de notification Bidi. |
PRINTER_EVENT_DELETE_CONNECTION | Le spouleur vient de terminer le traitement d’un appel à sa fonction DeletePrinterConnection , qui permet à un utilisateur client de supprimer une connexion d’imprimante. |
PRINTER_EVENT_DELETE | Le spouleur vient de terminer le traitement d’un appel à sa fonction DeletePrinter, ce qui permet à un administrateur de supprimer une imprimante instance. |
PRINTER_EVENT_INITIALIZE | Le spouleur vient de terminer le traitement d’un appel à sa fonction AddPrinter , qui permet à un administrateur de rendre une imprimante disponible sur un serveur, ou de sa fonction SetPrinter , qui permet à un administrateur de modifier l’état d’une imprimante. Dans une connexion de rendu côté client, l’ordinateur client vient d’ajouter l’imprimante GUID. L’événement PRINTER_EVENT_INITIALIZE spécifie une valeur de paramètre NULL lParam pour les appels DrvPrinterEvent sur Windows Vista et les versions antérieures. Pour Windows 7 et versions ultérieures, le paramètre lParam est un handle de jeton utilisateur. Les pilotes d’impression peuvent utiliser le handle de jeton retourné pour interroger les données utilisateur ou emprunter l’identité de l’utilisateur. |
Flags
Indicateur de bits fourni par l’appelant, défini comme suit :
Valeur | Définition |
---|---|
PRINTER_EVENT_FLAG_NO_UI | Si elle est définie, la fonction ne doit pas afficher d’interface utilisateur. Pendant l’installation d’un processeur d’impression, d’un moniteur d’impression ou d’un pilote d’imprimante, la seule façon dont une interface utilisateur est autorisée est l’utilisation de la directive VendorSetup . Pour plus d’informations, consultez Entrées de fichier INFd’imprimante et Opérations de configuration d’imprimante personnalisées . |
Attention
La directive VendorSetup est déconseillée et ne doit pas être utilisée par les nouveaux pilotes v3 ou v4 que vous développez. Ces informations sur VendorSetup sont fournies à titre de référence uniquement ou pour la maintenance des pilotes v3 existants qui utilisent déjà cette directive INF.
lParam
Non utilisé, sauf si le paramètre DriverEvent est défini sur PRINTER_EVENT_ATTRIBUTES_CHANGED. Dans ce cas, lParam contient l’adresse d’une structure PRINTER_EVENT_ATTRIBUTES_INFO. (Voir la description précédente du paramètre DriverEvent .) Pour toutes les autres valeurs du paramètre DriverEvent , le paramètre lParam est NULL.
Valeur retournée
Si l’opération réussit, la fonction doit retourner TRUE ; dans le cas contraire, elle doit retourner FALSE. Actuellement, toutefois, la seule fois où la valeur de retour de la fonction est vérifiée est lorsque le spouleur a appelé DrvPrinterEvent pendant le traitement de la fonction AddPrinter , avec DriverEvent défini sur PRINTER_EVENT_INITIALIZE. Si DrvPrinterEvent retourne FALSE dans ce cas, le spouleur ne crée pas l’imprimante et provoque à la place l’échec de AddPrinter .
Remarques
Toutes les DLL d’interface d’imprimante doivent fournir une fonction DrvPrinterEvent , et la fonction doit prendre en charge le code d’événement PRINTER_EVENT_INITIALIZE. La prise en charge de tous les autres codes d’événement est facultative.
Les paramètres du Registre stockés lors de la gestion d’un événement PRINTER_EVENT_INITIALIZE doivent être stockés sous la clé HKEY_LOCAL_MACHINE en appelant SetPrinterData. Pour les codes d’événement PRINTER_EVENT_INITIALIZE et PRINTER_EVENT_DELETE, le spouleur vérifie que l’appelant dispose de privilèges d’administration et appelle DrvPrinterEvent lors de l’emprunt d’identité de l’appelant.
En revanche, si vous devez stocker des paramètres dans le Registre lors de la gestion d’un événement PRINTER_EVENT_ADD_CONNECTION, la DLL de l’interface d’imprimante doit les écrire sous la clé HKEY_CURRENT_USER afin qu’ils soient stockés par utilisateur. Ensuite, si un utilisateur avec un profil itinérant se connecte à un autre système, la connexion suit l’utilisateur. La fonction DrvPrinterEvent est appelée uniquement lorsque l’utilisateur établit la connexion pour la première fois, et non lorsque l’utilisateur se connecte ensuite à d’autres systèmes à l’aide du profil itinérant.
Pour les codes d’événement PRINTER_EVENT_ADD_CONNECTION et PRINTER_EVENT_DELETE_CONNECTION, le contexte d’exécution de la fonction DrvPrinterEvent est l’application appelante (généralement le dossier d’impression), et la fonction peut afficher une interface utilisateur. Pour tous les autres codes d’événement, le contexte d’exécution est le spouleur d’impression et une interface utilisateur ne peut pas être affichée.
Un pilote FAX peut, par exemple, afficher une interface utilisateur lorsqu’une connexion est établie, qui peut inviter l’utilisateur à entrer le nom et le numéro de téléphone de l’utilisateur (expéditeur fax) et enregistrer les informations jusqu’à ce que la connexion soit supprimée.
Un exemple du type de fichier qui peut être stocké dans un cache client est un fichier de métriques de police volumineux qui contient trop d’informations pour être écrites dans le Registre. Lorsque le code d’événement de la fonction DrvPrinterEvent est PRINTER_EVENT_CACHE_REFRESH, la DLL de l’interface d’imprimante peut recharger le fichier à partir du serveur pour vérifier que le cache est à jour.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Desktop (Expérience utilisateur) |
En-tête | winddiui.h (incluez Winddiui.h) |