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 den das Datagramm gesendet werden soll.

[in] Buffer

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

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. Wenn NULL-, wird das Datagramm an die feste Remotetransportadresse oder die Adresse des festen Zieltransports gesendet. Wenn keinNULL-, 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 Bytes von Daten im Puffer, auf die durch den parameter ControlInfo verwiesen wird. 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 zu sendenden Datagramm zugeordnet sind. Die Steuerelementinformationsdaten bestehen aus einem oder mehreren Steuerelementdatenobjekten, die jeweils mit einer CMSGHDR- Struktur beginnen. Wenn dem Datagramm keine Steuerelementinformationen zugeordnet sind, sollte dieser Parameter NULL-sein.

[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

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

Rückgabecode Beschreibung
STATUS_SUCCESS
Das Datagramm wurde 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 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. 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.
Andere Statuscodes
Fehler. Das IRP wird mit dem Fehlerstatus abgeschlossen.

Bemerkungen

Wenn die WskSendTo-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 der IRP abgeschlossen ist. Darüber hinaus muss der Puffer, auf den der ControlInfo-Parameter verweist, auch gültig bleiben, bis das IRP abgeschlossen ist. Wenn die WSK-Anwendung die MDL-Kette oder den Steuerinformationspuffer mit einer der funktionen ExAllocateXxx zugewiesen hat, kann der Speicher nicht mit der entsprechenden ExFree-Xxx--Funktion freigegeben werden, bis die IRP abgeschlossen ist. Wenn die WSK-Anwendung die MDL-Kette oder den Steuerinformationspuffer auf dem Stapel zugewiesen hat, kann sie nicht von der Funktion zurückgegeben werden, die die WskSendTo-Funktion aufruft, bis die IRP abgeschlossen wurde.

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

CMSGHDR-

SOCKADDR-

WSK_BUF

WSK_PROVIDER_DATAGRAM_DISPATCH

WSK_SOCKET

WskCloseSocket

WskControlSocket-

WskReceiveFrom

WskReceiveFromEvent