rpcNsMgmtHandleSetExpAge 函数 (rpcnsi.h)

RpcNsMgmtHandleSetExpAge 函数为名称服务数据的本地副本设置名称服务句柄的过期期限。

注意 Windows Vista 及更高版本的操作系统不支持此功能。
 

语法

RPC_STATUS RpcNsMgmtHandleSetExpAge(
  RPC_NS_HANDLE NsHandle,
  unsigned long ExpirationAge
);

parameters

NsHandle

为其设置了过期期限的名称服务句柄。 名称服务开始操作返回名称服务句柄。

ExpirationAge

整数值(以秒为单位),用于设置所有后续例程使用指定的 NsHandle 参数读取的本地名称服务数据的过期期限。

过期期限为 0 会导致本地名称服务数据立即更新。

返回值

含义
RPC_S_OK
调用成功。
RPC_S_NAME_SERVICE_UNAVAILABLE
名称服务不可用。
 
注意 有关有效错误代码的列表,请参阅 RPC 返回值
 

注解

RpcNsMgmtHandleSetExpAge 函数 (NsHandle) 为指定的名称服务句柄设置句柄过期期限。 过期期限是名称服务属性的本地数据副本在应用程序对属性的请求要求更新本地副本之前可以存在的时间量。 当应用程序开始运行时,RPC 运行时库将默认过期期限指定为 2 小时。 对于应用程序,默认值为全局。 句柄过期期限仅适用于特定的名称服务句柄,并暂时替代当前的全局过期期限。

句柄过期期限由指针下一个操作独占使用, (从名称服务属性) 读取数据。 下一个操作通常从查找应用程序请求的属性数据的本地副本开始。 在没有本地副本的情况下,下一个操作将创建一个具有来自名称服务数据库的全新属性数据。 如果本地副本已存在,则操作会将其实际使用期限与应用程序使用的过期期限进行比较 (在本例中,这是为名称服务句柄) 设置的过期期限。 如果实际期限超过句柄过期期限,则操作会自动尝试使用新的属性数据更新本地副本。 如果无法更新,旧本地数据将保留到位,下一个操作将失败,返回RPC_S_NAME_SERVICE_UNAVAILABLE状态代码。

句柄过期期限的范围是一系列后续操作。 RpcNsMgmtHandleSetExpAge 函数在以下上下文中运行:

  • 开始操作创建名称服务句柄。
  • 调用 RpcNsMgmtHandleSetExpAge 函数会创建句柄的过期期限。
  • 名称服务句柄的一系列后续操作使用句柄过期期限。
  • 名称服务句柄的已完成操作会同时删除句柄及其过期期限。
注意 通常,应避免使用 RpcNsMgmtHandleSetExpAge。 相反,应依赖于应用程序的全局过期期限。 将句柄过期期限设置为较小的值会导致名称服务后续操作频繁更新应用程序请求的任何名称服务属性的本地数据。 例如,将过期期限设置为 0 会强制下一个操作更新应用程序请求的名称服务属性的本地数据。 因此,设置较小的句柄过期期限可能会给应用程序造成性能问题。 此外,如果应用程序使用远程名称服务服务器,则较短的过期期限可能会对所有应用程序的网络性能产生负面影响。
 
RpcNsMgmtHandleSetExpAge 的使用限制为以下情况:
  • 必须始终获取准确的名称服务数据时。

    例如,在更新配置文件的管理操作期间,可能需要始终查看配置文件的当前内容。 在这种情况下,在开始查询配置文件之前,应用程序应调用 RpcNsMgmtHandleSetExpAge 函数,并为 ExpirationAge 参数指定 0。

  • 当使用默认过期期限的请求失败时,应用程序需要重试该操作。

    例如,使用名称服务导入操作的客户端应用程序应首先尝试使用应用程序的默认过期期限获取绑定。 但是,有时 import-next 操作返回不带绑定句柄或数量不足的绑定句柄。 在这种情况下,客户端可以重试导入操作,并在 RpcNsBindingImportBegin 调用后包括 RpcNsMgmtHandleSetExpAge 调用,并为 ExpirationAge 参数指定 0。 当客户端再次调用 import-next 函数时,较小的句柄过期时间会导致 import-next 操作更新本地属性数据。

要求

   
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 rpcnsi.h (包括 Rpc.h)
Library Rpcns4.lib
DLL Rpcns4.dll

请参阅

RpcNsBindingImportBegin

RpcNsMgmtInqExpAge

RpcNsMgmtSetExpAge