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 WritePort
la 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 |