struttura WSAPROTOCOL_INFOA (winsock2.h)
La struttura WSAPROTOCOL_INFO viene utilizzata per archiviare o recuperare informazioni complete per un determinato protocollo.
Sintassi
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;
Membri
dwServiceFlags1
Tipo: DWORD
Maschera di bit che descrive i servizi forniti dal protocollo. I valori possibili per questo membro vengono definiti nel file di intestazione Winsock2.h.
Sono possibili i valori seguenti.
Valore | Significato |
---|---|
|
Fornisce un servizio senza connessione (datagram). Se non è impostato, il protocollo supporta il trasferimento dei dati orientato alla connessione. |
|
Garantisce che tutti i dati inviati raggiungano la destinazione prevista. |
|
Garantisce che i dati arrivino solo nell'ordine in cui sono stati inviati e che non siano duplicati. Questa caratteristica non significa necessariamente che i dati vengano sempre recapitati, ma che tutti i dati recapitati vengano recapitati nell'ordine in cui sono stati inviati. |
|
Rispetta i limiti dei messaggi, invece di un protocollo orientato al flusso in cui non esiste alcun concetto di limiti dei messaggi. |
|
Un protocollo orientato ai messaggi, ma i limiti dei messaggi vengono ignorati per tutte le ricevute. Ciò è utile quando un'applicazione non desidera che il frame dei messaggi venga eseguito dal protocollo. |
|
Supporta la chiusura in due fasi (normale). Se non è impostato, vengono eseguite solo le chiusura interrotte. |
|
Supporta i dati accelerati (urgenti). |
|
Supporta i dati di connessione. |
|
Supporta i dati di disconnessione. |
|
Supporta un meccanismo di trasmissione. |
|
Supporta un meccanismo multipoint o multicast. Gli attributi del piano dati e di controllo sono indicati di seguito. |
|
Indica se il piano di controllo è rooted (valore = 1) o nonrooted (valore = 0). |
|
Indica se il piano dati è rooted (valore = 1) o nonrooted (valore = 0). |
|
Supporta la qualità delle richieste di servizio. |
|
Il bit è riservato. |
|
Il protocollo è unidirezionale nella direzione di invio. |
|
Il protocollo è unidirezionale nella direzione recv. |
|
I descrittori socket restituiti dal provider sono handle IFS (Installable File System) del sistema operativo. |
|
Il flag MSG_PARTIAL è supportato in WSASend e WSASendTo. |
|
Il protocollo fornisce il supporto per SAN.
Questo valore è supportato in Windows 7 e Windows Server 2008 R2. |
dwServiceFlags2
Tipo: DWORD
Riservato per definizioni di attributi di protocollo aggiuntive.
dwServiceFlags3
Tipo: DWORD
Riservato per definizioni di attributi di protocollo aggiuntive.
dwServiceFlags4
Tipo: DWORD
Riservato per definizioni di attributi di protocollo aggiuntive.
dwProviderFlags
Tipo: DWORD
Set di flag che fornisce informazioni sul modo in cui questo protocollo è rappresentato nel catalogo Winsock. I valori possibili per questo membro vengono definiti nel file di intestazione Winsock2.h.
Sono possibili i valori del flag seguenti.
Valore | Significato |
---|---|
|
Indica che si tratta di una delle due o più voci per un singolo protocollo (da un determinato provider) in grado di implementare più comportamenti. Un esempio è SPX che, sul lato ricevente, può comportarsi come un protocollo orientato ai messaggi o orientato ai flussi. |
|
Indica che si tratta della voce consigliata o usata più di frequente per un protocollo in grado di implementare più comportamenti. |
|
Impostato da un provider per indicare al Ws2_32.dll che questo protocollo non deve essere restituito nel buffer dei risultati generato da WSAEnumProtocols. Ovviamente, un'applicazione Windows Sockets 2 non dovrebbe mai vedere una voce con questo set di bit. |
|
Indica che un valore pari a zero nel parametro del protocollo |
|
Impostato da un provider per indicare il supporto per l'accesso diretto alla rete.
Questo valore è supportato in Windows 7 e Windows Server 2008 R2. |
ProviderId
Tipo: GUID
Identificatore univoco globale (GUID) assegnato al provider dal fornitore del provider di servizi. Questo valore è utile per le istanze in cui più provider di servizi sono in grado di implementare un protocollo specifico. Un'applicazione può usare il membro ProviderId
dwCatalogEntryId
Tipo: DWORD
Identificatore univoco assegnato dal WS2_32.DLL per ogni struttura WSAPROTOCOL_INFO.
ProtocolChain
Tipo: WSAPROTOCOLCHAIN
Struttura WSAPROTOCOLCHAIN
iVersion
Tipo: int
Identificatore della versione del protocollo.
iAddressFamily
Tipo: int
Valore da passare come parametro della famiglia di indirizzi al socket o funzione WSASocket per aprire un socket per questo protocollo. Questo valore definisce anche in modo univoco la struttura di un indirizzo di protocollo per un sockaddr usato dal protocollo.
In Windows SDK rilasciato per Windows Vista e versioni successive, i valori possibili per la famiglia di indirizzi sono definiti nel file di intestazione Ws2def.h. Si noti che il file di intestazione
Nelle versioni di Platform SDK per Windows Server 2003 e versioni precedenti, i valori possibili per la famiglia di indirizzi sono definiti nel file di intestazione
I valori attualmente supportati sono AF_INET o AF_INET6, ovvero i formati della famiglia di indirizzi Internet per IPv4 e IPv6. Altre opzioni per la famiglia di indirizzi (AF_NETBIOS per l'uso con NetBIOS, ad esempio) sono supportate se è installato un provider di servizi Windows Sockets per la famiglia di indirizzi. Si noti che i valori per la famiglia di indirizzi AF_ e le costanti della famiglia di protocolli di PF_ sono identiche (ad esempio, AF_INET e PF_INET), in modo che sia possibile usare entrambe le costanti.
La tabella seguente elenca i valori comuni per la famiglia di indirizzi, anche se sono possibili molti altri valori.
iAddressFamily | Significato |
---|---|
|
Famiglia di indirizzi IPv4 (Internet Protocol versione 4). |
|
Famiglia di indirizzi IPX/SPX. Questa famiglia di indirizzi è supportata solo se è installato il protocollo di trasporto compatibile con NWLink IPX/SPX NetBIOS.
Questa famiglia di indirizzi non è supportata in Windows Vista e versioni successive. |
|
Famiglia di indirizzi AppleTalk. Questa famiglia di indirizzi è supportata solo se è installato il protocollo AppleTalk.
Questa famiglia di indirizzi non è supportata in Windows Vista e versioni successive. |
|
Famiglia di indirizzi NetBIOS. Questa famiglia di indirizzi è supportata solo se è installato il provider Windows Sockets per NetBIOS.
Il provider Windows Sockets per NetBIOS è supportato nelle versioni a 32 bit di Windows. Questo provider viene installato per impostazione predefinita nelle versioni a 32 bit di Windows. Il provider Windows Sockets per NetBIOS non è supportato nelle versioni a 64 bit di windows, tra cui Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 o Windows XP. Il provider Windows Sockets per NetBIOS supporta solo i socket in cui il tipo parametro è impostato su SOCK_DGRAM. Il provider Windows Sockets per NetBIOS non è direttamente correlato all'interfaccia di programmazione NetBIOS. L'interfaccia di programmazione NetBIOS non è supportata in Windows Vista, Windows Server 2008 e versioni successive. |
|
Famiglia di indirizzi IPv6 (Internet Protocol versione 6). |
|
Famiglia di indirizzi IrDA (Infrared Data Association).
Questa famiglia di indirizzi è supportata solo se nel computer è installata una porta a infrarossi e un driver. |
|
Famiglia di indirizzi Bluetooth.
Questa famiglia di indirizzi è supportata in Windows XP con SP2 o versione successiva se nel computer è installata una scheda Bluetooth e un driver. |
iMaxSockAddr
Tipo: int
Lunghezza massima dell'indirizzo, espressa in byte.
iMinSockAddr
Tipo: int
Lunghezza minima dell'indirizzo, espressa in byte.
iSocketType
Tipo: int
Valore da passare come parametro di tipo socket al socket o funzione di WSASocket per aprire un socket per questo protocollo. I valori possibili per il tipo di socket sono definiti nel file di intestazione Winsock2. h.
La tabella seguente elenca i valori possibili per il membro iSocketType
iSocketType | Significato |
---|---|
|
Tipo di socket che fornisce flussi di byte sequenziati, affidabili, bidirezionali e basati sulla connessione con un meccanismo di trasmissione dei dati OOB. Questo tipo di socket usa il protocollo TCP (Transmission Control Protocol) per la famiglia di indirizzi Internet (AF_INET o AF_INET6). |
|
Tipo di socket che supporta i datagrammi, che non sono collegati, buffer non affidabili di lunghezza massima fissa (in genere piccola). Questo tipo di socket usa il protocollo UDP (User Datagram Protocol) per la famiglia di indirizzi Internet (AF_INET o AF_INET6). |
|
Tipo di socket che fornisce un socket non elaborato che consente a un'applicazione di modificare l'intestazione del protocollo superiore successiva. Per modificare l'intestazione IPv4, è necessario impostare l'opzione socket IP_HDRINCL sul socket. Per modificare l'intestazione IPv6, è necessario impostare l'opzione socket IPV6_HDRINCL sul socket. |
|
Tipo di socket che fornisce un datagramma di messaggi affidabile. Un esempio di questo tipo è l'implementazione del protocollo multicast pgm (Pragmatic General Multicast) in Windows, spesso definita programmazione multicast affidabile.
Questo valore è supportato solo se è installato il protocollo Reliable Multicast. |
|
Tipo di socket che fornisce un pacchetto pseudo-flusso basato su datagrammi. |
iProtocol
Tipo: int
Valore da passare come parametro del protocollo
In Windows SDK rilasciato per Windows Vista e versioni successive, questo membro può essere uno dei valori del tipo di enumerazione IPPROTO definito nel file di intestazione Ws2def. h. Si noti che il file di intestazione
Nelle versioni di Platform SDK per Windows Server 2003 e versioni precedenti, i valori possibili per il membro iProtocol
La tabella seguente elenca i valori comuni per i iProtocol
iProtocolMaxOffset
Tipo: int
Valore massimo che può essere aggiunto a
iNetworkByteOrder
Tipo: int
Attualmente questi valori sono costanti manifesto (BIGENDIAN e LITTLEENDIAN) che indicano rispettivamente big-endian o little-endian con i valori 0 e 1.
iSecurityScheme
Tipo: int
Tipo di schema di sicurezza utilizzato (se presente). Il valore SECURITY_PROTOCOL_NONE (0) viene usato per i protocolli che non includono le disposizioni di sicurezza.
dwMessageSize
Tipo: DWORD
Dimensione massima del messaggio, in byte, supportata dal protocollo. Si tratta delle dimensioni massime che è possibile inviare da qualsiasi interfaccia locale dell'host. Per i protocolli che non supportano il frame dei messaggi, il valore massimo effettivo che può essere inviato a un determinato indirizzo può essere minore. Non è previsto alcun provisioning standard per determinare la dimensione massima dei messaggi in ingresso. Vengono definiti i valori speciali seguenti.
dwProviderReserved
Tipo: DWORD
Riservato per l'uso da parte dei provider di servizi.
szProtocol[WSAPROTOCOL_LEN + 1]
Tipo: TCHAR[WSAPROTOCOL_LEN+1]
Matrice di caratteri che contiene un nome leggibile che identifica il protocollo, ad esempio "MSAFD Tcpip [UDP/IP]". Il numero massimo di caratteri consentiti è WSAPROTOCOL_LEN, definito come 255.
Osservazioni
Nota
L'intestazione winsock2.h definisce WSAPROTOCOL_INFO come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 2000 Professional [solo app desktop] |
server minimo supportato | Windows 2000 Server [solo app desktop] |
intestazione |
winsock2.h |
Vedere anche
WSAEnumProtocols