Funzione WSASetSocketPeerTargetName (ws2tcpip.h)
La funzione WSASetSocketPeerTargetName viene usata per specificare il nome della destinazione peer (SPN) che corrisponde a un indirizzo IP peer. Questo nome di destinazione deve essere specificato dalle applicazioni client per identificare in modo sicuro il peer che deve essere autenticato.
Sintassi
INT WSAAPI WSASetSocketPeerTargetName(
[in] SOCKET Socket,
[in] const SOCKET_PEER_TARGET_NAME *PeerTargetName,
[in] ULONG PeerTargetNameLen,
[in, optional] LPWSAOVERLAPPED Overlapped,
[in, optional] LPWSAOVERLAPPED_COMPLETION_ROUTINE CompletionRoutine
);
Parametri
[in] Socket
Descrittore che identifica un socket in cui viene assegnato il nome della destinazione peer.
[in] PeerTargetName
Puntatore a una struttura SOCKET_PEER_TARGET_NAME che definisce il nome della destinazione peer.
[in] PeerTargetNameLen
Dimensione, in byte, del parametro PeerTargetName .
[in, optional] Overlapped
Puntatore a una struttura WSAOVERLAPPED . Questo parametro viene ignorato per i socket non sovrapposti.
[in, optional] CompletionRoutine
Puntatore alla routine di completamento chiamata quando l'operazione è stata completata. Questo parametro viene ignorato per i socket non sovrapposti.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è zero. In caso contrario, viene restituito un valore di SOCKET_ERROR e è possibile recuperare un codice di errore specifico chiamando WSAGetLastError.
Di seguito sono elencati alcuni codici di errore possibili.
Codice di errore | Significato |
---|---|
La famiglia di indirizzi specificata non è supportata. | |
Il sistema ha rilevato un puntatore di indirizzo non valido nel tentativo di usare un argomento puntatore di una chiamata. Questo errore viene restituito se il parametro PeerTargetName è un puntatore NULL . | |
È stato passato un parametro non valido. Questo errore viene restituito se il socket passato nel parametro Socket non è stato creato con una famiglia di indirizzi del AF_INET o AF_INET6 e un tipo di socket di SOCK_DGRAM o SOCK_STREAM. Questo errore viene restituito anche per un socket senza connessione se l'indirizzo IP e la porta sono zero nel membro PeerAddress della struttura SOCKET_PEER_TARGET_NAME a cui punta il parametro PeerTargetName . | |
Il socket è connesso. Questa funzione non è consentita con un socket connesso, indipendentemente dal fatto che il socket sia orientato alla connessione o senza connessione. | |
Un buffer passato era troppo piccolo. | |
Il descrittore passato nel parametro Socket non è un socket valido. |
Commenti
La funzione WSASetSocketPeerTargetName fornisce un metodo per specificare il nome di destinazione corrispondente a un'entità di sicurezza peer. Questa funzione deve essere usata da un'applicazione client per identificare il peer che deve essere autenticato. Un'applicazione client deve specificare il nome della destinazione peer per evitare attacchi man-in-the-middle attendibili. Per i socket senza connessione, un'applicazione può chiamare più volte la funzione WSASetSocketPeerTargetName per specificare nomi di destinazione diversi per indirizzi IP peer diversi.
Questa funzione semplifica la chiamare la funzione WSAIoctl con un parametro dwIoControlCode impostato su SIO_SET_PEER_TARGET_NAME.
Per i socket orientati alla connessione, è necessario chiamare la funzione WSASetSocketPeerTargetName prima di WSAConnect. Per i socket senza connessione, questa funzione deve essere chiamata prima di WSAConnect o prima della prima chiamata WSASendTo indirizzata all'indirizzo peer.
Se le condizioni seguenti non vengono soddisfatte, verrà restituito un errore.
- La famiglia di indirizzi del parametro Socket deve essere AF_INET o AF_INET6.
- Il tipo di socket deve essere SOCK_STREAM o SOCK_DGRAM.
Requisiti
Client minimo supportato | Windows Vista [solo app desktop] |
Server minimo supportato | Windows Server 2008 [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | ws2tcpip.h |
Libreria | Fwpuclnt.lib |
DLL | Fwpuclnt.dll |
Vedi anche
Uso delle estensioni Secure Socket