Share via


WritePort, fonction (winsplp.h)

La fonction d’un moniteur de WritePort port écrit des données dans un port d’imprimante.

Syntaxe

BOOL WritePort(
  _In_  HANDLE  hPort,
  _In_  LPBYTE  pBuffer,
        DWORD   cbBuf,
  _Out_ LPDWORD pcbWritten
);

Paramètres

[in] hPort

Handle de port fourni par l’appelant.

[in] pBuffer

Pointeur fourni par l’appelant vers une mémoire tampon contenant les données à écrire sur le port.

cbBuf

Taille fournie par l’appelant, en octets, de pBuffer.

[out] pcbWritten

Pointeur fourni par l’appelant vers un emplacement pour recevoir le nombre d’octets correctement écrit sur le port.

Valeur retournée

Si l’opération réussit, la fonction doit retourner TRUE. Sinon, elle doit retourner FALSE.

Remarques

Les moniteurs de langage et les DLL de serveur de surveillance de port sont nécessaires pour définir une WritePort fonction et inclure l’adresse de la fonction dans une structure MONITOR2 .

Le handle reçu en tant qu’argument hPort de la fonction est le handle de port fourni par la fonction OpenPort ou OpenPortEx du moniteur.

En règle générale, la fonction d’un moniteur de WritePort langage ajoute des commandes spécifiques à la langue au flux de données contenu dans la mémoire tampon vers laquelle pointe pBuffer, puis transmet le flux de données modifié à la fonction du moniteur de WritePort port.

La fonction d’une DLL de serveur de surveillance de WritePort port appelle généralement WriteFile (décrit dans la documentation Microsoft Windows SDK) pour envoyer le flux de données au pilote de port en mode noyau.

Un travail d’impression classique se compose de plusieurs appels à WritePort. Chaque appel peut avoir une valeur cbBuf différente.

La fonction doit retourner le nombre d’octets correctement écrits en plaçant le nombre à l’emplacement indiqué par pcbWritten. Pour les moniteurs linguistiques, ce nombre ne doit pas inclure le nombre d’octets supplémentaires spécifiques à la langue ajoutés au flux de données.

Le spouleur détermine la réussite ou l’échec de l’opération d’écriture en vérifiant WritePortla valeur de retour de , et non le nombre d’octets retournés. Par conséquent, un nombre d’octets retourné de zéro ne représente pas une écriture ayant échoué, sauf si la fonction retourne FALSE.

Une sorte de mécanisme de délai d’attente implémenté par le système ou implémenté par le moniteur doit garantir que la WritePort fonction retourne dans un délai raisonnable, afin d’éviter de bloquer le spouleur.

Il est acceptable pour un moniteur de langue d’appeler la routine d’un moniteur de WritePort port en dehors d’une paire StartDocPort/EndDocPort . Toutefois, certains moniteurs de port peuvent échouer à un tel appel, de sorte que le moniteur de langue doit être écrit pour gérer cet échec.

Configuration requise

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

Voir aussi

StartDocPort

OpenPortEx

OpenPort

MONITOR2

EndDocPort