Compartilhar via


Função WSCSetProviderInfo (ws2spi.h)

**Observação** Os provedores de serviços em camadas foram preteridos. A partir do Windows 8 e do Windows Server 2012, use a Plataforma de Filtragem do Windows.
 
A função **WSCSetProviderInfo** define o valor dos dados da classe de informações especificada para um LSP (provedor de serviços em camadas).

Sintaxe

int WSCSetProviderInfo(
  [in]  LPGUID                 lpProviderId,
  [in]  WSC_PROVIDER_INFO_TYPE InfoType,
  [in]  PBYTE                  Info,
  [in]  size_t                 InfoSize,
  [in]  DWORD                  Flags,
  [out] LPINT                  lpErrno
);

Parâmetros

[in] lpProviderId

Um ponteiro para um GUID (identificador global exclusivo) para o provedor.

[in] InfoType

A classe de informações a ser definida para essa entrada de protocolo LSP.

[in] Info

Um ponteiro para um buffer que contém os dados da classe de informações a serem definidos para a entrada do protocolo LSP.

[in] InfoSize

O tamanho, em bytes, do buffer apontado pelo parâmetro Info .

[in] Flags

Os sinalizadores usados para modificar o comportamento da chamada de função WSCSetProviderInfo .

[out] lpErrno

Um ponteiro para o código de erro se a função falhar.

Valor retornado

Se nenhum erro ocorrer, WSCSetProviderInfo retornará ERROR_SUCCESS (zero). Caso contrário, ele retornará SOCKET_ERROR e um código de erro específico será retornado no parâmetro lpErrno .

Código do erro Significado
ERROR_CALL_NOT_IMPLEMENTED
A chamada não está implementada. Esse erro será retornado se **ProviderInfoAudit** for especificado no parâmetro InfoType .
WSAEFAULT
Um ou mais argumentos não estão em uma parte válida do espaço de endereço do usuário.
WSAEINVAL
Um ou mais argumentos são inválidos.
WSANO_RECOVERY
Ocorreu um erro não recuperável. Esse erro é retornado sob várias condições, incluindo o seguinte: o usuário não tem os privilégios administrativos necessários para gravar no registro winsock ou ocorreu uma falha ao abrir uma entrada de catálogo winsock.
WSA_NOT_ENOUGH_MEMORY
Memória insuficiente disponível. Esse erro é retornado quando não há memória suficiente para alocar uma nova entrada de catálogo.

Comentários

WSCSetProviderInfo é usado para definir os dados da classe de informações para um provedor de serviços em camadas. Quando o parâmetro InfoType é definido como ProviderInfoLspCategories, em caso de sucesso WSCSetProviderInfo define sinalizadores de categoria LSP apropriados implementados pelo provedor com base no valor passado no parâmetro Info .

O Winsock 2 acomoda protocolos em camadas. Um protocolo em camadas é aquele que implementa apenas funções de comunicação de nível superior, ao mesmo tempo em que depende de uma pilha de transporte subjacente para a troca real de dados com um ponto de extremidade remoto. Um exemplo de um protocolo em camadas ou provedor de serviços em camadas seria uma camada de segurança que adiciona protocolo ao processo de estabelecimento de conexão para executar a autenticação e estabelecer um esquema de criptografia mutuamente acordado. Esse protocolo de segurança geralmente exigiria os serviços de um protocolo de transporte confiável subjacente, como TCP ou SPX. O termo protocolo base refere-se a um protocolo como TCP ou SPX que é capaz de executar comunicações de dados com um ponto de extremidade remoto. O termo protocolo em camadas é usado para descrever um protocolo que não pode ficar sozinho. Uma cadeia de protocolos seria definida como um ou mais protocolos em camadas amarrados e ancorados por um protocolo base. Um protocolo base tem o membro ChainLen da estrutura WSAPROTOCOL_INFO definido como BASE_PROTOCOL que é definido como 1. Um protocolo em camadas tem o membro ChainLen da estrutura WSAPROTOCOL_INFO definido como LAYERED_PROTOCOL que é definido como zero. Uma cadeia de protocolos tem o membro ChainLen da estrutura WSAPROTOCOL_INFO definido como maior que 1.

Durante a inicialização do LSP, o LSP deve fornecer ponteiros para várias funções spi winsock. Essas funções serão chamadas durante o processamento normal pela camada diretamente acima do LSP (outro LSP ou Ws2_32.dll).

Um LSP que implementa um IFS (sistema de arquivos instalável) pode optar seletivamente por fornecer ponteiros para funções que são implementadas por si só ou passar de volta os ponteiros fornecidos pela camada diretamente abaixo do LSP. LSPs não IFS, porque eles fornecem seus próprios identificadores, devem implementar todas as funções spi winsock. Isso ocorre porque cada SPI exigirá que o LSP mapeie todos os identificadores de soquete criados para o identificador de soquete do provedor inferior (outro LSP ou o protocolo base).

No entanto, todos os LSPs executam seu trabalho específico fazendo processamento extra em apenas um subconjunto das funções SPI do Winsock.

É possível definir categorias LSP com base no subconjunto de funções SPI que um LSP implementa e a natureza do processamento extra executado para cada uma dessas funções.

Ao classificar LSPs, bem como classificar aplicativos que usam soquetes Winsock, torna-se possível determinar seletivamente se um LSP deve estar envolvido em um determinado processo em runtime.

No Windows Vista e posterior, um LSP pode ser classificado com base em como ele interage com chamadas e dados do Windows Sockets. Uma categoria LSP é um grupo identificável de comportamentos em um subconjunto de funções SPI winsock. Por exemplo, um filtro de conteúdo HTTP seria categorizado como um inspetor de dados (a categoria LSP_INSPECTOR ). A categoria LSP_INSPECTOR inspecionará, mas não alterará, parâmetros para funções SPI de transferência de dados. Um aplicativo pode consultar a categoria de um LSP e optar por não carregar o LSP com base na categoria LSP e no conjunto de categorias LSP permitidas pelo aplicativo.

A tabela a seguir lista categorias nas quais um LSP pode ser classificado.

Categoria LSP Descrição
**LSP_CRYPTO_COMPRESS** O LSP é um provedor de criptografia ou compactação de dados.
**LSP_FIREWALL** O LSP é um provedor de firewall.
**LSP_LOCAL_CACHE** O LSP é um provedor de cache local.
**LSP_INBOUND_MODIFY** O LSP modifica os dados de entrada.
**LSP_INSPECTOR** O LSP inspeciona ou filtra dados.
**LSP_OUTBOUND_MODIFY** O LSP modifica os dados de saída.
**LSP_PROXY** O LSP atua como um proxy e redireciona pacotes.
**LSP_REDIRECTOR** O LSP é um redirecionador de rede.
**LSP_SYSTEM** O LSP é aceitável para uso em serviços e processos do sistema.
  Um LSP pode pertencer a mais de uma categoria. Por exemplo, o LSP de firewall/segurança pode pertencer às categorias inspetor (**LSP_INSPECTOR**) e firewall (**LSP_FIREWALL**).

Se um LSP não tiver uma categoria definida, ele será considerado na categoria Todos os Outros. Essa categoria LSP não será carregada em serviços ou processos do sistema (por exemplo, lsass, winlogon e muitos processos svchost).

A função WSCSetProviderInfo só pode ser chamada por um usuário conectado como membro do grupo Administradores. Se WSCSetProviderInfo for chamado por um usuário que não seja membro do grupo Administradores, a chamada de função falhará e WSANO_RECOVERY será retornado no parâmetro lpErrno . Essa função também pode falhar devido ao UAC (controle de conta de usuário). Se um aplicativo que contém essa função for executado por um usuário conectado como um membro do grupo Administradores diferente do Administrador interno, essa chamada falhará, a menos que o aplicativo tenha sido marcado no arquivo de manifesto com um requestedExecutionLevel definido como requireAdministrator. Se o aplicativo no Windows Vista ou no Windows Server 2008 não tiver esse arquivo de manifesto, um usuário conectado como membro do grupo Administradores que não seja o Administrador interno deverá executar o aplicativo em um shell aprimorado como administrador interno (administrador RunAs) para que essa função tenha êxito.

**Observação** O recurso TDI foi preterido e será removido em versões futuras do Microsoft Windows. Dependendo de como você usa a TDI, use o WSK (Winsock Kernel) ou o WFP (Windows Filtering Platform). Para obter mais informações sobre WFP e WSK, consulte Plataforma de Filtragem do Windows e Winsock Kernel. Para obter uma entrada de blog do Windows Core Networking sobre WSK e TDI, consulte Introdução ao WSK (Winsock Kernel).
 

Requisitos

   
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho ws2spi.h
Biblioteca Ws2_32.lib
DLL Ws2_32.dll

Confira também

Categorizando aplicativos e provedores de serviços em camadasWSAPROTOCOL_INFOWSCGetApplicationCategoryWSCGetProviderInfoWSCSetApplicationCategoryWSC_PROVIDER_INFO_TYPE