Freigeben über


WritePort-Funktion (winsplp.h)

Die WritePort Funktion eines Portmonitors schreibt Daten in einen Druckeranschluss.

Syntax

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

Parameter

[in] hPort

Vom Anrufer bereitgestellter Porthandle.

[in] pBuffer

Vom Aufrufer bereitgestellter Zeiger auf einen Puffer, der Daten enthält, die in den Port geschrieben werden sollen.

cbBuf

Vom Aufrufer bereitgestellte Größe pBuffer-in Byte.

[out] pcbWritten

Vom Anrufer bereitgestellter Zeiger auf einen Speicherort, um die Anzahl der Bytes zu empfangen, die erfolgreich an den Port geschrieben wurden.

Rückgabewert

Wenn der Vorgang erfolgreich ist, sollte die Funktion TRUE-zurückgeben. Andernfalls sollte FALSE-zurückgegeben werden.

Bemerkungen

Sprachmonitore- und Portmonitor-Server-DLLs sind erforderlich, um eine WritePort Funktion zu definieren und die Adresse der Funktion in eine MONITOR2 Struktur einzuschließen.

Das Handle, das als hPort--Argument der Funktion "hPort" empfangen wird, ist das Porthandle, das der Monitor OpenPort oder OpenPortEx- funktion bereitgestellt hat.

In der Regel fügt die WritePort-Funktion eines Sprachmonitors dem im Puffer enthaltenen Datenstrom sprachspezifische Befehle hinzu, auf die pBuffer-verweist, und übergibt dann den geänderten Datenstrom an die WritePort-Funktion des Portmonitors.

Die WritePort-Funktion einer Portmonitor-Server-DLL ruft in der Regel WriteFile- (in der Microsoft Windows SDK-Dokumentation beschrieben) auf, um den Datenstrom an den Kernelmodusporttreiber zu senden.

Ein typischer Druckauftrag besteht aus mehreren Aufrufen von WritePort. Jeder Aufruf kann einen anderen cbBuf Wert aufweisen.

Die Funktion sollte die Anzahl der Bytes zurückgeben, die erfolgreich geschrieben wurden, indem die Zahl an der Stelle platziert wird, auf die durch pcbWrittenverwiesen wird. Bei Sprachmonitoren darf diese Zahl nicht die Anzahl zusätzlicher, sprachspezifischer Bytes enthalten, die dem Datenstrom hinzugefügt wurden.

Der Spooler bestimmt den Erfolg oder Fehler des Schreibvorgangs, indem der Rückgabewert WritePortund nicht die zurückgegebene Byteanzahl überprüft wird. Eine zurückgegebene Byteanzahl von Null stellt also keinen fehlgeschlagenen Schreibvorgang dar, es sei denn, die Funktion gibt FALSE-zurück.

Eine Art systemgestützter oder überwachter Timeoutmechanismus muss sicherstellen, dass die WritePort-Funktion innerhalb eines angemessenen Zeitraums zurückgegeben wird, um zu vermeiden, dass der Spooler angehalten wird.

Es ist akzeptabel, dass ein Sprachmonitor die WritePort Routine eines Portmonitors außerhalb eines StartDocPort-/EndDocPort--Paars aufruft. Einige Portmonitore können jedoch einen solchen Aufruf nicht ausführen, sodass der Sprachmonitor geschrieben werden muss, um diesen Fehler zu behandeln.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- winsplp.h (include Winsplp.h)
Library NtosKrnl.exe

Siehe auch

StartDocPort-

OpenPortEx-

OpenPort-

MONITOR2

EndDocPort-