SIO_LOOPBACK_FAST_PATH-Steuerelementcode

Wichtig Die SIO_LOOPBACK_FAST_PATH ist veraltet und wird nicht empfohlen, in Ihrem Code verwendet zu werden.

Der SIO_LOOPBACK_FAST_PATH Socket-E/A-Steuerungscode ermöglicht es einer WSK-Anwendung, einen TCP-Socket für schnellere Vorgänge auf der Loopbackschnittstelle zu konfigurieren.

Um diese IOCTL zu verwenden, ruft eine WSK-Anwendung die WskControlSocket-Funktion mit den folgenden Parametern auf.

Parameter Wert

Requesttype

WskIoctl

ControlCode

SIO_LOOPBACK_FAST_PATH

Level

0

InputSize

Die Größe des Eingabepuffers in Bytes.

Inputbuffer

Ein Zeiger auf den Eingabepuffer. Dieser Parameter enthält einen Zeiger auf einen booleschen Wert, der angibt, ob der Socket für schnelle Loopbackvorgänge konfiguriert werden soll.

OutputSize

0

OutputBuffer

NULL

OutputSizeReturned

NULL

Irp

Ein Zeiger auf eine IRP.

Eine Anwendung kann die SIO_LOOPBACK_FAST_PATH IOCTL verwenden, um die Leistung von Loopbackvorgängen auf einem TCP-Socket zu verbessern. Diese IOCTL fordert an, dass der TCP/IP-Stapel einen speziellen schnellen Pfad für Loopbackvorgänge für diesen Socket verwendet. Die SIO_LOOPBACK_FAST_PATH IOCTL kann nur mit TCP-Sockets verwendet werden. Diese IOCTL muss auf beiden Seiten der Loopbacksitzung verwendet werden. Der schnelle TCP-Loopbackpfad wird entweder über die IPv4- oder IPv6-Loopbackschnittstelle unterstützt.

Der Socket, der die Verbindungsanforderung initiieren möchte, muss diese IOCTL anwenden, bevor die Verbindungsanforderung gestellt wird. Der Socket, der auf die Verbindungsanforderung lauscht, muss diese IOCTL anwenden, bevor die Verbindung akzeptiert wird.

Sobald eine Anwendung die Verbindung auf einer Loopbackschnittstelle mithilfe des schnellen Pfads herstellt, müssen alle Pakete für die Lebensdauer der Verbindung den schnellen Pfad verwenden.

Das Anwenden SIO_LOOPBACK_FAST_PATH auf einen Socket, der mit einem Nicht-Loopbackpfad verbunden wird, hat keine Auswirkungen.

Diese TCP-Loopbackoptimierung führt zu Paketen, die über Transport Layer (TL) fließen, anstatt über den herkömmlichen Loopback über Die Netzwerkschicht. Diese Optimierung verbessert die Latenz für Loopbackpakete. Sobald sich eine Anwendung für eine Einstellung auf Verbindungsebene für die Verwendung des schnellen Loopbackpfads entschieden hat, folgen alle Pakete dem Loopbackpfad. Bei loopback-Kommunikationen werden keine Überlastungen und paketverknutzte Pakete erwartet. Das Konzept der Überlastungskontrolle und der zuverlässigen Übermittlung in TCP wird unnötig sein. Dies gilt jedoch nicht für die Flusssteuerung. Ohne Ablaufsteuerung kann der Absender den Empfangspuffer überlasten, was zu einem fehlerhaften TCP-Loopbackverhalten führt. Die Ablaufsteuerung im TCP-optimierten Loopbackpfad wird beibehalten, indem Sendeanforderungen in einer Warteschlange platziert werden. Wenn der Empfangspuffer voll ist, garantiert der TCP/IP-Stapel, dass die Sendevorgänge erst abgeschlossen werden, wenn die Warteschlange gewartet wurde, sodass die Ablaufsteuerung beibehalten wird.

TCP-Loopbackverbindungen für schnelle Pfade in Anwesenheit einer WFP-Legende (Windows Filtering Platform) für Verbindungsdaten müssen den nicht optimierten langsamen Pfad für Loopback verwenden. WFP-Filter verhindern also die Verwendung dieses neuen schnellen Loopbackpfads. Wenn ein WFP-Filter aktiviert ist, verwendet das System den langsamen Pfad, auch wenn die SIO_LOOPBACK_FAST_PATH IOCTL festgelegt wurde. Dies hat zur Folge, dass Anwendungen im Benutzermodus über die vollständige WFP-Sicherheitsfunktion verfügen.

Standardmäßig ist SIO_LOOPBACK_FAST_PATH deaktiviert.

Nur eine Teilmenge der TCP/IP-Socketoptionen wird unterstützt, wenn die SIO_LOOPBACK_FAST_PATH IOCTL verwendet wird, um den schnellen Loopbackpfad für einen Socket zu aktivieren. Die Liste der unterstützten Optionen enthält Folgendes:

Eine WSK-Anwendung muss einen Zeiger auf ein IRP und eine Vervollständigungsroutine angeben, wenn die WskControlSocket-Funktion für diesen Anforderungstyp aufgerufen wird. Die Anwendung darf den Puffer erst freigeben, wenn das WSK-Subsystem die IRP abgeschlossen hat. Wenn das IRP abgeschlossen ist, ruft das Subsystem die Vervollständigungsroutine auf. In der Vervollständigungsroutine muss die Anwendung die IRP-status überprüfen und alle Ressourcen freigeben, die sie zuvor für die Anforderung zugewiesen hatte.

Weitere Informationen zur WSK-IRP-Behandlung finden Sie unter Verwenden von IRPs mit Winsock-Kernelfunktionen.

Beim Abschließen des IRP legt das Subsystem Irp-IoStatus.Status> auf STATUS_SUCCESS fest, wenn die Anforderung erfolgreich ist. Andernfalls wird Irp-IoStatus.Status> auf STATUS_INVALID_BUFFER_SIZE oder STATUS_NOT_SUPPORTED festgelegt, wenn der Aufruf nicht erfolgreich ist.

Rückgabewert

Anforderungen

Unterstützte Mindestversion (Client)

Windows 8

Unterstützte Mindestversion (Server)

Windows Server 2012

Header

Mstcpip.h

IRQL

PASSIVE_LEVEL

Weitere Informationen

SIO_LOOPBACK_FAST_PATH (SDK)

Verwenden von IRPs mit Winsock-Kernelfunktionen