Compartilhar via


Função RpcNsBindingLookupNext (rpcnsi.h)

A função RpcNsBindingLookupNext retorna uma lista de identificadores de associação compatíveis para uma interface especificada e, opcionalmente, um objeto .

Nota Não há suporte para essa função no Windows Vista e em sistemas operacionais posteriores.
 

Sintaxe

RPC_STATUS RpcNsBindingLookupNext(
  RPC_NS_HANDLE      LookupContext,
  RPC_BINDING_VECTOR **BindingVec
);

Parâmetros

LookupContext

Identificador de serviço de nome retornado da função RpcNsBindingLookupBegin .

BindingVec

Retorna o endereço de um ponteiro para um vetor de identificadores de associação de servidor compatíveis com o cliente.

Valor retornado

Valor Significado
RPC_S_OK
A chamada foi bem-sucedida.
RPC_S_NO_MORE_BINDINGS
Chega de associações.
RPC_S_NAME_SERVICE_UNAVAILABLE
O serviço de nome está indisponível.
 
Nota Para obter uma lista de códigos de erro válidos, consulte RPC Return Values.
 

Comentários

A função RpcNsBindingLookupNext retorna um vetor de identificadores de associação de servidor compatíveis com o cliente para um servidor que oferece a interface e o objeto UUID especificados pelos parâmetros IfSpec e ObjUuid na função RpcNsBindingLookupBegin . (Compare isso com RpcNsBindingImportNext, que retorna um único identificador de associação de servidor compatível.)

A função RpcNsBindingLookupNext se comunica apenas com o banco de dados name-service, não diretamente com servidores.

A partir do Windows 2000, o ambiente RPC usa o Active Directory como seu banco de dados de serviço de nome e a ordem na qual o ambiente de tempo de execução executa a pesquisa é a seguinte:

  • Pesquise o cache local.
  • Se a entrada não for encontrada no cache local, pesquise o Active Directory desse computador.
  • Se a entrada não for encontrada no computador local, envie solicitações de difusão para todos os outros serviços do Active Directory no domínio.

    Observe que, se a entrada existir no Active Directory, mas não houver informações associadas à entrada, o ambiente de tempo de execução não emitirá essa solicitação de difusão.

Em chamadas sucessivas, a função RpcNsBindingLookupNext percorre entradas de banco de dados de serviço de nome, coletando identificadores de associação de servidor compatíveis com o cliente de cada entrada.

Quando o Microsoft Active Directory é o banco de dados name-service, RpcNsBindingLookupNext atravessa o banco de dados somente se o nome de entrada fornecido for nulo e a entrada padrão (no registro) for indefinida ou vazia. Além disso, como entradas mistas não são permitidas no Active Directory, a função pesquisa apenas nomes de entrada de servidor, não nomes de grupo ou perfil.

Quando o CDS (Serviço de Diretório de Células) do DCE é o banco de dados name-service e a entrada na qual a pesquisa começa contém identificadores de associação, além de nomes de grupo ou perfil, RpcNsBindingLookupNext retorna os identificadores de associação de EntryName antes de pesquisar o grupo ou perfil. Isso significa que a função pode retornar um vetor parcialmente completo antes de processar os membros do grupo ou perfil.

O identificador de associação compatível que é retornado sempre contém um UUID de objeto, cujo valor depende do parâmetro ObjUuid na função RpcNsBindingImportBegin . Se um UUID de objeto não nulo tiver sido especificado, o identificador de associação retornado conterá esse objeto UUID. Se, no entanto, um objeto nulo UUID ou valor nulo tiver sido especificado, o UUID do objeto retornado será resultado das seguintes possibilidades:

  • Se o servidor não exportou UUIDs de objeto, o identificador de associação retornado conterá um UUID de objeto nulo.
  • Se o servidor exportou um objeto UUID, o identificador de associação retornado contém esse objeto UUID.
  • Se o servidor exportou várias UUIDs de objeto, o identificador de associação retornado conterá um dos UUIDs do objeto. A operação import-next seleciona o UUID do objeto retornado de maneira não determinística. Como resultado, um UUID de objeto diferente pode ser retornado para cada identificador de associação compatível de uma única entrada de servidor.
No vetor retornado dos identificadores de associação de servidor, o aplicativo cliente pode empregar seus próprios critérios para selecionar identificadores de associação individuais ou o aplicativo pode chamar a função RpcNsBindingSelect para selecionar um identificador de associação. As funções RpcBindingToStringBinding e RpcStringBindingParse serão úteis para um cliente criar seus próprios critérios de seleção.

O aplicativo cliente pode usar o identificador de associação selecionado para tentar fazer uma chamada de procedimento remoto para o servidor. Se o cliente não conseguir estabelecer uma relação com o servidor, ele poderá selecionar outro identificador de associação do vetor. Quando todos os identificadores de associação no vetor tiverem sido usados, o aplicativo cliente chamará RpcNsBindingLookupNext novamente.

Cada vez que o cliente chama RpcNsBindingLookupNext, a função retorna outro vetor de identificadores de associação. Os identificadores de associação retornados em cada vetor não são ordenados. Os vetores retornados de várias chamadas para essa função também não são ordenados.

Um cliente chama a função RpcNsBindingInqEntryName para obter o nome da entrada do servidor de banco de dados name-service da qual a associação veio.

Quando a pesquisa atinge o final do banco de dados name-service, RpcNsBindingLookupNext retorna uma status de RPC_S_NO_MORE_BINDINGS e retorna um valor BindingVec de NULL.

A função RpcNsBindingLookupNext aloca armazenamento para os dados referenciados pelo parâmetro BindingVec retornado. Quando um aplicativo cliente termina com o vetor, ele deve chamar a função RpcBindingVectorFree para desalocar o armazenamento. Cada chamada para RpcNsBindingLookupNext requer uma chamada correspondente para RpcBindingVectorFree.

O cliente é responsável por chamar a função RpcNsBindingLookupDone para excluir o contexto de pesquisa ou se você quiser que o aplicativo inicie uma nova pesquisa para servidores compatíveis.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho rpcnsi.h (inclua Rpc.h)
Biblioteca Rpcns4.lib
DLL Rpcns4.dll

Confira também

RpcBindingToStringBinding

RpcBindingVectorFree

RpcNsBindingInqEntryName

RpcNsBindingLookupBegin

RpcNsBindingLookupDone

RpcStringBindingParse