Compartilhar via


Função NotifyStableUnicastIpAddressTable

A função NotifyStableUnicastIpAddressTable recupera a tabela de endereços IP unicast estável em um computador local.

Sintaxe

NETIOAPI_API NotifyStableUnicastIpAddressTable(
  _In_    ADDRESS_FAMILY                           Family,
  _Out_   PMIB_UNICASTIPADDRESS_TABLE              *Table,
  _In_    PSTABLE_UNICAST_IPADDRESS_TABLE_CALLBACK CallerCallback,
  _In_    PVOID                                    CallerContext,
  _Inout_ HANDLE                                   *NotificationHandle
);

Parâmetros

  • Família [in]
    A família de endereços a ser recuperada.

    Os valores possíveis para a família de endereços são listados no arquivo de cabeçalho Winsock2.h. Observe que os valores para a família de endereços AF_ e PF_ constantes da família de protocolos são idênticos (por exemplo, AF_INET e PF_INET), para que você possa usar qualquer constante.

    No Windows Vista e versões posteriores dos sistemas operacionais Windows, os valores possíveis para o parâmetro Family são definidos no arquivo de cabeçalho Ws2def.h. Observe que o arquivo de cabeçalho Ws2def.h é incluído automaticamente em Netioapi.h e você nunca deve usar Ws2def.h diretamente.

    Atualmente, há suporte para os seguintes valores para a família de endereços:

    • AF_INET
      A família de endereços IPv4. Quando esse valor é especificado, a função recupera a tabela de endereços IP unicast estável que contém apenas entradas IPv4.

    • AF_INET6
      A família de endereços IPv6. Quando esse valor é especificado, a função recupera a tabela de endereços IP unicast estável que contém apenas entradas IPv6.

    • AF_UNSPEC
      A família de endereços não é especificada. Quando esse valor é especificado, a função recupera a tabela de endereços IP unicast estável que contém entradas IPv4 e IPv6.

  • Tabela [out]
    Um ponteiro para uma estrutura MIB_UNICASTIPADDRESS_TABLE . Quando NotifyStableUnicastIpAddressTable for bem-sucedido, esse parâmetro retornará a tabela de endereços IP unicast estável no computador local.

    Quando NotifyStableUnicastIpAddressTable retorna ERROR_IO_PENDING, o que indica que a solicitação de E/S está pendente, a tabela de endereços IP unicast estáveis é retornada para a função no parâmetro CallerCallback .

  • CallerCallback [in]
    Um ponteiro para a função a ser chamada com a tabela de endereços IP unicast estável. Essa função será chamada se NotifyStableUnicastIpAddressTable retornar ERROR_IO_PENDING, o que indica que a solicitação de E/S está pendente.

  • CallerContext [in]
    Um contexto de usuário que é passado para a função de retorno de chamada especificada no parâmetro CallerCallback quando a tabela de endereços IP unicast estáveis está disponível.

  • NotificationHandle [in, out]
    Um ponteiro usado para retornar um identificador que o driver pode usar para cancelar a solicitação para recuperar a tabela de endereços IP unicast estáveis. Esse parâmetro será retornado se o valor retornado de NotifyStableUnicastIpAddressTable for ERROR_IO_PENDING, o que indica que a solicitação de E/S está pendente.

Retornar valor

NotifyStableUnicastIpAddressTable retornará STATUS_SUCCESS e a tabela IP unicast estável será retornada no parâmetro Table se a função for bem-sucedida imediatamente.

Se a solicitação de E/S estiver pendente, a função retornará ERROR_IO_PENDING e a função para a qual o parâmetro CallerCallback aponta será chamada quando a solicitação de E/S for concluída com a tabela de endereços IP unicast estáveis.

Se a função falhar, NotifyStableUnicastIpAddressTable retornará um dos seguintes códigos de erro:

Código de retorno Descrição
ERROR_INVALID_HANDLE

Ocorreu um erro interno em que um identificador inválido foi encontrado.

STATUS_INVALID_PARAMETER

Um parâmetro inválido foi passado para a função. Esse erro será retornado se o parâmetro Table for um ponteiro NULL , o parâmetro NotificationHandle for um ponteiro NULL ou o parâmetro Family não tiver sido AF_INET, AF_INET6 ou AF_UNSPEC.

STATUS_NOT_ENOUGH_MEMORY

Não havia memória suficiente.

Outros

Use a função FormatMessage para obter a cadeia de caracteres de mensagem para o erro retornado.

Comentários

Todos os endereços IP unicast, exceto endereços discados sob demanda, serão considerados estáveis somente se estiverem no estado preferencial. Para uma entrada de endereço IP unicast normal, esse estado corresponderia a um membro DadState do MIB_UNICASTIPADDRESS_ROW para o endereço IP definido como IpDadStatePreferred. Cada endereço de discagem sob demanda define sua própria métrica de estabilidade. Atualmente, o único endereço discado sob demanda que a função NotifyStableUnicastIpAddressTable considera é o endereço IP unicast que o cliente Teredo usa no computador local.

O driver deve definir o parâmetro Family como AF_INET, AF_INET6 ou AF_UNSPEC.

Quando NotifyStableUnicastIpAddressTable é bem-sucedido e retorna STATUS_SUCCESS, o parâmetro Table retorna a tabela de endereços IP unicast estáveis no computador local.

Quando NotifyStableUnicastIpAddressTable retorna ERROR_IO_PENDING, o que indica que a solicitação de E/S está pendente, a tabela de endereços IP unicast estáveis é retornada para a função no parâmetro CallerCallback .

Se o endereço IP unicast que o Teredo usa estiver disponível no computador local, mas não no estado estável (qualificado), NotifyStableUnicastIpAddressTable retornará ERROR_IO_PENDING e a tabela de endereços IP unicast estáveis será eventualmente retornada chamando a função no parâmetro CallerCallback . Se o endereço Teredo não estiver disponível ou estiver no estado estável e os outros endereços IP unicast estiverem em um estado estável, a função no parâmetro CallerCallback nunca será chamada.

A função de retorno de chamada especificada no parâmetro CallerCallback deve ser definida como uma função do tipo VOID. Os parâmetros que são passados para a função de retorno de chamada incluem o seguinte.

Parâmetro Descrição

IN PVOID CallerContext

O parâmetro CallerContext que é passado para a função NotifyStableUnicastIpAddressTable quando está registrando o driver para notificações.

IN PMIB_UNICASTIPADDRESS_TABLE AddressTable

Um ponteiro para uma estrutura MIB_UNICASTIPADDRESS_TABLE que contém a tabela de endereços IP unicast estável no computador local.

A função NotifyStableUnicastIpAddressTable é usada principalmente por drivers que usam o cliente Teredo.

Para cancelar a notificação após a conclusão do retorno de chamada, chame a função CancelMibChangeNotify2 , passando o parâmetro NotificationHandle que NotifyStableUnicastIpAddressTable retorna.

Requisitos

Plataforma de destino

Universal

Versão

Disponível no Windows Vista e versões posteriores dos sistemas operacionais Windows.

Cabeçalho

Netioapi.h (inclua Netioapi.h)

Biblioteca

Netio.lib

IRQL

< DISPATCH_LEVEL

Confira também

CancelMibChangeNotify2

CreateUnicastIpAddressEntry

DeleteUnicastIpAddressEntry

GetTeredoPort

GetUnicastIpAddressEntry

GetUnicastIpAddressTable

InitializeUnicastIpAddressEntry

MIB_NOTIFICATION_TYPE

MIB_UNICASTIPADDRESS_ROW

MIB_UNICASTIPADDRESS_TABLE

NotifyTeredoPortChange

NotifyUnicastIpAddressChange

SetUnicastIpAddressEntry