Funzione WSAProviderConfigChange (winsock2.h)

La funzione WSAProviderConfigChange invia una notifica all'applicazione quando viene modificata la configurazione del provider.

Sintassi

INT WSAAPI WSAProviderConfigChange(
  [in, out] LPHANDLE                           lpNotificationHandle,
  [in]      LPWSAOVERLAPPED                    lpOverlapped,
  [in]      LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);

Parametri

[in, out] lpNotificationHandle

Puntatore all'handle di notifica. Se l'handle di notifica è impostato su NULL (il valore handle non il puntatore stesso), questa funzione restituisce un handle di notifica nella posizione a cui punta lpNotificationHandle.

[in] lpOverlapped

Puntatore a una struttura WSAOVERLAPPED .

[in] lpCompletionRoutine

Tipo: _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE

Puntatore alla routine di completamento chiamata quando viene ricevuta la notifica di modifica del provider.

Valore restituito

Se non si verifica alcun errore, WSAProviderConfigChange restituisce 0. In caso contrario, viene restituito un valore di SOCKET_ERROR e un codice di errore specifico può essere recuperato chiamando WSAGetLastError. Il codice di errore WSA_IO_PENDING indica che l'operazione sovrapposta è stata avviata correttamente e che il completamento (e quindi l'evento di modifica) verrà indicato in un secondo momento.

Codice di errore Significato
WSANOTINITIALISED
Prima di usare questa funzione, è necessario che venga eseguita una chiamata WSAStartup riuscita.
WSAENETDOWN
Il sottosistema di rete non è riuscito.
WSA_NOT_ENOUGH_MEMORY
Memoria disponibile insufficiente per completare l'operazione.
WSA_INVALID_HANDLE
Il valore puntato dal parametro lpNotificationHandle non è un handle di notifica valido.
WSAEOPNOTSUPP
L'ambiente del sistema operativo corrente non supporta l'installazione o la rimozione del provider senza riavvio.

Commenti

La funzione WSAProviderConfigChange notifica all'applicazione di installazione o rimozione del provider (sia trasporto che spazio dei nomi) in ambienti operativi Windows che supportano tale modifica di configurazione senza richiedere un riavvio. Quando viene chiamato per la prima volta (il parametro lpNotificationHandle punta all'handle NULL ), questa funzione viene completata immediatamente e restituisce l'handle di notifica nella posizione a cui punta lpNotificationHandle che può essere usato nelle chiamate successive per ricevere notifiche di installazione e rimozione del provider. La seconda e tutte le chiamate successive vengono completate solo quando le informazioni sul provider cambiano dal momento in cui è stata effettuata la chiamata È previsto (ma non obbligatorio) che l'applicazione usi operazioni di I/O sovrapposte al secondo e successive chiamate a WSAProviderConfigChange, nel qual caso la chiamata restituisce immediatamente e l'applicazione riceverà una notifica delle modifiche alla configurazione del provider usando il meccanismo di completamento scelto tramite parametri di completamento sovrapposti specificati.

L'handle di notifica restituito da WSAProviderConfigChange è simile a qualsiasi normale handle del sistema operativo che deve essere chiuso (quando non è più necessario) usando la chiamata di Windows CloseHandle .

È possibile usare la sequenza di azioni seguente per garantire che l'applicazione disponga sempre di informazioni di configurazione del protocollo correnti:

  • Chiamare WSAProviderConfigChange
  • Chiamare WSAEnumProtocols e/o WSAEnumNameSpaceProviders
  • Ogni volta che WSAProviderConfigChange notifica all'applicazione la modifica della configurazione del provider (tramite il blocco o l'I/O sovrapposto), l'intera sequenza di azioni deve essere ripetuta.
Windows 8.1 e Windows Server 2012 R2: questa funzione è supportata per le app di Windows Store in Windows 8.1, Windows Server 2012 R2 e versioni successive.

Requisiti

Requisito Valore
Client minimo supportato Windows 8.1, Windows Vista [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione winsock2.h
Libreria Ws2_32.lib
DLL Ws2_32.dll

Vedi anche

Closehandle

WSAEnumNameSpaceProviders

WSAEnumProtocols

Funzioni Winsock

Informazioni di riferimento su Winsock