Funzione WSCSetProviderInfo (ws2spi.h)
Sintassi
int WSCSetProviderInfo(
[in] LPGUID lpProviderId,
[in] WSC_PROVIDER_INFO_TYPE InfoType,
[in] PBYTE Info,
[in] size_t InfoSize,
[in] DWORD Flags,
[out] LPINT lpErrno
);
Parametri
[in] lpProviderId
Puntatore a un identificatore univoco globale (GUID) per il provider.
[in] InfoType
Classe di informazioni da impostare per questa voce del protocollo LSP.
[in] Info
Puntatore a un buffer contenente i dati della classe di informazioni da impostare per la voce del protocollo LSP.
[in] InfoSize
Dimensione, in byte, del buffer a cui punta il parametro Info .
[in] Flags
Flag utilizzati per modificare il comportamento della chiamata di funzione WSCSetProviderInfo .
[out] lpErrno
Puntatore al codice di errore se la funzione ha esito negativo.
Valore restituito
Se non si verifica alcun errore, WSCSetProviderInfo restituisce ERROR_SUCCESS (zero). In caso contrario, restituisce SOCKET_ERROR e viene restituito un codice di errore specifico nel parametro lpErrno .
Codice di errore | Significato |
---|---|
|
La chiamata non è implementata. Questo errore viene restituito se **ProviderInfoAudit** è specificato nel parametro InfoType . |
Uno o più argomenti non si trovano in una parte valida dello spazio indirizzi utente. | |
Uno o più argomenti non sono validi. | |
Si è verificato un errore irreversibile. Questo errore viene restituito in diverse condizioni, tra cui quanto segue: l'utente non dispone dei privilegi amministrativi necessari per scrivere nel Registro di sistema Winsock o si è verificato un errore durante l'apertura di una voce del catalogo Winsock. | |
Memoria insufficiente disponibile. Questo errore viene restituito quando la memoria non è sufficiente per allocare una nuova voce del catalogo. |
Commenti
WSCSetProviderInfo viene usato per impostare i dati della classe di informazioni per un provider di servizi a più livelli. Quando il parametro InfoType è impostato su ProviderInfoLspCategories, in success WSCSetProviderInfo imposta i flag di categoria LSP appropriati implementati dal provider in base al valore passato nel parametro Info .
Winsock 2 supporta protocolli a più livelli. Un protocollo a più livelli è uno che implementa solo funzioni di comunicazione di livello superiore, mentre si basa su uno stack di trasporto sottostante per lo scambio effettivo di dati con un endpoint remoto. Un esempio di protocollo a più livelli o di un provider di servizi a più livelli è un livello di sicurezza che aggiunge il protocollo al processo di creazione della connessione per eseguire l'autenticazione e stabilire uno schema di crittografia concordato a vicenda. Un protocollo di sicurezza di questo tipo richiede in genere i servizi di un protocollo di trasporto affidabile sottostante, ad esempio TCP o SPX. Il termine protocollo di base si riferisce a un protocollo, ad esempio TCP o SPX, in grado di eseguire comunicazioni di dati con un endpoint remoto. Il termine protocollo a più livelli viene usato per descrivere un protocollo che non può essere autonomo. Una catena di protocolli verrebbe quindi definita come uno o più protocolli a più livelli collegati e ancorati da un protocollo di base. Un protocollo di base ha il membro ChainLen della struttura WSAPROTOCOL_INFO impostata su BASE_PROTOCOL definito come 1. Un protocollo a più livelli ha il membro ChainLen della struttura WSAPROTOCOL_INFO impostata su LAYERED_PROTOCOL che è definito come zero. Una catena di protocolli ha il membro ChainLen della struttura WSAPROTOCOL_INFO impostata su maggiore di 1.
Durante l'inizializzazione LSP, il provider di servizi di configurazione locale deve fornire puntatori a una serie di funzioni SPI Winsock. Queste funzioni verranno chiamate durante l'elaborazione normale dal livello direttamente sopra l'LSP (un altro LSP o Ws2_32.dll).
Un LSP che implementa un file system installabile (IFS) può scegliere in modo selettivo di fornire puntatori alle funzioni implementate da se stesso o passare indietro i puntatori forniti dal livello direttamente sotto il provider di servizi di configurazione locale. I provider di servizi di configurazione non IFS, poiché forniscono i propri handle, devono implementare tutte le funzioni SPI Winsock. Questo perché ogni spi richiederà al provider LSP di eseguire il mapping di tutti gli handle del socket creati all'handle socket del provider inferiore (un altro LSP o il protocollo di base).
Tuttavia, tutti gli LSP eseguono il proprio lavoro specifico eseguendo un'elaborazione aggiuntiva solo su un subset delle funzioni SPI Winsock.
È possibile definire categorie LSP in base al subset di funzioni SPI implementate da un LSP e dalla natura dell'elaborazione aggiuntiva eseguita per ognuna di queste funzioni.
Classificando gli LSP e classificando le applicazioni che usano socket Winsock, è possibile determinare in modo selettivo se un LSP deve essere coinvolto in un determinato processo in fase di esecuzione.
In Windows Vista e versioni successive un LSP può essere classificato in base alla modalità di interazione con le chiamate e i dati di Windows Sockets. Una categoria LSP è un gruppo identificabile di comportamenti in un subset di funzioni SPI Winsock. Ad esempio, un filtro di contenuto HTTP viene classificato come controllo dati (categoria LSP_INSPECTOR ). La categoria LSP_INSPECTOR controlla, ma non modifica, i parametri per le funzioni SPI di trasferimento dei dati. Un'applicazione può eseguire una query per la categoria di un provider di servizi di configurazione locale e scegliere di non caricare il provider di servizi di rete in base alla categoria LSP e al set di categorie LSP consentite dell'applicazione.
Nella tabella seguente sono elencate le categorie in cui è possibile classificare un provider di servizi di configurazione locale.
Categoria LSP | Descrizione |
---|---|
**LSP_CRYPTO_COMPRESS** | LSP è un provider di crittografia o compressione dei dati. |
**LSP_FIREWALL** | Il provider di servizi di configurazione è un provider di firewall. |
**LSP_LOCAL_CACHE** | LSP è un provider di cache locale. |
**LSP_INBOUND_MODIFY** | Il provider di servizi di configurazione locale modifica i dati in ingresso. |
**LSP_INSPECTOR** | Il provider di servizi di configurazione locale controlla o filtra i dati. |
**LSP_OUTBOUND_MODIFY** | Il provider di servizi di configurazione locale modifica i dati in uscita. |
**LSP_PROXY** | Il provider di servizi di configurazione locale funge da proxy e reindirizza i pacchetti. |
**LSP_REDIRECTOR** | LSP è un redirector di rete. |
**LSP_SYSTEM** | L'LSP è accettabile per l'uso nei servizi e nei processi di sistema. |
Se un LSP non dispone di un set di categorie, viene considerato incluso nella categoria Tutti gli altri. Questa categoria LSP non verrà caricata nei servizi o nei processi di sistema , ad esempio lsass, winlogon e molti processi svchost.
La funzione WSCSetProviderInfo può essere chiamata solo da un utente connesso come membro del gruppo Administrators. Se WSCSetProviderInfo viene chiamato da un utente che non è membro del gruppo Administrators, la chiamata di funzione avrà esito negativo e WSANO_RECOVERY viene restituito nel parametro lpErrno . Questa funzione può anche non riuscire a causa del controllo dell'account utente. Se un'applicazione che contiene questa funzione viene eseguita da un utente connesso come membro del gruppo Administrators diverso dall'amministratore predefinito, questa chiamata avrà esito negativo a meno che l'applicazione non sia stata contrassegnata nel file manifesto con un set requestedExecutionLevel impostato su requireAdministrator. Se l'applicazione in Windows Vista o Windows Server 2008 non dispone di questo file manifesto, un utente connesso come membro del gruppo Administrators diverso dall'amministratore predefinito deve quindi eseguire l'applicazione in una shell avanzata come amministratore predefinito (amministratore RunAs) affinché questa funzione abbia esito positivo.
Requisiti
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2008 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | ws2spi.h |
Libreria | Ws2_32.lib |
DLL | Ws2_32.dll |
Vedi anche
Categorizing Layered Service Providers and ApplicationsWSAPROTOCOL_INFOWSCGetApplicationCategoryWSCGetProviderInfoWSCSetApplicationCategoryWSC_PROVIDER_INFO_TYPE