Condividi tramite


Funzione WSCGetProviderInfo (ws2spi.h)

**Nota** I provider di servizi a livelli sono deprecati. A partire da Windows 8 e Windows Server 2012, usare Windows Filtering Platform.
 
La funzione **WSCGetProviderInfo** recupera i dati associati a una classe di informazioni per un provider di servizi a livelli.

Sintassi

int WSCGetProviderInfo(
  [in]      LPGUID                 lpProviderId,
  [in]      WSC_PROVIDER_INFO_TYPE InfoType,
  [out]     PBYTE                  Info,
  [in, out] 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 richiesta per la voce del protocollo LSP.

[out] Info

Puntatore a un buffer per ricevere i dati della classe di informazioni per la voce del protocollo LSP richiesto. Se questo parametro è NULL, WSCGetProviderInfo restituisce un errore e le dimensioni necessarie per questo buffer vengono restituite nel parametro InfoSize .

[in, out] InfoSize

Dimensioni, in byte, del buffer a cui fa riferimento il parametro Info . Se il parametro Info è NULL, WSCGetProviderInfo restituisce un errore e il parametro InfoSize riceverà le dimensioni del buffer richiesto.

[in] Flags

I flag usati per modificare il comportamento della chiamata di funzione WSCGetProviderInfo .

[out] lpErrno

Puntatore al codice di errore se la funzione ha esito negativo.

Valore restituito

Se non si verifica alcun errore, WSCGetProviderInfo 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
ERROR_CALL_NOT_IMPLEMENTED
La chiamata non viene implementata. Questo errore viene restituito se **ProviderInfoAudit** è specificato nel parametro InfoType .
WSAEFAULT
Uno o più argomenti non si trovano in una parte valida dello spazio degli indirizzi utente.
WSAEINVAL
Uno o più argomenti non sono validi.
WSAEINVALIDPROVIDER
Impossibile trovare la voce del protocollo per lpProviderId specificato.
WSANO_RECOVERY
Si è verificato un errore non recuperabile. Questo errore viene restituito in diverse condizioni, tra cui quanto segue: l'utente non dispone dei privilegi amministrativi necessari per accedere al Registro Di sistema Winsock o si è verificato un errore durante l'apertura di una voce del catalogo Winsock.
WSA_NOT_ENOUGH_MEMORY
Memoria insufficiente disponibile. Questo errore viene restituito quando è presente memoria insufficiente per allocare una nuova voce del catalogo.

Commenti

WSCGetProviderInfo viene usato per recuperare i dati della classe di informazioni per un provider di servizi a livelli. Quando il parametro InfoType è impostato su ProviderInfoLspCategories, in WSCGetProviderInfo restituisce con il set di parametri Info con flag di categoria LSP appropriati implementati dal provider di servizi di rete.

Winsock 2 supporta protocolli a livelli. Un protocollo a 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 livelli o un provider di servizi a 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 reciprocamente. Tale protocollo di sicurezza richiede in genere i servizi di un protocollo di trasporto affidabile sottostante, ad esempio TCP o SPX. Il termine protocollo di base fa riferimento a un protocollo come TCP o SPX che è in grado di eseguire comunicazioni dati con un endpoint remoto. Il termine protocollo a 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 livelli incatenati e ancorati da un protocollo di base. Un protocollo di base ha il membro ChainLen della struttura WSAProtocol_Info impostata su BASE_PROTOCOL definita come 1. Un protocollo a livelli ha il membro ChainLen della struttura WSAPROTOCOL_INFO impostata su LAYERED_PROTOCOL definita come zero. Una catena di protocolli ha il membro ChainLen della struttura WSAPROTOCOL_INFO impostata su maggiore di 1.

Durante l'inizializzazione di LSP, il provider di servizi di rete deve fornire puntatori a una serie di funzioni SPI Winsock. Queste funzioni verranno chiamate durante l'elaborazione normale dal livello direttamente sopra il provider di servizi di rete (un altro LSP o Ws2_32.DLL).

Un provider di servizi di rete che implementa un file system installabile (IFS) può scegliere in modo selettivo di fornire puntatori alle funzioni implementate da se stesso oppure passare di nuovo i puntatori forniti dal livello direttamente sotto il provider di servizi di rete. Non-IFS LSP, perché forniscono i propri handle, devono implementare tutte le funzioni WINSock SPI. Questo perché ogni SPI richiederà al provider inferiore 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 i provider di servizi di rete eseguono il loro lavoro specifico eseguendo un'elaborazione aggiuntiva solo in un subset delle funzioni Winsock SPI.

È possibile definire categorie LSP in base al sottoinsieme di funzioni SPI implementa e la natura dell'elaborazione aggiuntiva eseguita per ognuna di queste funzioni.

Classificando gli indirizzi LSP, nonché classificando le applicazioni che usano socket Winsock, diventa possibile determinare in modo selettivo se un provider di servizi di rete 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 Winsock SPI. Ad esempio, un filtro contenuto HTTP verrà classificato come controllo dati (categoria LSP_INSPECTOR). La categoria LSP_INSPECTOR controlla i parametri (ma non modifica) per il trasferimento dei dati delle funzioni SPI. Un'applicazione può eseguire una query per la categoria di un LSP 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 rete.

Categoria LSP Descrizione
**LSP_CRYPTO_COMPRESS** LSP è un provider di crittografia o compressione dei dati.
**LSP_FIREWALL** Il provider di servizi di rete è un provider di firewall.
**LSP_LOCAL_CACHE** Il provider di servizi di rete è un provider di cache locale.
**LSP_INBOUND_MODIFY** Il provider di servizi di rete modifica i dati in ingresso.
**LSP_INSPECTOR** Il provider di servizi di rete controlla o filtra i dati.
**LSP_OUTBOUND_MODIFY** Il provider di servizi di rete modifica i dati in uscita.
**LSP_PROXY** Il provider di servizi di rete funge da proxy e reindirizza i pacchetti.
**LSP_REDIRECTOR** Il provider di servizi di rete è un reindirizzamento di rete.
**LSP_SYSTEM** Il provider di servizi è accettabile per l'uso nei servizi e nei processi di sistema.
 

Un provider di servizi di rete può appartenere a più categorie. Ad esempio, un provider di servizi di sicurezza/firewall può appartenere sia alle categorie di controllo (LSP_INSPECTOR) sia a firewall (LSP_FIREWALL).

Se un provider di servizi di rete non dispone di un set di categorie, viene considerato come incluso nella categoria Tutti gli altri. Questa categoria LSP non verrà caricata nei processi di sistema o nei servizi, ad esempio lsass, winlogon e molti processi svchost.

Requisiti

Requisito Valore
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

Categorizzazione di provider di servizi a livelli e applicazioni

WSAProtocol_Info

WSCGetApplicationCategory

WSCSetApplicationCategory

WSCSetProviderInfo

WSC_PROVIDER_INFO_TYPE