伺服器內容執行常式

如果在伺服器代表用戶端維護內容時中斷通訊,可能需要清除常式,才能代表指定的用戶端清除伺服器所維護的狀態。 此清除常式稱為 內容執行常式。 當連線中斷時,伺服器存根和執行時間程式庫會在用戶端開啟的每個內容控制碼上呼叫此常式。

當您將 [coNtext_handle] 屬性套用至類型定義時,需要內容執行常式,而且會隱含宣告並命名。 如果直接將 [coNtext_handle] 屬性套用至參數,伺服器將不會呼叫內容執行常式。

內容執行常式語法如下:

void __RPC_USER type-id_rundown (type-id);

請注意,類型名稱會決定內容執行常式的名稱。

後面的程式碼片段會顯示範例內容執行常式。 會呼叫使用內容控制碼進行介面開發、使用內容控制碼進行伺服器開發,以及使用內容控制碼進行用戶端開發的RemoteClose 程式。 此程式會關閉檔案控制代碼、釋放與檔案相關聯的記憶體,並將 Null 指派給內容控制碼。 指派 Null 是呼叫 RemoteClose 函式的結果,而且在執行案例中並非必要。 不論內容控制碼是否設定為 Null,RPC 執行時間都會清除其狀態。

//file: cxhndp.c (fragment of file containing remote procedures)
//The rundown routine is associated with the context handle type.  
void __RPC_USER PCONTEXT_HANDLE_TYPE_rundown(
    PCONTEXT_HANDLE_TYPE phContext)
{
    printf("Client died with an open file, closing it..\n");
    RemoteClose(&phContext);
    assert(phContext == 0);
}