Partager via


WritePort, fonction (winsplp.h)

La fonction WritePort d’un moniteur de 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 des données à écrire dans 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 écrits avec succès dans le port.

Valeur de retour

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

Remarques

moniteurs de langage et les DLL du serveur de surveillance de port sont nécessaires pour définir une fonction WritePort 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 WritePort d’un moniteur de langage ajoute des commandes spécifiques à la langue du flux de données contenu dans la mémoire tampon pointée par pBuffer, puis transmet le flux de données modifié à la fonction WritePort du moniteur de port.

La fonction WritePort d’un serveur de moniteur de port appelle généralement writeFile (décrit dans la documentation du Kit de développement logiciel (SDK) Microsoft Windows) 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 renvoyer le nombre d’octets correctement écrits en plaçant le nombre à l’emplacement vers lequel pointe . Pour les moniteurs de langue, 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 WritePortvaleur de retour, et non le nombre d’octets retournés. Par conséquent, un nombre d’octets retourné de zéro ne représente pas d’écriture ayant échoué, sauf si la fonction retourne FALSE.

Un certain type de mécanisme de délai d’attente implémenté par le système ou de surveillance doit s’assurer que la fonction WritePort retournera dans un délai raisonnable, afin d’éviter de bloquer le spouleur.

Il est acceptable qu’un moniteur de langue appelle la routine de WritePort d’un moniteur de 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 cette défaillance.

Exigences

Exigence Valeur
plateforme cible Bureau
d’en-tête winsplp.h (include Winsplp.h)
bibliothèque NtosKrnl.exe

Voir aussi

startDocPort

OpenPortEx

OpenPort

MONITOR2

endDocPort