Condividi tramite


Funzione NotifyTeredoPortChange (netioapi.h)

La funzione NotifyTeredoPortChange registra per ricevere una notifica per le modifiche apportate al numero di porta UDP utilizzato dal client Teredo per la porta del servizio Teredo in un computer locale.

Sintassi

IPHLPAPI_DLL_LINKAGE _NETIOAPI_SUCCESS_ NETIOAPI_API NotifyTeredoPortChange(
  [in]      PTEREDO_PORT_CHANGE_CALLBACK Callback,
  [in]      PVOID                        CallerContext,
  [in]      BOOLEAN                      InitialNotification,
  [in, out] HANDLE                       *NotificationHandle
);

Parametri

[in] Callback

Puntatore alla funzione da chiamare quando si verifica una modifica della porta client Teredo. Questa funzione verrà richiamata quando viene ricevuta una notifica di modifica della porta Teredo.

[in] CallerContext

Contesto utente passato alla funzione di callback specificata nel parametro Callback quando viene ricevuta una notifica di modifica della porta Teredo.

[in] InitialNotification

Valore che indica se il callback deve essere richiamato immediatamente dopo il completamento della registrazione per la notifica delle modifiche. Questa notifica iniziale non indica una modifica apportata alla porta client Teredo. Scopo di questo parametro per fornire la conferma che il callback è registrato.

[in, out] NotificationHandle

Puntatore usato per restituire un handle che può essere usato in un secondo momento per annullare la registrazione della notifica delle modifiche. In caso di esito positivo, viene restituito un handle di notifica in questo parametro. Se si verifica un errore, viene restituito NULL .

Valore restituito

Se la funzione ha esito positivo, il valore restituito è NO_ERROR.

Se la funzione ha esito negativo, il valore restituito è uno dei codici di errore seguenti.

Codice restituito Descrizione
ERROR_INVALID_HANDLE
Si è verificato un errore interno in cui è stato rilevato un handle non valido.
ERROR_INVALID_PARAMETER
Un parametro non valido è stato passato alla funzione. Questo errore viene restituito se il parametro Callback è un puntatore NULL .
ERROR_NOT_ENOUGH_MEMORY
Memoria insufficiente.
Altri
Usare FormatMessage per ottenere la stringa di messaggio per l'errore restituito.

Commenti

La funzione NotifyTeredoPortChange viene definita in Windows Vista e versioni successive.

La funzione GetTeredoPort può essere usata per recuperare il numero di porta UDP iniziale usato dal client Teredo per la porta del servizio Teredo.

La porta Teredo è dinamica e può cambiare qualsiasi volta che il client Teredo viene riavviato nel computer locale. Un'applicazione può essere registrata per ricevere una notifica quando la porta del servizio Teredo cambia chiamando la funzione NotifyTeredoPortChange.

La chiamata della funzione di callback specificata nel parametro Callback viene serializzata. La funzione di callback deve essere definita come funzione di tipo VOID. I parametri passati alla funzione callback includono quanto segue:

Parametro Descrizione
IN PVOID CallerContext Il parametro CallerContext passato alla funzione NotifyTeredoPortChange durante la registrazione delle notifiche.
Porta IN USHORT Numero di porta UDP attualmente usato dal client Teredo. Questo parametro è zero quando il valore MIB_NOTIFICATION_TYPE passato nel parametro NotificationType alla funzione di callback viene impostato su MibInitialNotification. Ciò può verificarsi solo se il parametro InitialNotification passato a NotifyTeredoPortChange è stato impostato su TRUE durante la registrazione delle notifiche.
IN MIB_NOTIFICATION_TYPE NotificationType Tipo di notifica. Questo membro può essere uno dei valori del tipo di enumerazione MIB_NOTIFICATION_TYPE definito nel file di intestazione Netioapi.h .
 

La funzione di callback specificata nel parametro Callback deve essere implementata nello stesso processo dell'applicazione che chiama la funzione NotifyTeredoPortChange . Se la funzione di callback si trova in una DLL separata, la DLL deve essere caricata prima di chiamare la funzione NotifyTeredoPortChange per registrare le notifiche di modifica.

Dopo aver chiamato la funzione NotifyTeredoPortChange per la registrazione per le notifiche di modifica, queste notifiche continueranno a essere inviate fino a quando l'applicazione non deregisters per le notifiche di modifica o l'applicazione termina. Se l'applicazione termina, il sistema deregiregistrerà automaticamente qualsiasi registrazione per le notifiche di modifica. È comunque consigliabile che un'applicazione deregisteri in modo esplicito per le notifiche di modifica prima che venga terminata.

Qualsiasi registrazione per le notifiche di modifica non persiste in un sistema arrestato o riavviato.

Per annullare la registrazione delle notifiche delle modifiche, chiamare la funzione CancelMibChangeNotify2 passando il parametro NotificationHandle restituito da NotifyTeredoPortChange.

Un'applicazione non può effettuare una chiamata alla funzione CancelMibChangeNotify2 dal contesto del thread che sta attualmente eseguendo la funzione di callback di notifica per lo stesso parametro NotificationHandle . In caso contrario, il thread che esegue tale callback comporterà il deadlock. Pertanto la funzione CancelMibChangeNotify2 non deve essere chiamata direttamente come parte della routine di callback di notifica. In una situazione più generale, un thread che esegue la funzione CancelMibChangeNotify2 non può essere proprietaria di una risorsa in cui il thread che esegue un'operazione di callback di notifica attenderebbe perché comporta un deadlock simile. La funzione CancelMibChangeNotify2 deve essere chiamata da un thread diverso, in cui il thread che riceve il callback di notifica non ha dipendenze.

Il client Teredo usa anche la porta UDP statica 3544 per l'ascolto del traffico multicast inviato all'indirizzo IPv4 multicast 224.0.0.253 come definito in RFC 4380. Per altre informazioni, vedere http://www.ietf.org/rfc/rfc4380.txt.

La funzione NotifyTeredoPortChange viene usata principalmente dalle applicazioni firewall per configurare le eccezioni appropriate per consentire il traffico in ingresso e in uscita Teredo.

La funzione NotifyStableUnicastIpAddressTable viene usata principalmente dalle applicazioni che usano il client Teredo.

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione netioapi.h (includere Iphlpapi.h)
Libreria Iphlpapi.lib
DLL Iphlpapi.dll

Vedi anche

CancelMibChangeNotify2

GetTeredoPort

NotifyStableUnicastIpAddressTable