Funzione WSCGetProviderInfo32 (ws2spi.h)
Sintassi
int WSCGetProviderInfo32(
[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 questa voce del protocollo LSP.
[out] Info
Puntatore a un buffer per ricevere i dati della classe di informazioni per la voce del protocollo LSP richiesta. Se questo parametro è NULL, WSCGetProviderInfo32 restituisce un errore e le dimensioni necessarie per questo buffer vengono restituite nel parametro InfoSize .
[in, out] InfoSize
Dimensione, in byte, del buffer a cui punta il parametro Info . Se il parametro Info è NULL, WSCGetProviderInfo32 restituisce un errore e il parametro InfoSize riceverà le dimensioni del buffer richiesto.
[in] Flags
Flag utilizzati per modificare il comportamento della chiamata di funzione WSCGetProviderInfo32 .
[out] lpErrno
Puntatore al codice di errore se la funzione ha esito negativo.
Valore restituito
Se non si verifica alcun errore, WSCGetProviderInfo32 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. | |
Impossibile trovare la voce di protocollo per lpProviderId specificato. | |
Si è verificato un errore irreversibile. Questo errore viene restituito in diverse condizioni, tra cui: 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. | |
Memoria insufficiente disponibile. Questo errore viene restituito quando la memoria non è sufficiente per allocare una nuova voce del catalogo. |
Commenti
WSCGetProviderInfo32 è una versione a 32 bit di WSCGetProviderInfo. In un computer a 64 bit tutte le chiamate non sono specifiche a 32 bit (ad esempio, tutte le funzioni che non terminano in "32") operano sul catalogo nativo a 64 bit. I processi eseguiti in un computer a 64 bit devono usare le chiamate di funzione a 32 bit specifiche per operare su un catalogo a 32 bit e mantenere la compatibilità. Le definizioni e la semantica delle chiamate a 32 bit specifiche sono le stesse delle rispettive controparti native.
WSCGetProviderInfo32 viene usato per recuperare i dati della classe di informazioni per una voce di protocollo in un provider di servizi a 32 bit. Quando il parametro InfoType è impostato su ProviderInfoLspCategories, in WSCGetProviderInfo32 viene restituito con il set di parametri Info con i flag di categoria LSP appropriati implementati da LSP a 32 bit.
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 che è 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. |
Un provider di servizi di configurazione locale può appartenere a più di una categoria. Ad esempio, un LSP firewall/sicurezza può appartenere sia alle categorie inspector (LSP_INSPECTOR) che firewall (LSP_FIREWALL).
Se un LSP non dispone di un set di categorie, viene considerato come 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.
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
Categorizzazione di provider di servizi a livelli e applicazioni