共用方式為


RpcNsMgmtHandleSetExpAge 函式 (rpcnsi.h)

RpcNsMgmtHandleSetExpAge函式會針對名稱服務資料的本機複本設定名稱服務控制碼的到期期限。

注意 Windows Vista 和更新版本的作業系統不支援此函式。
 

語法

RPC_STATUS RpcNsMgmtHandleSetExpAge(
  RPC_NS_HANDLE NsHandle,
  unsigned long ExpirationAge
);

參數

NsHandle

設定到期期限的名稱服務控制碼。 名稱服務控制碼會從名稱服務開始作業傳回。

ExpirationAge

整數值,以秒為單位,使用指定的 NsHandle 參數,設定所有下一個常式所讀取之本機名稱服務資料的到期期限。

到期期限為 0 會導致立即更新本機名稱服務資料。

傳回值

意義
RPC_S_OK
呼叫成功。
RPC_S_NAME_SERVICE_UNAVAILABLE
名稱服務無法使用。
 
注意 如需有效錯誤碼的清單,請參閱 RPC 傳回值
 

備註

RpcNsMgmtHandleSetExpAge函式會為指定的名稱服務控制碼 (NsHandle) 設定控制碼到期期限。 到期期限是來自名稱服務屬性的本機資料複本可以存在的時間量,然後屬性的應用程式要求需要更新本機複本。 當應用程式開始執行時,RPC 執行時間程式庫會指定預設到期時間為兩小時。 預設值為應用程式的全域。 控制碼到期期限僅適用于特定名稱服務控制碼,並暫時覆寫目前的全域到期期限。

控制碼到期期限是由指標下一個作業獨佔使用, (從名稱服務屬性讀取資料) 。 下一個作業通常會從尋找應用程式所要求的屬性資料的本機複本開始。 如果沒有本機複本,下一個作業會從 name-service 資料庫建立一個具有全新屬性資料的作業。 如果本機複本已經存在,作業會比較其實際存留期與應用程式所使用的到期期限 (,在此情況下,這是名稱服務控制碼) 的到期期限設定。 如果實際存留期超過控制碼到期期限,作業會自動嘗試以全新的屬性資料更新本機複本。 如果無法更新,舊的本機資料仍會就地運作,而下一個作業會失敗,並傳回RPC_S_NAME_SERVICE_UNAVAILABLE狀態碼。

控制碼到期期限的範圍是下一個作業的單一系列。 RpcNsMgmtHandleSetExpAge函式會在下列內容中運作:

  • 開始作業會建立名稱服務控制碼。
  • 對 RpcNsMgmtHandleSetExpAge函式的呼叫會建立控制碼的到期期限。
  • 名稱服務控制碼的一系列下一個作業會使用控制碼到期期限。
  • 名稱服務控制碼的完成作業會刪除控制碼及其到期期限。
注意 一般而言,您應該避免使用 RpcNsMgmtHandleSetExpAge。 相反地,您應該依賴應用程式的全域到期期限。 將控制碼到期期限設定為較小的值,會導致下一個作業的名稱服務經常更新應用程式所要求的任何名稱服務屬性的本機資料。 例如,將到期期限設定為 0 會強制下一個作業更新應用程式所要求的名稱服務屬性的本機資料。 因此,設定小型控制碼到期期限可能會為您的應用程式建立效能問題。 此外,如果您的應用程式使用遠端名稱服務伺服器,小型到期期限可能會對所有應用程式的網路效能造成負面影響。
 
RpcNsMgmtHandleSetExpAge 的使用限制為下列情況:
  • 當您必須一律取得精確的名稱服務資料時。

    例如,在更新設定檔的管理作業期間,您可能需要一律看到設定檔的目前內容。 在此情況下,在開始查詢設定檔之前,您的應用程式應該呼叫 RpcNsMgmtHandleSetExpAge 函式,並為 ExpirationAge 參數指定 0。

  • 使用預設到期期限的要求失敗時,您的應用程式必須重試作業。

    例如,使用名稱服務匯入作業的用戶端應用程式應該先嘗試使用應用程式的預設到期期限來取得系結。 不過,有時候匯入下一個作業不會傳回任何系結控制碼或數目不足。 在此情況下,用戶端可以重試匯入作業,並在 RpcNsBindingImportBegin 呼叫之後包含 RpcNsMgmtHandleSetExpAge 呼叫,並為 ExpirationAge 參數指定 0。 當用戶端再次呼叫 import-next 函式時,小型控制碼到期期限會導致匯入下一個作業更新本機屬性資料。

需求

   
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 rpcnsi.h (包含 Rpc.h)
程式庫 Rpcns4.lib
Dll Rpcns4.dll

另請參閱

RpcNsBindingImportBegin

RpcNsMgmtInqExpAge

RpcNsMgmtSetExpAge