Compartir a través de


estructura WSAPROTOCOL_INFOA (winsock2.h)

La estructura WSAPROTOCOL_INFO se usa para almacenar o recuperar información completa de un protocolo determinado.

Sintaxis

typedef struct _WSAPROTOCOL_INFOA {
  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;
  CHAR             szProtocol[WSAPROTOCOL_LEN + 1];
} WSAPROTOCOL_INFOA, *LPWSAPROTOCOL_INFOA;

Miembros

dwServiceFlags1

Tipo: DWORD de

Máscara de bits que describe los servicios proporcionados por el protocolo. Los valores posibles para este miembro se definen en el archivo de encabezado Winsock2.h.

Los siguientes valores son posibles.

Valor Significado
XP1_CONNECTIONLESS
0x00000001
Proporciona un servicio sin conexión (datagrama). Si no se establece, el protocolo admite la transferencia de datos orientada a la conexión.
XP1_GUARANTEED_DELIVERY
0x00000002
Garantiza que todos los datos enviados lleguen al destino previsto.
XP1_GUARANTEED_ORDER
0x00000004
Garantiza que los datos solo llegan en el orden en que se envió y que no están duplicados. Esta característica no significa necesariamente que los datos siempre se entreguen, pero que los datos que se entregan se entregan en el orden en que se envió.
XP1_MESSAGE_ORIENTED
0x00000008
Respeta los límites del mensaje, en lugar de un protocolo orientado a flujos en el que no hay ningún concepto de límites de mensaje.
XP1_PSEUDO_STREAM
0x00000010
Un protocolo orientado a mensajes, pero los límites del mensaje se omiten para todos los recibos. Esto es conveniente cuando una aplicación no desea que el protocolo realice el marco de mensajes.
XP1_GRACEFUL_CLOSE
0x00000020
Admite el cierre de dos fases (correcto). Si no se establece, solo se realizan cierres anulativos.
XP1_EXPEDITED_DATA
0x00000040
Admite datos acelerados (urgentes).
XP1_CONNECT_DATA
0x00000080
Admite la conexión de datos.
XP1_DISCONNECT_DATA
0x00000100
Admite la desconexión de datos.
XP1_SUPPORT_BROADCAST
0x00000200
Admite un mecanismo de difusión.
XP1_SUPPORT_MULTIPOINT
0x00000400
Admite un mecanismo multipunto o multidifusión. Los atributos de plano de datos y control se indican a continuación.
XP1_MULTIPOINT_CONTROL_PLANE
0x00000800
Indica si el plano de control está rooteado (valor = 1) o no raíz (valor = 0).
XP1_MULTIPOINT_DATA_PLANE
0x00001000
Indica si el plano de datos está rooteado (valor = 1) o no raíz (valor = 0).
XP1_QOS_SUPPORTED
0x00002000
Admite la calidad de las solicitudes de servicio.
XP1_INTERRUPT
El bit está reservado.
XP1_UNI_SEND
0x00008000
El protocolo es unidireccional en la dirección de envío.
XP1_UNI_RECV
0x00010000
El protocolo es unidireccional en la dirección del recv.
XP1_IFS_HANDLES
0x00020000
Los descriptores de socket devueltos por el proveedor son identificadores del sistema operativo Sistema de archivos instalables (IFS).
XP1_PARTIAL_MESSAGE
0x00040000
La marca MSG_PARTIAL se admite en WSASend y WSASendTo.
XP1_SAN_SUPPORT_SDP
0x00080000
El protocolo proporciona compatibilidad con SAN.

Este valor se admite en Windows 7 y Windows Server 2008 R2.

 
Nota solo se puede establecer uno de XP1_UNI_SEND o XP1_UNI_RECV valores. Si un protocolo puede ser unidireccional en cualquier dirección, se deben usar dos estructuras WSAPROTOCOL_INFOW. Cuando no se establece ninguno de los bits, el protocolo se considera bidireccional.
 

dwServiceFlags2

Tipo: DWORD de

Reservado para definiciones adicionales de atributos de protocolo.

dwServiceFlags3

Tipo: DWORD de

Reservado para definiciones adicionales de atributos de protocolo.

dwServiceFlags4

Tipo: DWORD de

Reservado para definiciones adicionales de atributos de protocolo.

dwProviderFlags

Tipo: DWORD de

Conjunto de marcas que proporciona información sobre cómo se representa este protocolo en el catálogo winsock. Los valores posibles para este miembro se definen en el archivo de encabezado Winsock2.h.

Los siguientes valores de marca son posibles.

Valor Significado
PFL_MULTIPLE_PROTO_ENTRIES
0x00000001
Indica que se trata de una de dos o más entradas para un único protocolo (de un proveedor determinado) que es capaz de implementar varios comportamientos. Un ejemplo de esto es SPX que, en el lado receptor, puede comportarse como un protocolo orientado a mensajes o orientado a secuencias.
PFL_RECOMMENDED_PROTO_ENTRY
0x00000002
Indica que se trata de la entrada recomendada o usada con más frecuencia para un protocolo que es capaz de implementar varios comportamientos.
PFL_HIDDEN
0x00000004
Establecido por un proveedor para indicar al Ws2_32.dll que este protocolo no debe devolverse en el búfer de resultados generado por WSAEnumProtocols. Obviamente, una aplicación de Windows Sockets 2 nunca debería ver una entrada con este conjunto de bits.
PFL_MATCHES_PROTOCOL_ZERO
0x00000008
Indica que un valor de cero en el protocolo parámetro de socket o WSASocket coincide con esta entrada de protocolo.
PFL_NETWORKDIRECT_PROVIDER
0x00000010
Establezca un proveedor para indicar la compatibilidad con el acceso directo de red.

Este valor se admite en Windows 7 y Windows Server 2008 R2.

ProviderId

Tipo: GUID de

Identificador único global (GUID) asignado al proveedor por el proveedor de servicios. Este valor es útil para instancias en las que más de un proveedor de servicios puede implementar un protocolo determinado. Una aplicación puede usar el providerId miembro para distinguir entre proveedores que, de lo contrario, podrían ser indistinguibles.

dwCatalogEntryId

Tipo: DWORD de

Identificador único asignado por el WS2_32.DLL para cada estructura de WSAPROTOCOL_INFO.

ProtocolChain

Tipo: WSAPROTOCOLCHAIN de

Estructura WSAPROTOCOLCHAIN asociada al protocolo. Si la longitud de la cadena es 0, esta entrada WSAPROTOCOL_INFO representa un protocolo en capas que tiene Windows Sockets 2 SPI como sus bordes superior e inferior. Si la longitud de la cadena es igual a 1, esta entrada representa un protocolo base cuyo identificador de entrada de catálogo está en el dwCatalogEntryId miembro de la estructura WSAPROTOCOL_INFO. Si la longitud de la cadena es mayor que 1, esta entrada representa una cadena de protocolo que consta de uno o más protocolos en capas sobre un protocolo base. Los identificadores de entrada de catálogo correspondientes se encuentran en la matriz ProtocolChain.ChainEntries empezando por el protocolo en capas en la parte superior (el elemento cero de la matriz ProtocolChain.ChainEntries) y finalizando con el protocolo base. Consulte la especificación de interfaz del proveedor de servicios de Windows Sockets 2 para obtener más información sobre las cadenas de protocolo.

iVersion

Tipo: int

Identificador de versión del protocolo.

iAddressFamily

Tipo: int

Valor que se va a pasar como parámetro de familia de direcciones al socket o función WSASocket para abrir un socket para este protocolo. Este valor también define de forma única la estructura de una dirección de protocolo para un usado por el protocolo.

En windows SDK publicado para Windows Vista y versiones posteriores, los valores posibles para la familia de direcciones se definen en el archivo de encabezado Ws2def.h. Tenga en cuenta que el archivo de encabezado de Ws2def.h se incluye automáticamente en Winsock2.hy nunca se debe usar directamente.

En las versiones del SDK de plataforma para Windows Server 2003 y versiones anteriores, los valores posibles para la familia de direcciones se definen en el archivo de encabezado Winsock2.h.

Los valores admitidos actualmente son AF_INET o AF_INET6, que son los formatos de familia de direcciones de Internet para IPv4 e IPv6. Se admiten otras opciones para la familia de direcciones (AF_NETBIOS para su uso con NetBIOS, por ejemplo) si se instala un proveedor de servicios de Windows Sockets para la familia de direcciones. Tenga en cuenta que los valores de la familia de direcciones AF_ y las constantes de familia de protocolos PF_ son idénticos (por ejemplo, AF_INET y PF_INET), por lo que se puede usar cualquier constante.

En la tabla siguiente se enumeran los valores comunes de la familia de direcciones, aunque muchos otros valores son posibles.

iAddressFamily Significado
AF_INET
2
Familia de direcciones del Protocolo de Internet versión 4 (IPv4).
AF_IPX
6
Familia de direcciones IPX/SPX. Esta familia de direcciones solo se admite si está instalado el protocolo de transporte compatible con NWLink IPX/SPX NetBIOS.

Esta familia de direcciones no se admite en Windows Vista y versiones posteriores.

AF_APPLETALK
16
La familia de direcciones de AppleTalk. Esta familia de direcciones solo se admite si está instalado el protocolo AppleTalk.

Esta familia de direcciones no se admite en Windows Vista y versiones posteriores.

AF_NETBIOS
17
Familia de direcciones NetBIOS. Esta familia de direcciones solo se admite si está instalado el proveedor de Windows Sockets para NetBIOS.

El proveedor de Windows Sockets para NetBIOS es compatible con versiones de 32 bits de Windows. Este proveedor se instala de forma predeterminada en versiones de 32 bits de Windows.

El proveedor de Windows Sockets para NetBIOS no se admite en versiones de 64 bits de windows, incluidas Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 o Windows XP.

El proveedor de Windows Sockets para NetBIOS solo admite sockets donde el tipo parámetro se establece en SOCK_DGRAM.

El proveedor de Windows Sockets para NetBIOS no está directamente relacionado con la interfaz de programación netBIOS de . La interfaz de programación NetBIOS no se admite en Windows Vista, Windows Server 2008 y versiones posteriores.

AF_INET6
23
Familia de direcciones del Protocolo de Internet versión 6 (IPv6).
AF_IRDA
26
Familia de direcciones de la Asociación de datos infrarrojos (IrDA).

Esta familia de direcciones solo se admite si el equipo tiene instalado un puerto infrarrojo y un controlador.

AF_BTH
32
La familia de direcciones Bluetooth.

Esta familia de direcciones es compatible con Windows XP con SP2 o posterior si el equipo tiene instalado un adaptador y controlador Bluetooth.

iMaxSockAddr

Tipo: int

Longitud máxima de la dirección, en bytes.

iMinSockAddr

Tipo: int

Longitud mínima de la dirección, en bytes.

iSocketType

Tipo: int

Valor que se va a pasar como parámetro de tipo de socket al socket o función WSASocket para abrir un socket para este protocolo. Los valores posibles para el tipo de socket se definen en el archivo de encabezado winsock2.h.

En la tabla siguiente se enumeran los valores posibles para el miembro iSocketType compatible con Windows Sockets 2:

iSocketType Significado
SOCK_STREAM
1
Tipo de socket que proporciona secuencias de bytes secuenciadas, confiables, bidireccionales y basadas en conexiones con un mecanismo de transmisión de datos OOB. Este tipo de socket usa el Protocolo de control de transmisión (TCP) para la familia de direcciones de Internet (AF_INET o AF_INET6).
SOCK_DGRAM
2
Tipo de socket que admite datagramas, que son a menos que los búferes no confiables de una longitud máxima fija (normalmente pequeña). Este tipo de socket usa el Protocolo de datagramas de usuario (UDP) para la familia de direcciones de Internet (AF_INET o AF_INET6).
SOCK_RAW
3
Tipo de socket que proporciona un socket sin formato que permite a una aplicación manipular el siguiente encabezado de protocolo de capa superior. Para manipular el encabezado IPv4, la opción de socket IP_HDRINCL debe establecerse en el socket. Para manipular el encabezado IPv6, la opción de socket IPV6_HDRINCL debe establecerse en el socket.
SOCK_RDM
4
Tipo de socket que proporciona un datagrama de mensajes confiable. Un ejemplo de este tipo es la implementación pragmática del protocolo de multidifusión general (PGM) en Windows, a menudo denominada programación confiable de multidifusión.

Este valor solo se admite si está instalado el protocolo de multidifusión confiable.

SOCK_SEQPACKET
5
Tipo de socket que proporciona un paquete pseudo-stream basado en datagramas.

iProtocol

Tipo: int

Valor que se va a pasar como parámetro del protocolo al de socket de o función WSASocket para abrir un socket para este protocolo. Las posibles opciones para el miembro de iProtocol son específicas de la familia de direcciones y el tipo de socket especificado.

En windows SDK publicado para Windows Vista y versiones posteriores, este miembro puede ser uno de los valores del ipPROTO tipo de enumeración definido en el archivo de encabezado de Ws2def.h. Tenga en cuenta que el archivo de encabezado de Ws2def.h se incluye automáticamente en Winsock2.hy nunca se debe usar directamente.

En las versiones del SDK de plataforma para Windows Server 2003 y versiones anteriores, los valores posibles para el miembro iProtocol de se definen en el Winsock2.h y Wsrm.h archivos de encabezado.

En la tabla siguiente se enumeran los valores comunes del iProtocol, aunque se pueden encontrar muchos otros valores.

iProtocol Significado
IPPROTO_ICMP
1
Protocolo de mensajes de control de Internet (ICMP).

Este valor es compatible con Windows XP y versiones posteriores.

IPPROTO_IGMP
2
El Protocolo de administración de grupos de Internet (IGMP).

Este valor es compatible con Windows XP y versiones posteriores.

BTHPROTO_RFCOMM
3
El protocolo Bluetooth Radio Frequency Communications (Bluetooth RFCOMM).

Este valor se admite en Windows XP con SP2 o posterior.

IPPROTO_TCP
6
Protocolo de control de transmisión (TCP).
IPPROTO_UDP
17
Protocolo de datagramas de usuario (UDP).
IPPROTO_ICMPV6
58
Protocolo de mensajes de control de Internet versión 6 (ICMPv6).

Este valor es compatible con Windows XP y versiones posteriores.

IPPROTO_RM
113
Protocolo PGM para multidifusión confiable. En windows SDK publicado para Windows Vista y versiones posteriores, este protocolo también se denomina IPPROTO_PGM.

Este valor solo se admite si está instalado el protocolo de multidifusión confiable.

iProtocolMaxOffset

Tipo: int

Valor máximo que se puede agregar a iProtocol al proporcionar un valor para el parámetro del protocolo de para socket o función WSASocket. No todos los protocolos permiten un intervalo de valores. Cuando este es el caso iProtocolMaxOffset es cero.

iNetworkByteOrder

Tipo: int

Actualmente, estos valores son constantes de manifiesto (BIGENDIAN y LITTLEENDIAN) que indican big-endian o little-endian con los valores 0 y 1 respectivamente.

iSecurityScheme

Tipo: int

Tipo de esquema de seguridad empleado (si existe). Se usa un valor de SECURITY_PROTOCOL_NONE (0) para los protocolos que no incorporan disposiciones de seguridad.

dwMessageSize

Tipo: DWORD de

Tamaño máximo de mensaje, en bytes, admitido por el protocolo. Este es el tamaño máximo que se puede enviar desde cualquiera de las interfaces locales del host. En el caso de los protocolos que no admiten el marco de mensajes, el máximo real que se puede enviar a una dirección determinada puede ser menor. No hay ninguna aprovisionamiento estándar para determinar el tamaño máximo del mensaje entrante. Se definen los siguientes valores especiales.

Valor Significado
0
El protocolo está orientado a flujos y, por tanto, el concepto de tamaño del mensaje no es relevante.
0x1
El tamaño máximo de mensaje de salida (envío) depende de la MTU de red subyacente (unidad de transmisión de tamaño máximo) y, por tanto, no se puede conocer hasta después de enlazar un socket. Las aplicaciones deben usar getockopt para recuperar el valor de SO_MAX_MSG_SIZE después de que el socket se haya enlazado a una dirección local.
0xFFFFFFFF
El protocolo está orientado a mensajes, pero no hay ningún límite máximo para el tamaño de los mensajes que se pueden transmitir.

dwProviderReserved

Tipo: DWORD de

Reservado para su uso por parte de los proveedores de servicios.

szProtocol[WSAPROTOCOL_LEN + 1]

Tipo: TCHAR[WSAPROTOCOL_LEN+1]

Matriz de caracteres que contiene un nombre legible que identifica el protocolo, por ejemplo, "MSAFD Tcpip [UDP/IP]". El número máximo de caracteres permitido es WSAPROTOCOL_LEN, que se define como 255.

Observaciones

Nota

El encabezado winsock2.h define WSAPROTOCOL_INFO como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
encabezado de winsock2.h

Consulte también

WSAEnumProtocols

WSAPROTOCOLCHAIN de

WSAPROTOCOL_INFOW

WSASend

WSASendTo

WSASocket

WSCInstallProvider

WSCInstallProvider64_32

WSCUpdateProvider

WSCUpdateProvider32

getockopt

de socket de