Freigeben über


PFN_WSK_SEND Rückruffunktion (wsk.h)

Die WskSend--Funktion sendet Daten über einen Verbindungs- oder Datenstromsocket an eine Remote-Transportadresse.

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

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

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

[in, out] Irp

Ein Zeiger auf ein vom Aufrufer zugewiesenes IRP, das vom WSK-Subsystem verwendet wird, um den Sendevorgang asynchron abzuschließen. Weitere Informationen zur Verwendung von IRPs mit WSK-Funktionen finden Sie unter Verwenden von IRPs mit Winsock Kernel Functions.

Rückgabewert

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

Rückgabecode Beschreibung
STATUS_SUCCESS
Daten wurden erfolgreich über den Socket gesendet. Das IRP wird mit dem Erfolgsstatus abgeschlossen. Das IoStatus.Information Feld 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 das IRP ab, nachdem es die Daten über den Socket gesendet hat. Der Status des Sendevorgangs wird im feld IoStatus.Status 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. Das IRP wird mit dem Fehlerstatus 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 Statuscodes
Fehler. Das IRP wird mit dem Fehlerstatus abgeschlossen.

Bemerkungen

Eine WSK-Anwendung kann die WskSend--Funktion nur für einen verbindungsorientierten oder Streamsocket aufrufen, der zuvor mit einer Remote-Transportadresse verbunden wurde. Ein verbindungsorientierter Socket ist über eine der folgenden Methoden mit einer Remote-Transportadresse verbunden:

  • Die WSK-Anwendung verbindet den Socket durch Aufrufen der funktion WskConnect.
  • Die WSK-Anwendung erstellt, bindet und verbindet den Socket durch Aufrufen der WskSocketConnect--Funktion.
  • Das WSK-Subsystem verbindet den Socket, wenn die WSK-Anwendung eine eingehende Verbindungsanforderung für einen Überwachungssocket akzeptiert.
Wenn die WskSend--Funktion STATUS_PENDING zurückgibt, muss die in der WSK_BUF Struktur beschriebene MDL-Kette, auf die der parameter Buffer verweist, im Arbeitsspeicher bleiben, bis das IRP abgeschlossen ist.

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

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform- Universal
Header- wsk.h (include Wsk.h)
IRQL- <= DISPATCH_LEVEL

Siehe auch

WSK_BUF

WSK_PROVIDER_CONNECTION_DISPATCH

WSK_PROVIDER_STREAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskReceive

WskReceiveEvent-