Partilhar 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 estão listados no arquivo de cabeçalho Winsock2.h. Observe que os valores para a família de endereços AF_ e as constantes da família PF_ protocolo são idênticos (por exemplo, AF_INET e PF_INET), portanto, você pode usar qualquer constante.

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

    Os seguintes valores são atualmente suportados 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 é bem-sucedido, esse parâmetro retorna 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ável é retornada para a função no parâmetro CallerCallback.

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

  • CallerContext [em]
    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ável está disponível.

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

Valor de retorno

NotifyStableUnicastIpAddressTable retorna STATUS_SUCCESS e a tabela IP unicast estável é 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ável.

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 onde foi encontrado um identificador inválido.

STATUS_INVALID_PARAMETER

Um parâmetro inválido foi passado para a função. Este erro será retornado se o parâmetro Table for um ponteiro de NULL, se o parâmetro NotificationHandle for um ponteiro NULL ou se o parâmetro da família não for 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 dial-on-demand, são considerados estáveis somente se estiverem no estado preferencial. Para uma entrada de endereço IP unicast normal, esse estado corresponderia a um DadState membro 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 de discagem 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á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ável é retornada para a função no parâmetro CallerCallback.

Se o endereço IP unicast que 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ável 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

EM 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çãoCancelMibChangeNotify2, passando o parâmetro NotificationHandle que NotifyStableUnicastIpAddressTable retorna.

Requerimentos

Plataforma de destino

Universal

Versão

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

Cabeçalho

Netioapi.h (inclui Netioapi.h)

Biblioteca

Netio.lib

IRQL

< DISPATCH_LEVEL

Ver também

CancelMibChangeNotify2

CreateUnicastIpAddressEntry

DeleteUnicastIpAddressEntry

GetTeredoPort

GetUnicastIpAddressEntry

GetUnicastIpAddressTable

InitializeUnicastIpAddressEntry

MIB_NOTIFICATION_TYPE

MIB_UNICASTIPADDRESS_ROW

MIB_UNICASTIPADDRESS_TABLE

NotifyTeredoPortChange

NotifyUnicastIpAddressChange

SetUnicastIpAddressEntry