Freigeben über


PFN_WSK_SEND Rückruffunktion (wsk.h)

Die WskSend-Funktion sendet Daten über einen verbindungsorientierten Oder Streamsocket an eine Remotetransportadresse.

Syntax

PFN_WSK_SEND PfnWskSend;

NTSTATUS PfnWskSend(
  [in]      PWSK_SOCKET Socket,
  [in]      PWSK_BUF Buffer,
  [in]      ULONG Flags,
  [in, out] PIRP Irp
)
{...}

Parameter

[in] Socket

Ein Zeiger auf eine WSK_SOCKET-Struktur , die das Socketobjekt für den Socket angibt, über den die Daten gesendet werden sollen.

[in] Buffer

Ein Zeiger auf eine initialisierte WSK_BUF Struktur, die den Datenpuffer beschreibt, der die Daten enthält, die über den Socket gesendet werden.

[in] Flags

Ein ULONG-Wert, der einen bitweisen OR einer Kombination der folgenden Flags enthält:

WSK_FLAG_NODELAY

Weist den zugrunde liegenden Transport an, die Daten und alle zuvor in die Warteschlange eingereihten Daten unverzüglich an die Remoteanwendung zu senden.

Dieses Flag wird vom Microsoft TCP/IP-Transportprotokoll unterstützt. Dieses Flag wird von anderen Transportprotokollen möglicherweise nicht unterstützt.

[in, out] Irp

Ein Zeiger auf eine vom Aufrufer zugewiesene IRP, die das WSK-Subsystem verwendet, um den Sendevorgang asynchron abzuschließen. Weitere Informationen zur Verwendung von IRPs mit WSK-Funktionen finden Sie unter Verwenden von IRPs mit Winsock-Kernelfunktionen.

Rückgabewert

WskSend gibt einen der folgenden NTSTATUS-Codes zurück:

Rückgabecode Beschreibung
STATUS_SUCCESS
Daten wurden erfolgreich über den Socket gesendet. Die IRP wird erfolgreich status abgeschlossen. Das Feld IoStatus.Information des IRP enthält die Anzahl der gesendeten Bytes.
STATUS_PENDING
Das WSK-Subsystem konnte die Daten nicht sofort über den Socket senden. Das WSK-Subsystem schließt die IRP ab, nachdem es die Daten über den Socket gesendet hat. Die status des Sendevorgangs wird im Feld IoStatus.Status des IRP zurückgegeben. Wenn der Vorgang erfolgreich ist, enthält das IoStatus.Information-Feld des IRP die Anzahl der gesendeten Bytes.
STATUS_FILE_FORCED_CLOSED
Der Socket ist nicht mehr funktionsfähig. Die IRP wird mit einem Fehler status abgeschlossen. Die WSK-Anwendung muss die WskCloseSocket-Funktion aufrufen, um den Socket so schnell wie möglich zu schließen.
STATUS_NOT_SUPPORTED
Ein angegebenes Flag wird vom zugrunde liegenden Netzwerktransport nicht unterstützt.
Andere status Codes
Ein Fehler ist aufgetreten. Die IRP wird mit einem Fehler status abgeschlossen.

Hinweise

Eine WSK-Anwendung kann die WskSend-Funktion nur in einem verbindungsorientierten Oder Streamsocket aufrufen, der zuvor mit einer Remotetransportadresse verbunden war. Ein verbindungsorientierter Socket ist mit einer der folgenden Methoden mit einer Remotetransportadresse verbunden:

  • Die WSK-Anwendung stellt eine Verbindung mit dem Socket her, indem die WskConnect-Funktion aufgerufen wird.
  • Die WSK-Anwendung erstellt, bindet den Socket und stellt eine Verbindung her, indem die WskSocketConnect-Funktion aufgerufen wird.
  • Das WSK-Subsystem stellt eine Verbindung mit dem Socket her, wenn die WSK-Anwendung eine eingehende Verbindungsanforderung für einen Listensocket akzeptiert.
Wenn die WskSend-Funktion STATUS_PENDING zurückgibt, muss die MDL-Kette, die in der WSK_BUF-Struktur beschrieben wird, auf die der Buffer-Parameter verweist, im Arbeitsspeicher bleiben, bis die IRP abgeschlossen ist.

Das WSK-Subsystem führt beim Senden von Daten über einen Socket keine Pufferung von Daten durch. Daher wird ein Aufruf der WskSend-Funktion vom WSK-Subsystem erst abgeschlossen, wenn alle Daten tatsächlich gesendet wurden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform Universell
Header wsk.h (einschließen von Wsk.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

WSK_BUF

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskReceive

WskReceiveEvent