卸除具有未處理內容句柄的伺服器
傳統上,卸載使用上下文句柄來處理 RPC 呼叫的 DLL,而不先停止宿主進程,一直是一項棘手的問題。 這是因為卸除 DLL 時,Run-down 例程已不再有效。 當具備先前開啟內容句柄的客戶端失敗後,RPC 執行期間嘗試關閉內容句柄,並呼叫執行終止例程時發生存取違規,導致伺服器當機。
從 Windows XP 開始,已新增名為 RpcServerUnregisterIfEx 的新 API。 RpcServerUnregisterIfEx 關閉由正在取消註冊的介面所開啟的上下文句柄,RpcServerUnregisterIf 函式則不會。 當整個進程關閉時,不需要使用 RpcServerUnregisterIfEx,但如果在卸載裝載執行例程的一或多個 DLL 時,有未結束上下文控制流存在,就有必要這樣做。