Condividi tramite


codice di controllo SIO_LOOPBACK_FAST_PATH

Importante Il SIO_LOOPBACK_FAST_PATH è deprecato e non è consigliabile usare nel codice.

Il codice di controllo I /O del socket SIO_LOOPBACK_FAST_PATH consente a un'applicazione WSK di configurare un socket TCP per operazioni più veloci sull'interfaccia di loopback.

Per usare questo IOCTL, un'applicazione WSK chiama la funzione WskControlSocket con i parametri seguenti.

Parametro Valore

RequestType

WskIoctl

ControlCode

SIO_LOOPBACK_FAST_PATH

Level

0

InputSize

Dimensione, in byte, del buffer di input.

Inputbuffer

Puntatore al buffer di input. Questo parametro contiene un puntatore a un valore booleano che indica se il socket deve essere configurato per le operazioni di loopback rapido.

OutputSize

0

OutputBuffer

NULL

OutputSizeReturned

NULL

Irp

Puntatore a un IRP.

Un'applicazione può usare il SIO_LOOPBACK_FAST_PATH IOCTL per migliorare le prestazioni delle operazioni di loopback su un socket TCP. Questo IOCTL richiede che lo stack TCP/IP usi un percorso rapido speciale per le operazioni di loopback su questo socket. Il SIO_LOOPBACK_FAST_PATH IOCTL può essere usato solo con socket TCP. Questo IOCTL deve essere usato su entrambi i lati della sessione di loopback. Il percorso rapido del loopback TCP è supportato tramite l'interfaccia di loopback IPv4 o IPv6.

Il socket che prevede di avviare la richiesta di connessione deve applicare questo IOCTL prima di effettuare la richiesta di connessione. Il socket in ascolto della richiesta di connessione deve applicare questo IOCTL prima di accettare la connessione.

Dopo che un'applicazione stabilisce la connessione su un'interfaccia di loopback usando il percorso rapido, tutti i pacchetti per la durata della connessione devono usare il percorso rapido.

L'applicazione di SIO_LOOPBACK_FAST_PATH a un socket che verrà connesso a un percorso di non loopback non avrà alcun effetto.

Questa ottimizzazione del loopback TCP comporta pacchetti che passano attraverso il livello di trasporto (TL) anziché il loopback tradizionale tramite livello di rete. Questa ottimizzazione migliora la latenza per i pacchetti di loopback. Quando un'applicazione acconsente esplicitamente a un'impostazione del livello di connessione per usare il percorso rapido del loopback, tutti i pacchetti seguiranno il percorso di loopback. Per le comunicazioni di loopback, la congestione e l'eliminazione dei pacchetti non sono previste. Il concetto di controllo della congestione e di recapito affidabile in TCP non sarà necessario. Questo, tuttavia, non è vero per il controllo del flusso. Senza il controllo del flusso, il mittente può sovraccaricare il buffer di ricezione, causando un comportamento di loopback TCP errato. Il controllo del flusso nel percorso di loopback ottimizzato per TCP viene gestito inserendo le richieste di invio in una coda. Quando il buffer di ricezione è pieno, lo stack TCP/IP garantisce che gli invii non vengano completati finché la coda non viene gestita, mantenendo il controllo del flusso.

Le connessioni loopback di percorso rapido TCP in presenza di un callout di Windows Filtering Platform (WFP) per i dati di connessione devono accettare il percorso lento non ottimizzato per il loopback. Pertanto, i filtri WFP impediranno l'uso di questo nuovo percorso rapido di loopback. Quando è abilitato un filtro WFP, il sistema userà il percorso lento anche se è stato impostato il SIO_LOOPBACK_FAST_PATH IOCTL. Ciò presuppone che le applicazioni in modalità utente abbiano la funzionalità di sicurezza completa del WFP.

Per impostazione predefinita, SIO_LOOPBACK_FAST_PATH è disabilitato.

Solo un subset delle opzioni socket TCP/IP è supportato quando il SIO_LOOPBACK_FAST_PATH IOCTL viene usato per abilitare il percorso rapido di loopback in un socket. L'elenco delle opzioni supportate include quanto segue:

Un'applicazione WSK deve specificare un puntatore a un IRP e una routine di completamento quando si chiama la funzione WskControlSocket per questo tipo di richiesta. L'applicazione non deve rilasciare il buffer finché il sottosistema WSK non ha completato l'IRP. Al termine dell'IRP, il sottosistema richiama la routine di completamento. Nella routine di completamento, l'applicazione deve controllare lo stato di IRP e rilasciare tutte le risorse allocate in precedenza per la richiesta.

Per altre informazioni sulla gestione di IRP WSK, vedere Using IRPs with Winsock Kernel Functions .For more information about WSK IRP handling, see Using IRPs with Winsock Kernel Functions.

Al termine dell'IRP, il sottosistema imposterà Irp-IoStatus.Status> su STATUS_SUCCESS se la richiesta ha esito positivo. In caso contrario, Irp-IoStatus.Status> verrà impostato su STATUS_INVALID_BUFFER_SIZE o STATUS_NOT_SUPPORTED se la chiamata non riesce.

Valore restituito

Requisiti

Client minimo supportato

Windows 8

Server minimo supportato

Windows Server 2012

Intestazione

Mstcpip.h

IRQL

PASSIVE_LEVEL

Vedi anche

SIO_LOOPBACK_FAST_PATH (SDK)

Uso dei runtime di integrazione con funzioni kernel Winsock