Share via


AddPortUI, fonction (winsplp.h)

La fonction AddPortUI d’une DLL d’interface utilisateur de moniteur de port ajoute un port d’imprimante, puis obtient des informations de configuration de port auprès de l’utilisateur et les envoie à la DLL du serveur du moniteur de port.

Syntaxe

BOOL AddPortUI(
  [in, optional]  PCWSTR pszServer,
  [in]            HWND   hWnd,
                  PCWSTR pszMonitorNameIn,
  [out, optional] PWSTR  *ppszPortNameOut
);

Paramètres

[in, optional] pszServer

Pointeur fourni par l’appelant vers une chaîne représentant un nom de serveur, ou NULL si l’imprimante est locale.

[in] hWnd

Handle fourni par l’appelant de la fenêtre qui doit être utilisé comme parent pour les boîtes de dialogue. Si la valeur est NULL, aucune boîte de dialogue ne doit s’afficher.

pszMonitorNameIn

Pointeur fourni par l’appelant vers une chaîne représentant le nom du moniteur. Peut être NULL.

[out, optional] ppszPortNameOut

Pointeur fourni par l’appelant vers un emplacement pour recevoir une chaîne de nom de port. Peut être NULL, auquel cas aucun nom n’est retourné.

Valeur retournée

Si l’opération réussit, la fonction doit retourner TRUE. Sinon, SetLastError doit être appelé pour spécifier un code d’erreur, et la fonction doit retourner FALSE. Si l’opération est annulée par l’utilisateur ou n’est pas prise en charge, la fonction doit appeler SetLastError(ERROR_CANCELLED), puis retourner FALSE.

Remarques

Les DLL de l’interface utilisateur du moniteur de port sont nécessaires pour définir une fonction AddPortUI et inclure l’adresse de la fonction dans une structure MONITORUI .

Le spouleur appelle AddPortUI à partir de sa fonction AddPort. Les trois premiers arguments reçus par AddPortUI sont les arguments reçus par AddPort. (La fonction AddPort est décrite dans la documentation Microsoft Windows SDK.)

La fonction doit effectuer les opérations suivantes :

  1. Appelez OpenPrinter, en spécifiant un nom d’imprimante au format suivant :

    \\ServerName\,XcvMonitorMonitorName

    ServerName et MonitorName sont les noms de serveur et de moniteur reçus en tant qu’arguments de fonction AddPortUI .

    L’appel à OpenPrinter nécessite une structure PRINTER_DEFAULTS, qui est décrite dans la documentation SDK Windows. Le membre DesiredAccess de la structure doit être défini sur SERVER_ACCESS_ADMINISTER. Ses membres pDatatype et pDevMode peuvent être NULL.

    Cet appel entraîne l’appel de la fonction XcvOpenPort du serveur d’impression du serveur d’impression.

  2. Obtenez un nom de port auprès de l’utilisateur en affichant une boîte de dialogue.

  3. Appelez XcvData en spécifiant les arguments d’entrée suivants :

    • Handle reçu d’OpenPrinter

    • Nom de port reçu de l’utilisateur

    • Chaîne de nom de données personnalisée, telle que « PortExists »

    Cet appel entraîne l’appel de la fonction XcvDataPort de la DLL du serveur. La fonction XcvDataPort doit retourner une valeur qui indique si le nom de port spécifié a déjà été utilisé. Si c’est le cas, la DLL d’interface utilisateur doit demander un autre nom à l’utilisateur et appeler À nouveau XcvData .

  4. Une fois qu’un nouveau nom de port valide a été reçu, appelez à nouveau XcvData , en spécifiant cette fois les arguments d’entrée suivants

    • Handle reçu d’OpenPrinter

    • Nom de port validé reçu de l’utilisateur

    • Chaîne de nom de données de « AddPort »

    Cet appel entraîne l’appel de la fonction XcvDataPort de la DLL du serveur.

  5. Obtenez des paramètres de configuration de port auprès de l’utilisateur en affichant une boîte de dialogue.

  6. Appelez XcvData une ou plusieurs fois, en spécifiant des chaînes de nom de données personnalisées, pour envoyer chaque paramètre de configuration à la DLL du serveur. Chaque appel XcvData entraîne l’appel de la fonction XcvDataPort du serveur.

  7. Appelez ClosePrinter, en spécifiant le handle reçu d’OpenPrinter. Cela entraîne l’appel de la fonction XcvClosePort de la DLL du serveur.

Configuration requise

Condition requise Valeur
Plateforme cible Desktop (Expérience utilisateur)
En-tête winsplp.h (inclure Winsplp.h)

Voir aussi

MONITORUI

XcvClosePort

XcvData

XcvDataPort

XcvOpenPort