Opérations de configuration personnalisée de l'imprimante
Important
La plateforme d’impression moderne est le moyen privilégié de Windows pour communiquer avec les imprimantes. Nous vous recommandons d’utiliser le pilote de classe IPP en boîte de Microsoft, ainsi que les applications de support d’impression (PSA), pour personnaliser l’expérience d’impression dans Windows 10 et 11 pour le développement de périphériques d’impression.
Pour plus d’informations, veuillez consulter les articles Plateforme d’impression moderne et Guide de conception des applications de support d’impression.
Pour fournir des opérations de configuration d’imprimante personnalisée pour les imprimantes installées à l’aide de Ntprint.dll, le programme d’installation de classe d’imprimante Windows 2000 et des versions ultérieurs par défaut, vous pouvez inclure une entrée INF VendorSetup dans le fichier INF de l’imprimante.
Attention
Notez que VendorSetup est désormais obsolète et ne doit pas être utilisé par les nouveaux pilotes v3 ou v4 que vous développez. Cette rubrique est fournie à titre de référence uniquement, ou pour la maintenance des pilotes v3 existants qui utilisent déjà cette directive INF.
Si vous envisagez d’afficher des éléments d’interface utilisateur pendant l’installation d’un pilote d’imprimante, vous devez utiliser une entrée INF VendorSetup . Toutefois, vous devez utiliser une entrée INF VendorSetup uniquement si cela est nécessaire. Un inconvénient important est que son utilisation empêche un utilisateur ordinaire d’installer une imprimante Plug-and-Play (l’utilisateur doit avoir un rôle d'Administrateur dans ce cas).
Il n’est pas possible d’installer un appareil à l’aide d’une installation côté serveur lorsque le pilote de périphérique n’est pas signé ou lorsque le fichier INF du pilote (signé ou non signé) contient une entrée INF VendorSetup. Lorsque le pilote n’est pas signé, le programme d’installation ajoute 0x8000 au rang que le pilote aurait s’il s’agissait d’un pilote signé. Si le fichier INF du pilote contient une entrée VendorSetup, le programme d’installation détermine que l’installation de l’appareil nécessite une interaction utilisateur (ce qui n'est pas possible dans une installation côté serveur) et arrête l’installation.
Le programme d’installation arrête également une installation côté serveur si le rang du pilote est 0x8000 ou plus. L’installation peut se poursuivre lorsqu’un utilisateur disposant de privilèges Administrateur se connecte, auquel cas le programme d’installation redémarre l’installation de l’appareil en tant qu’installation côté client. Pour un pilote dont le rang est 0x1000 ou plus et qui n’est pas, par conséquent, une correspondance d’ID matériel, le programme d’installation lance l’Assistant Nouveau matériel trouvé dans la DLL de nouvel appareil, qui invite l’utilisateur à installer un pilote.
Si le fichier INF d’un pilote signé contient une entrée VendorSetup et que le rang du pilote est inférieur à 0x1000, le programme d’installation ne lance pas l’Assistant Nouveau matériel trouvé. Pour plus d’informations, consultez Comment le programme d’installation sélectionne les pilotes.
Le format de l’entrée VendorSetup est le suivant :
VendorSetup= FileName, FunctionName
où FileName est le nom d’une DLL contenant une fonction d’installation, et FunctionName est le nom de la fonction. La DLL doit être installée dans le répertoire %windir%\system32. Le programme d’installation de la classe d’imprimante appelle la fonction d’installation dans cette DLL uniquement lorsque l’imprimante est installée en Plug-and-Play ou par l’Assistant Ajouter une imprimante. La fonction d’installation n’est pas appelée quand seul un pilote est installé (par exemple, à l’aide de l’Assistant Ajouter un pilote d’imprimante).
Pour copier un ou plusieurs fichiers dans le répertoire %windir%\system32, vous pouvez ajouter le nom d’une section définie par l’enregistreur INF à la section INF DestinationDirs. Dans l’exemple suivant, la section OEMVendorFiles répertorie tous les fichiers à copier.
[DestinationDirs]
OEMVendorFiles = 11
...
[OEMVendorFiles]
vendor.dll
La fonction spécifiée par FunctionName doit correspondre au prototype suivant :
VOID WINAPI
FunctionName (HWND hWnd, HINSTANCE hInstance, LPSTR lpszCmdLine, UINT nCmdShow);
où FunctionName est le nom de la fonction d’installation. Les paramètres de la fonction et leurs descriptions sont présentés dans le tableau suivant.
Paramètre | Description |
---|---|
hWnd | Spécifie le descripteur de la fenêtre parent. |
hInstance | Spécifie le descripteur d’instance du processus appelant. |
lpszCmdLine | Spécifie une chaîne ANSI contenant le nom de l’imprimante installée. Cette chaîne est analysée par FunctionName. |
nCmdShow | Spécifie la façon dont la fenêtre doit être affichée. Les indicateurs qui contrôlent la façon dont la fenêtre est affichée sont définis dans Winuser.h. |
Le programme d’installation de la classe d’imprimante appelle la fonction d’installation lors d'une des dernières étapes de l’opération d’installation.