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 |
---|---|
|
Proporciona un servicio sin conexión (datagrama). Si no se establece, el protocolo admite la transferencia de datos orientada a la conexión. |
|
Garantiza que todos los datos enviados lleguen al destino previsto. |
|
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ó. |
|
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. |
|
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. |
|
Admite el cierre de dos fases (correcto). Si no se establece, solo se realizan cierres anulativos. |
|
Admite datos acelerados (urgentes). |
|
Admite la conexión de datos. |
|
Admite la desconexión de datos. |
|
Admite un mecanismo de difusión. |
|
Admite un mecanismo multipunto o multidifusión. Los atributos de plano de datos y control se indican a continuación. |
|
Indica si el plano de control está rooteado (valor = 1) o no raíz (valor = 0). |
|
Indica si el plano de datos está rooteado (valor = 1) o no raíz (valor = 0). |
|
Admite la calidad de las solicitudes de servicio. |
|
El bit está reservado. |
|
El protocolo es unidireccional en la dirección de envío. |
|
El protocolo es unidireccional en la dirección del recv. |
|
Los descriptores de socket devueltos por el proveedor son identificadores del sistema operativo Sistema de archivos instalables (IFS). |
|
La marca MSG_PARTIAL se admite en WSASend y WSASendTo. |
|
El protocolo proporciona compatibilidad con SAN.
Este valor se admite en Windows 7 y Windows Server 2008 R2. |
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 |
---|---|
|
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. |
|
Indica que se trata de la entrada recomendada o usada con más frecuencia para un protocolo que es capaz de implementar varios comportamientos. |
|
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. |
|
Indica que un valor de cero en el protocolo parámetro de socket o WSASocket coincide con esta entrada de protocolo. |
|
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.
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 | Significado |
---|---|
|
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). |
|
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). |
|
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. |
|
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. |
|
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
En windows SDK publicado para Windows Vista y versiones posteriores, este miembro puede ser uno de los valores del
En las versiones del SDK de plataforma para Windows Server 2003 y versiones anteriores, los valores posibles para el miembro iProtocol de
En la tabla siguiente se enumeran los valores comunes del iProtocol, aunque se pueden encontrar muchos otros valores.
iProtocolMaxOffset
Tipo: int
Valor máximo que se puede agregar a
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 |
---|---|
|
El protocolo está orientado a flujos y, por tanto, el concepto de tamaño del mensaje no es relevante. |
|
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. |
|
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
WSAPROTOCOLCHAIN de
de socket de