Función RpcNsMgmtHandleSetExpAge (rpcnsi.h)
La función RpcNsMgmtHandleSetExpAge establece la antigüedad de expiración de un identificador de servicio de nombres para las copias locales de los datos del servicio de nombres.
Sintaxis
RPC_STATUS RpcNsMgmtHandleSetExpAge(
RPC_NS_HANDLE NsHandle,
unsigned long ExpirationAge
);
Parámetros
NsHandle
Identificador de servicio de nombres para el que se establece una antigüedad de expiración. Se devuelve un identificador de servicio de nombre a partir de una operación de inicio del servicio de nombre.
ExpirationAge
Valor entero, en segundos, que establece la antigüedad de expiración de los datos de servicio de nombres locales leídos por todas las rutinas siguientes mediante el parámetro NsHandle especificado.
Una antigüedad de expiración de 0 provoca una actualización inmediata de los datos locales del servicio de nombres.
Valor devuelto
Valor | Significado |
---|---|
|
La llamada se realizó correctamente. |
|
El nombre del servicio no está disponible. |
Comentarios
La función RpcNsMgmtHandleSetExpAge establece una antigüedad de expiración de identificador para un identificador de nombre y servicio especificado (NsHandle). La antigüedad de expiración es la cantidad de tiempo que puede existir una copia local de datos de un atributo name-service antes de que una solicitud de la aplicación para el atributo requiera actualizar la copia local. Cuando una aplicación comienza a ejecutarse, la biblioteca en tiempo de ejecución rpc especifica una antigüedad de expiración predeterminada de dos horas. El valor predeterminado es global para la aplicación. Una antigüedad de expiración de identificador solo se aplica a un identificador de servicio de nombres específico y invalida temporalmente la antigüedad de expiración global actual.
Una antigüedad de expiración de identificadores se usa exclusivamente por las operaciones siguientes del puntero (que leen datos de atributos de servicio de nombres). Normalmente, una operación siguiente se inicia buscando una copia local de los datos de atributo solicitados por una aplicación. En ausencia de una copia local, la siguiente operación crea uno con datos de atributo nuevos de la base de datos name-service. Si ya existe una copia local, la operación compara su antigüedad real con la edad de expiración que usa la aplicación (que, en este caso, es la edad de expiración establecida para el identificador de servicio de nombres). Si la antigüedad real supera la antigüedad de expiración del identificador, la operación intenta actualizar automáticamente la copia local con datos de atributo nuevos. Si la actualización es imposible, los datos locales antiguos permanecen en su lugar y se produce un error en la siguiente operación, devolviendo el código de estado RPC_S_NAME_SERVICE_UNAVAILABLE.
El ámbito de una antigüedad de expiración de identificadores es una sola serie de operaciones siguientes. La función RpcNsMgmtHandleSetExpAge funciona en el contexto siguiente:
- Una operación de inicio crea un identificador de servicio de nombre.
- Una llamada a la función RpcNsMgmtHandleSetExpAge crea una antigüedad de expiración para el identificador.
- Una serie de operaciones siguientes para el identificador de servicio de nombres usa la antigüedad de expiración del identificador.
- Una operación realizada para el identificador name-service elimina tanto el identificador como su antigüedad de expiración.
- Cuando siempre debe obtener datos precisos de name-service.
Por ejemplo, durante las operaciones de administración para actualizar un perfil, es posible que tenga que ver siempre el contenido actual del perfil. En este caso, antes de empezar a consultar un perfil, la aplicación debe llamar a la función RpcNsMgmtHandleSetExpAge y especificar 0 para el parámetro ExpirationAge .
- Cuando se produce un error en una solicitud que usa la antigüedad de expiración predeterminada y la aplicación debe reintentar la operación.
Por ejemplo, una aplicación cliente que use operaciones de importación de servicio de nombres debe intentar primero obtener enlaces mediante la antigüedad de expiración predeterminada de la aplicación. Sin embargo, a veces la operación import-next devuelve ningún identificador de enlace o un número insuficiente de ellos. En este caso, el cliente podría reintentar la operación de importación y, después de la llamada RpcNsBindingImportBegin , incluir una llamada RpcNsMgmtHandleSetExpAge y especificar 0 para el parámetro ExpirationAge . Cuando el cliente llama de nuevo a la función import-next, la pequeña antigüedad de expiración del identificador hace que la operación import-next actualice los datos del atributo local.
Requisitos
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows 2000 Server [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | rpcnsi.h (incluir Rpc.h) |
Library | Rpcns4.lib |
Archivo DLL | Rpcns4.dll |