Funzione WSCGetApplicationCategory (ws2spi.h)

**Nota** I provider di servizi a più livelli sono deprecati. A partire da Windows 8 e Windows Server 2012, usare Windows Filtering Platform.
 
La funzione **WSCGetApplicationCategory** recupera le categorie di provider di servizi a più livelli associate a un'applicazione.

Sintassi

int WSCGetApplicationCategory(
  [in]  LPCWSTR Path,
  [in]  DWORD   PathLength,
  [in]  LPCWSTR Extra,
  [in]  DWORD   ExtraLength,
  [out] DWORD   *pPermittedLspCategories,
  [out] LPINT   lpErrno
);

Parametri

[in] Path

Puntatore a una stringa Unicode che contiene il percorso di caricamento dell'immagine eseguibile per l'applicazione. Questa stringa osserva le regole consuete per la risoluzione del percorso e può contenere stringhe di ambiente incorporate, ad esempio %SystemRoot%.

[in] PathLength

Lunghezza, in caratteri, del parametro Path . Questa lunghezza non include il valore NULL di terminazione.

[in] Extra

Puntatore a una stringa Unicode che rappresenta gli argomenti della riga di comando utilizzati all'avvio dell'applicazione specificata nel parametro Path . Il parametro Extra viene usato per distinguere tra più istanze distinte di un'applicazione quando viene avviata con una riga di comando coerente. Ciò consente di supportare diverse categorie di applicazioni per istanze diverse di Svchost.exe o Rundll32.exe. Se è necessario solo il parametro Path e non sono necessari argomenti della riga di comando per distinguere ulteriormente le istanze di un'applicazione, il parametro Extra deve essere impostato su NULL.

[in] ExtraLength

Lunghezza, in caratteri, del parametro Extra . Questa lunghezza non include il valore NULL di terminazione.

[out] pPermittedLspCategories

Puntatore a un valore DWORD di categorie LSP consentite che sono consentite per tutte le istanze di questa applicazione. L'applicazione viene identificata dalla combinazione dei valori dei parametri Path e Extra .

[out] lpErrno

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

Valore restituito

Se non si verifica alcun errore, WSCGetApplicationCategory 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
WSAEFAULT
Uno o più argomenti non si trovano in una parte valida dello spazio indirizzi utente.
WSAEINVAL
Uno o più argomenti non sono validi.
WSASERVICE_NOT_FOUND
Impossibile trovare il servizio in base ai parametri Path e Extra .

L'errore può essere restituito anche se l'applicazione su cui si sta eseguendo una query non esiste nel Registro di sistema. In questo caso, l'errore indica che l'applicazione non è attualmente categorizzata.

WSANO_RECOVERY
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 accedere al Registro di sistema Winsock oppure si è verificato un errore durante l'apertura di una voce del catalogo Winsock o di una voce id applicazione.

Commenti

WSCGetApplicationCategory viene usato per recuperare i flag di categoria LSP associati a un'istanza dell'applicazione. Le applicazioni possono determinare quali comportamenti LSP sono accettabili all'interno del contesto dell'applicazione. Pertanto, specificando le categorie LSP consentite, un'applicazione può consentire il caricamento solo dei provider di servizi a più livelli che implementano comportamenti accettabili.

Il parametro Extra è obbligatorio quando la riga di comando viene usata per distinguere tra istanze diverse di un'applicazione o di un servizio ospitato nello stesso eseguibile. Ogni istanza può avere esigenze di categorizzazione dell'applicazione diverse. Svchost.exe e Rundll32.exe sono due esempi in cui è necessaria la riga di comando per distinguere tra istanze di processo diverse. Per SvcHost.exe, l'opzione -k <svcinstance> definisce l'istanza del processo.

Per i servizi, l'uso del nome del servizio non è sufficiente, poiché il catalogo Winsock è globale per un determinato processo e un processo può ospitare diversi servizi.

I socket window determinano l'identità di un'applicazione e recuperano le categorie LSP consentite durante la prima chiamata a WSAStartup. Si tratta del set di categorie LSP consentite per la durata dell'istanza dell'applicazione. Le modifiche successive alle categorie LSP consentite per una determinata identità dell'applicazione non verranno prelevate fino all'istanza successiva dell'applicazione. Le categorie LSP consentite non sono modificabili durante la durata dell'istanza dell'applicazione.

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.

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

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 e applicazioni di servizi a più livelli

WSAStartup

WSCGetProviderInfo

WSCGetProviderInfo32

WSCSetApplicationCategory

WSCSetProviderInfo

WSCSetProviderInfo32