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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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 |