estrutura WSAPROTOCOL_INFOW (winsock2.h)
A estrutura WSAPROTOCOL_INFOW é usada para armazenar ou recuperar informações completas para um determinado protocolo. O nome do protocolo é representado como uma matriz de caracteres Unicode.
Sintaxe
typedef struct _WSAPROTOCOL_INFOW {
DWORD dwServiceFlags1;
DWORD dwServiceFlags2;
DWORD dwServiceFlags3;
DWORD dwServiceFlags4;
DWORD dwProviderFlags;
GUID ProviderId;
DWORD dwCatalogEntryId;
WSAPROTOCOLCHAIN ProtocolChain;
int iVersion;
int iAddressFamily;
int iMaxSockAddr;
int iMinSockAddr;
int iSocketType;
int iProtocol;
int iProtocolMaxOffset;
int iNetworkByteOrder;
int iSecurityScheme;
DWORD dwMessageSize;
DWORD dwProviderReserved;
WCHAR szProtocol[WSAPROTOCOL_LEN + 1];
} WSAPROTOCOL_INFOW, *LPWSAPROTOCOL_INFOW;
Membros
dwServiceFlags1
Tipo: DWORD
Uma máscara de bits que descreve os serviços fornecidos pelo protocolo. Os valores possíveis para esse membro são definidos no arquivo de cabeçalho Winsock2.h.
Os valores a seguir são possíveis.
Valor | Significado |
---|---|
|
Fornece um serviço sem conexão (datagram). Se não for definido, o protocolo oferecerá suporte à transferência de dados orientada à conexão. |
|
Garante que todos os dados enviados cheguem ao destino pretendido. |
|
Garante que os dados só cheguem na ordem em que foram enviados e que não sejam duplicados. Essa característica não significa necessariamente que os dados são sempre entregues, mas que todos os dados entregues são entregues na ordem em que foram enviados. |
|
Respeita os limites de mensagens, em oposição a um protocolo orientado a fluxos em que não há nenhum conceito de limites de mensagem. |
|
Um protocolo orientado a mensagens, mas os limites da mensagem são ignorados para todos os recibos. Isso é conveniente quando um aplicativo não deseja que o enquadramento de mensagens seja feito pelo protocolo. |
|
Dá suporte ao fechamento em duas fases (normal). Se não estiver definido, somente fechamentos anulativos serão executados. |
|
Dá suporte a dados rápidos (urgentes). |
|
Dá suporte a dados de conexão. |
|
Dá suporte à desconexão de dados. |
|
Dá suporte a um mecanismo de difusão. |
|
Dá suporte a um mecanismo multiponto ou multicast. Os atributos de plano de dados e controle são indicados abaixo. |
|
Indica se o plano de controle está com raiz (valor = 1) ou não desenraizado (valor = 0). |
|
Indica se o plano de dados está com raiz (valor = 1) ou não desenraizado (valor = 0). |
|
Dá suporte à qualidade das solicitações de serviço. |
|
O bit é reservado. |
|
O protocolo é unidirecional na direção de envio. |
|
O protocolo é unidirecional na direção do recv. |
|
Os descritores de soquete retornados pelo provedor são identificadores IFS (Sistema de Arquivos Instalável) do sistema operacional. |
|
O sinalizador MSG_PARTIAL tem suporte em WSASend e WSASendTo. |
|
O protocolo fornece suporte para SAN.
Esse valor tem suporte no Windows 7 e no Windows Server 2008 R2. |
dwServiceFlags2
Tipo: DWORD
Reservado para definições adicionais de atributo de protocolo.
dwServiceFlags3
Tipo: DWORD
Reservado para definições adicionais de atributo de protocolo.
dwServiceFlags4
Tipo: DWORD
Reservado para definições adicionais de atributo de protocolo.
dwProviderFlags
Tipo: DWORD
Um conjunto de sinalizadores que fornece informações sobre como esse protocolo é representado no catálogo do Winsock. Os valores possíveis para esse membro são definidos no arquivo de cabeçalho Winsock2.h.
Os valores a seguir são possíveis.
ProviderId
Tipo: guid
Um GUID (identificador global exclusivo) atribuído ao provedor pelo fornecedor do provedor de serviços. Esse valor é útil para instâncias em que mais de um provedor de serviços é capaz de implementar um protocolo específico. Um aplicativo pode usar o membro ProviderId para distinguir entre provedores que, de outra forma, podem ser indistinguíveis.
dwCatalogEntryId
Tipo: DWORD
Um identificador exclusivo atribuído pelo WS2_32.DLL para cada estrutura WSAPROTOCOL_INFO.
ProtocolChain
Tipo: WSAPROTOCOLCHAIN
A estrutura WSAPROTOCOLCHAIN
iVersion
Tipo: int
O identificador de versão do protocolo.
iAddressFamily
Tipo: int
Um valor a ser passado como o parâmetro da família de endereços para o soquete ou função WSASocket para abrir um soquete para esse protocolo. Esse valor também define exclusivamente a estrutura de um endereço de protocolo para um sockaddr usado pelo protocolo.
No SDK do Windows lançado para Windows Vista e posterior, os valores possíveis para a família de endereços são definidos no arquivo de cabeçalho Ws2def.h. Observe que o arquivo de cabeçalho
Em versões do SDK da Plataforma para Windows Server 2003 e anteriores, os valores possíveis para a família de endereços são definidos no arquivo de cabeçalho Winsock2.h.
Os valores atualmente compatíveis são AF_INET ou AF_INET6, que são os formatos de família de endereços da Internet para IPv4 e IPv6. Outras opções para a família de endereços (AF_NETBIOS para uso com NetBIOS, por exemplo) têm suporte se um provedor de serviços do Windows Sockets para a família de endereços estiver instalado. Observe que os valores para a família de endereços AF_ e as constantes da família de protocolos PF_ são idênticos (por exemplo, AF_INET e PF_INET), portanto, qualquer constante pode ser usada.
A tabela a seguir lista valores comuns para a família de endereços, embora muitos outros valores sejam possíveis.
iMaxSockAddr
Tipo: int
O comprimento máximo do endereço, em bytes.
iMinSockAddr
Tipo: int
O comprimento mínimo do endereço, em bytes.
iSocketType
Tipo: int
Um valor a ser passado como o parâmetro de tipo de soquete para o soquete ou função WSASocket para abrir um soquete para esse protocolo. Os valores possíveis para o tipo de soquete são definidos no arquivo de cabeçalho
A tabela a seguir lista os valores possíveis para o membro do iSocketType
iSocketType | Significado |
---|---|
|
Um tipo de soquete que fornece fluxos de bytes sequenciados, confiáveis, bidirecionais e baseados em conexão com um mecanismo de transmissão de dados OOB. Esse tipo de soquete usa o Protocolo TCP (Protocolo de Controle de Transmissão) para a família de endereços da Internet (AF_INET ou AF_INET6). |
|
Um tipo de soquete que dá suporte a datagrams, que são buffers não confiáveis e sem conexão de um comprimento máximo fixo (normalmente pequeno). Esse tipo de soquete usa o UDP (User Datagram Protocol) para a família de endereços da Internet (AF_INET ou AF_INET6). |
|
Um tipo de soquete que fornece um soquete bruto que permite que um aplicativo manipule o próximo cabeçalho de protocolo de camada superior. Para manipular o cabeçalho IPv4, a opção de soquete IP_HDRINCL deve ser definida no soquete. Para manipular o cabeçalho IPv6, a opção IPV6_HDRINCL soquete deve ser definida no soquete. |
|
Um tipo de soquete que fornece um datagrama de mensagem confiável. Um exemplo desse tipo é a implementação de protocolo multicast (PGM) pragmática no Windows, geralmente conhecida como programação multicast confiável.
Esse valor só terá suporte se o Protocolo Multicast Confiável estiver instalado. |
|
Um tipo de soquete que fornece um pacote pseudo-fluxo com base em datagramas. |
iProtocol
Tipo: int
Um valor a ser passado como o protocolo
No SDK do Windows lançado para Windows Vista e posterior, esse membro pode ser um dos valores do tipo de enumeração IPPROTO definido no arquivo de cabeçalho Ws2def.h. Observe que o arquivo de cabeçalho
Nas versões do SDK da Plataforma para Windows Server 2003 e anteriores, os valores possíveis para o membro do do
A tabela a seguir lista valores comuns para o iProtocol, embora muitos outros valores sejam possíveis.
iProtocolMaxOffset
Tipo: int
O valor máximo que pode ser adicionado a membro iProtocol ao fornecer um valor para o protocolo parâmetro para de soquete e WSASocket. Nem todos os protocolos permitem um intervalo de valores. Quando esse for o caso iProtocolMaxOffset for zero.
iNetworkByteOrder
Tipo: int
Atualmente, esses valores são constantes de manifesto (BIGENDIAN e LITTLEENDIAN) que indicam big-endian ou little-endian com os valores 0 e 1, respectivamente.
iSecurityScheme
Tipo: int
O tipo de esquema de segurança empregado (se houver). Um valor de SECURITY_PROTOCOL_NONE (0) é usado para protocolos que não incorporam provisionamentos de segurança.
dwMessageSize
Tipo: DWORD
O tamanho máximo da mensagem, em bytes, compatível com o protocolo. Esse é o tamanho máximo que pode ser enviado de qualquer uma das interfaces locais do host. Para protocolos que não dão suporte ao enquadramento de mensagens, o máximo real que pode ser enviado para um determinado endereço pode ser menor. Não há nenhuma provisão padrão para determinar o tamanho máximo da mensagem de entrada. Os valores especiais a seguir são definidos.
dwProviderReserved
Tipo: DWORD
Reservado para uso por provedores de serviços.
szProtocol[WSAPROTOCOL_LEN + 1]
Tipo: WCHAR[WSAPROTOCOL_LEN+1]
Uma matriz de caracteres Unicode que contém um nome legível por humanos que identifica o protocolo, por exemplo, "MSAFD Tcpip [UDP/IP]". O número máximo de caracteres permitido é WSAPROTOCOL_LEN, que é definido como 255.
Observações
Nota
O cabeçalho winsock2.h define WSAPROTOCOL_INFO como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows 2000 Professional [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows 2000 Server [somente aplicativos da área de trabalho] |
cabeçalho | winsock2.h |
Consulte também
WSCEnumProtocols