Freigeben über


PFN_WSK_SEND_TO Rückruffunktion (wsk.h)

Die WskSendTo-Funktion sendet Datagrammdaten an eine Remotetransportadresse.

Syntax

PFN_WSK_SEND_TO PfnWskSendTo;

NTSTATUS PfnWskSendTo(
  [in]           PWSK_SOCKET Socket,
  [in]           PWSK_BUF Buffer,
                 ULONG Flags,
  [in, optional] PSOCKADDR RemoteAddress,
  [in]           ULONG ControlInfoLength,
  [in, optional] PCMSGHDR ControlInfo,
  [in, out]      PIRP Irp
)
{...}

Parameter

[in] Socket

Ein Zeiger auf eine WSK_SOCKET-Struktur , die das Socketobjekt für den Datagrammsocket angibt, über das das Datagramm gesendet werden soll.

[in] Buffer

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

Flags

Dieser Parameter ist für die Systemverwendung reserviert. Eine WSK-Anwendung muss diesen Parameter auf Null festlegen.

[in, optional] RemoteAddress

Ein Zeiger auf eine Struktur, die die Remotetransportadresse angibt, an die das Datagramm gesendet werden soll. Dieser Zeiger muss ein Zeiger auf den spezifischen SOCKADDR-Strukturtyp sein, der der Adressfamilie entspricht, die die WSK-Anwendung beim Erstellen des Sockets angegeben hat.

Wenn die WSK-Anwendung entweder eine feste Remotetransportadresse oder eine feste Zieltransportadresse für den Datagrammsocket festgelegt hat, ist dieser Zeiger optional und kann NULL sein. Bei NULL wird das Datagramm an die feste Remotetransportadresse oder die feste Ziel-Transportadresse gesendet. Wenn nicht NULL, wird das Datagramm an die angegebene Remotetransportadresse gesendet.

Weitere Informationen zum Festlegen einer festen Remotetransportadresse für einen Datagrammsocket finden Sie unter SIO_WSK_SET_REMOTE_ADDRESS.

Weitere Informationen zum Festlegen einer festen Zieltransportadresse für einen Datagrammsocket finden Sie unter SIO_WSK_SET_SENDTO_ADDRESS.

[in] ControlInfoLength

Die Anzahl der Byte von Daten im Puffer, auf die der ControlInfo-Parameter verweist. Wenn dem Datagramm keine Steuerelementinformationen zugeordnet sind, muss der ControlInfoLength-Parameter null sein.

[in, optional] ControlInfo

Ein Zeiger auf einen Puffer, der Steuerelementinformationen enthält, die dem gesendeten Datagramm zugeordnet sind. Die Steuerelementinformationsdaten bestehen aus einem oder mehreren Steuerelementdatenobjekten, von denen jedes mit einer CMSGHDR-Struktur beginnt. Wenn keine Steuerelementinformationen vorhanden sind, die dem Datagramm zugeordnet sind, sollte dieser Parameter NULL sein.

[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

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

Rückgabecode Beschreibung
STATUS_SUCCESS
Das Datagramm wurde 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 das Datagramm nicht sofort über den Socket senden. Das WSK-Subsystem schließt das IRP ab, nachdem es das Datagramm ü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 Feld IoStatus.Information 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.
Andere status Codes
Ein Fehler ist aufgetreten. Die IRP wird mit einem Fehler status abgeschlossen.

Hinweise

Wenn die WskSendTo-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. Darüber hinaus muss der Puffer, auf den vom ControlInfo-Parameter verwiesen wird, auch gültig bleiben, bis der IRP abgeschlossen ist. Wenn die WSK-Anwendung die MDL-Kette oder den Steuerungsinformationspuffer einer der ExAllocateXxx-Funktionen zugeordnet hat, kann sie den Speicher mit der entsprechenden ExFreeXxx-Funktion erst freigeben, nachdem die IRP abgeschlossen wurde. Wenn die WSK-Anwendung die MDL-Kette oder den Steuerungsinformationspuffer auf dem Stapel zugeordnet hat, kann sie erst nach Abschluss des IRP von der Funktion zurückgeben, die die WskSendTo-Funktion aufruft.

Das WSK-Subsystem führt keine Pufferung von Daten durch, wenn Datagramme über einen Socket gesendet werden. Daher wird ein Aufruf der WskSendTo-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

CMSGHDR

SOCKADDR

WSK_BUF

WSK_PROVIDER_DATAGRAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskControlSocket

WskReceiveFrom

WskReceiveFromEvent