Compartilhar via


Função RpcNsMgmtHandleSetExpAge (rpcnsi.h)

A função RpcNsMgmtHandleSetExpAge define a idade de expiração de um identificador name-service para cópias locais de dados name-service.

Nota Essa função não tem suporte no Windows Vista e em sistemas operacionais posteriores.
 

Sintaxe

RPC_STATUS RpcNsMgmtHandleSetExpAge(
  RPC_NS_HANDLE NsHandle,
  unsigned long ExpirationAge
);

Parâmetros

NsHandle

Identificador nome-serviço para o qual uma idade de expiração é definida. Um identificador name-service é retornado de uma operação de início de serviço de nome.

ExpirationAge

Valor inteiro, em segundos, que define a idade de expiração dos dados de nome-serviço locais lidos por todas as próximas rotinas usando o parâmetro NsHandle especificado.

Uma idade de expiração de 0 causa uma atualização imediata dos dados de nome-serviço local.

Valor retornado

Valor Significado
RPC_S_OK
A chamada foi bem-sucedida.
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 RpcNsMgmtHandleSetExpAge define uma idade de expiração do identificador para um identificador de nome-serviço especificado (NsHandle). A idade de expiração é a quantidade de tempo que uma cópia local de dados de um atributo name-service pode existir antes que uma solicitação do aplicativo para o atributo exija a atualização da cópia local. Quando um aplicativo começa a ser executado, a biblioteca de tempo de execução RPC especifica uma idade de expiração padrão de duas horas. O padrão é global para o aplicativo. Uma idade de expiração do identificador se aplica apenas a um identificador de nome-serviço específico e substitui temporariamente a idade de expiração global atual.

Uma idade de expiração do identificador é usada exclusivamente pelas próximas operações do Ponteiro (que leem dados de atributos name-service). Uma próxima operação normalmente começa procurando uma cópia local dos dados de atributo que estão sendo solicitados por um aplicativo. Na ausência de uma cópia local, a próxima operação cria uma com novos dados de atributo do banco de dados name-service. Se uma cópia local já existir, a operação comparará sua idade real com a idade de expiração que está sendo usada pelo aplicativo (que, nesse caso, é a idade de expiração definida para o identificador nome-serviço). Se a idade real exceder a idade de expiração do identificador, a operação tentará atualizar automaticamente a cópia local com novos dados de atributo. Se a atualização for impossível, os dados locais antigos permanecerão em vigor e a próxima operação falhará, retornando o código RPC_S_NAME_SERVICE_UNAVAILABLE status.

O escopo de uma idade de expiração do identificador é uma única série de próximas operações. A função RpcNsMgmtHandleSetExpAge opera no seguinte contexto:

  • Uma operação begin cria um identificador de nome-serviço.
  • Uma chamada para a função RpcNsMgmtHandleSetExpAge cria uma idade de expiração para o identificador.
  • Uma série de próximas operações para o identificador name-service usa a idade de expiração do identificador.
  • Uma operação feita para o identificador nome-serviço exclui o identificador e sua idade de expiração.
Nota Normalmente, você deve evitar o uso de RpcNsMgmtHandleSetExpAge. Em vez disso, você deve confiar na idade de expiração global do aplicativo. Definir a idade de expiração do identificador como um valor pequeno faz com que as próximas operações do serviço de nome atualizem com frequência os dados locais para qualquer atributo name-service solicitado pelo aplicativo. Por exemplo, definir a idade de expiração como 0 força a próxima operação a atualizar dados locais para o atributo name-service solicitado pelo aplicativo. Portanto, definir uma pequena idade de expiração de identificador pode criar problemas de desempenho para seu aplicativo. Além disso, se o aplicativo estiver usando um servidor de name-service remoto, uma pequena idade de expiração poderá afetar negativamente o desempenho da rede para todos os aplicativos.
 
Limite o uso de RpcNsMgmtHandleSetExpAge para as seguintes situações:
  • Quando você sempre deve obter dados precisos de name-service.

    Por exemplo, durante operações de gerenciamento para atualizar um perfil, talvez seja necessário sempre ver o conteúdo atual do perfil. Nesse caso, antes de começar a perguntar sobre um perfil, seu aplicativo deve chamar a função RpcNsMgmtHandleSetExpAge e especificar 0 para o parâmetro ExpirationAge .

  • Quando uma solicitação que usa a idade de expiração padrão falha e seu aplicativo precisa repetir a operação.

    Por exemplo, um aplicativo cliente que usa operações de importação de serviço de nome deve primeiro tentar obter associações usando a idade de expiração padrão do aplicativo. No entanto, às vezes, a operação import-next retorna nenhum identificador de associação ou um número insuficiente deles. Nesse caso, o cliente pode repetir a operação de importação e, após a chamada RpcNsBindingImportBegin , incluir uma chamada RpcNsMgmtHandleSetExpAge e especificar 0 para o parâmetro ExpirationAge . Quando o cliente chama a função import-next novamente, a pequena idade de expiração do identificador faz com que a operação import-next atualize os dados do atributo local.

Requisitos

   
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

RpcNsBindingImportBegin

RpcNsMgmtInqExpAge

RpcNsMgmtSetExpAge