Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
WażneSIO_LOOPBACK_FAST_PATH jest przestarzała i nie zaleca się ich użycia w kodzie.
Kod sterowania we/wy gniazda SIO_LOOPBACK_FAST_PATH umożliwia aplikacji WSK skonfigurowanie gniazda TCP na potrzeby szybszych operacji w interfejsie sprzężenia zwrotnego.
Aby użyć tej biblioteki IOCTL, aplikacja WSK wywołuje funkcję WskControlSocket z następującymi parametrami.
| Parametr | Wartość |
|---|---|
RequestType |
WskIoctl |
ControlCode |
SIO_LOOPBACK_FAST_PATH |
poziom |
0 |
InputSize |
Rozmiar w bajtach buforu wejściowego. |
InputBuffer |
Wskaźnik do buforu wejściowego. Ten parametr zawiera wskaźnik do wartości logicznej , która wskazuje, czy gniazdo powinno być skonfigurowane na potrzeby operacji szybkiego sprzężenia zwrotnego. |
OutputSize |
0 |
OutputBuffer |
null |
OutputSizeReturned |
null |
Irp |
Wskaźnik do IRP. |
Aplikacja może użyć SIO_LOOPBACK_FAST_PATH IOCTL, aby poprawić wydajność operacji sprzężenia zwrotnego w gniazdie TCP. To IOCTL żąda, aby stos TCP/IP używał specjalnej szybkiej ścieżki do operacji sprzężenia zwrotnego w tym gniazdie. SIO_LOOPBACK_FAST_PATH IOCTL można używać tylko z gniazdami TCP. To IOCTL musi być używane po obu stronach sesji sprzężenia zwrotnego. Szybka ścieżka sprzężenia zwrotnego PROTOKOŁU TCP jest obsługiwana przy użyciu interfejsu sprzężenia zwrotnego IPv4 lub IPv6.
Gniazdo, które planuje zainicjować żądanie połączenia, musi zastosować tę bibliotekę IOCTL przed złożeniem żądania połączenia. Gniazdo, które nasłuchuje żądania połączenia, musi zastosować tę bibliotekę IOCTL przed zaakceptowaniem połączenia.
Po ustanowieniu połączenia przez aplikację w interfejsie sprzężenia zwrotnego przy użyciu szybkiej ścieżki wszystkie pakiety na okres istnienia połączenia muszą używać szybkiej ścieżki.
Zastosowanie SIO_LOOPBACK_FAST_PATH do gniazda, które będzie połączone ze ścieżką niesprzężenia zwrotnego, nie będzie miało żadnego wpływu.
Ta optymalizacja sprzężenia zwrotnego PROTOKOŁU TCP powoduje, że pakiety przepływają przez warstwę transportu (TL) zamiast tradycyjnego sprzężenia zwrotnego za pośrednictwem warstwy sieciowej. Ta optymalizacja poprawia opóźnienie pakietów sprzężenia zwrotnego. Gdy aplikacje zdecydują się na ustawienie poziomu połączenia, aby używać szybkiej ścieżki sprzężenia zwrotnego, wszystkie pakiety będą podążać ścieżką sprzężenia zwrotnego. W przypadku komunikacji sprzężenia zwrotnego nie oczekuje się przeciążenia i upuszczania pakietów. Pojęcie kontroli przeciążenia i niezawodnego dostarczania w protokole TCP będzie niepotrzebne. Nie dotyczy to jednak sterowania przepływem. Bez sterowania przepływem nadawca może przeciążyć bufor odbierania, co prowadzi do błędnego zachowania sprzężenia zwrotnego TCP. Sterowanie przepływem w ścieżce sprzężenia zwrotnego zoptymalizowanego pod kątem protokołu TCP jest utrzymywane przez umieszczenie żądań wysyłania w kolejce. Gdy bufor odbierania jest pełny, stos TCP/IP gwarantuje, że wysyłanie nie zostanie ukończone, dopóki kolejka nie zostanie obsłużona, zachowując kontrolę przepływu.
Połączenia sprzężenia zwrotnego szybkich ścieżek TCP w obecności wywołania platformy filtrowania systemu Windows (WFP) dla danych połączenia muszą przyjmować niezoptymalizowaną powolną ścieżkę do sprzężenia zwrotnego. Dlatego filtry WFP uniemożliwią korzystanie z tej nowej szybkiej ścieżki sprzężenia zwrotnego. Po włączeniu filtru WFP system będzie używać powolnej ścieżki, nawet jeśli ustawiono SIO_LOOPBACK_FAST_PATH IOCTL. Wynika to z tego, że aplikacje w trybie użytkownika mają pełną funkcję zabezpieczeń WFP.
Domyślnie SIO_LOOPBACK_FAST_PATH jest wyłączona.
Tylko podzbiór opcji gniazda TCP/IP jest obsługiwany, gdy SIO_LOOPBACK_FAST_PATH IOCTL jest używany do włączania szybkiej ścieżki sprzężenia zwrotnego na gniazdach. Lista obsługiwanych opcji obejmuje następujące elementy:
- IP_TTL
- IP_UNICAST_IF
- IPV6_UNICAST_HOPS
- IPV6_UNICAST_IF
- IPV6_V6ONLY
- SO_CONDITIONAL_ACCEPT
- SO_EXCLUSIVEADDRUSE
- SO_PORT_SCALABILITY
- SO_RCVBUF
- SO_REUSEADDR
- TCP_BSDURGENT
Aplikacja WSK musi określić wskaźnik do protokołu IRP i procedurę uzupełniania podczas wywoływania funkcji WskControlSocket dla tego typu żądania. Aplikacja nie może zwolnić buforu, dopóki podsystem WSK nie ukończy protokołu IRP. Po zakończeniu IRP podsystem wywołuje procedurę uzupełniania. W procedurze uzupełniania aplikacja musi sprawdzić stan IRP i zwolnić wszystkie zasoby, które wcześniej przydzielono do żądania.
Aby uzyskać więcej informacji na temat obsługi protokołu IRP WSK, zobacz Using IRPs with Winsock Kernel Functions.
Podczas wykonywania protokołu IRP podsystem ustawi Irp->IoStatus.Status na STATUS_SUCCESS, jeśli żądanie zakończy się pomyślnie. W przeciwnym razie >IoStatus.Status zostanie ustawiona na STATUS_INVALID_BUFFER_SIZE lub STATUS_NOT_SUPPORTED, jeśli wywołanie nie powiedzie się.
Wartość zwracana
Wymagania
Minimalny obsługiwany klient |
Windows 8 |
Minimalny obsługiwany serwer |
Windows Server 2012 |
Nagłówek |
Mstcpip.h |
IRQL |
PASSIVE_LEVEL |