WS_SERVICE_CLOSE_CHANNEL_CALLBACK回呼函式 (webservices.h)
在端點上關閉或中止通道時叫用。 在即將關閉通道之前,會立即呼叫此回呼。
針對服務主機正在執行且用戶端完全關閉通道時的正常作業,這表示我們已收到來自用戶端的會話關閉,且即將關閉通道。
另一個案例是當服務主機通過中止關機或處理訊息時,符合無法復原的錯誤狀況,因此我們會嘗試中止,然後關閉通道。 在此案例中,在中止之前,我們也會在此回呼時呼叫 。
針對會話型服務合約,此通知表示會話終止。 因此,此回呼內可以終結會話範圍的應用程式狀態。
語法
WS_SERVICE_CLOSE_CHANNEL_CALLBACK WsServiceCloseChannelCallback;
HRESULT WsServiceCloseChannelCallback(
[in] const WS_OPERATION_CONTEXT *context,
[in, optional] const WS_ASYNC_CONTEXT *asyncContext
)
{...}
參數
[in] context
作業內容。
[in, optional] asyncContext
關於函式是否以異步方式叫用的資訊。
傳回值
這個回呼函式不會傳回值。
備註
傳回的 HRESULT 只會用來查看函式是否以異步方式完成。 透過 HRESULT 失敗或回報失敗,不會影響服務主機基礎結構。
不論 WS_SERVICE_ACCEPT_CHANNEL_CALLBACK 是否成功競爭。 此函式一律會引發。
另請參閱 WS_SERVICE_ACCEPT_CHANNEL_CALLBACK 應用程式可用來建立狀態的關聯,並在接受通道時呼叫。
如需如何使用這個回呼解除關聯會話狀態的範例實作,請參閱以會話為基礎的計算機 範例。
此回呼是可取消的。
範例
HRESULT CALLBACK FreeSessionCalculator (const WS_OPERATION_CONTEXT* context,
const WS_ASYNC_CONTEXT* asyncContext)
{
HRESULT hr = NOERROR;
SessionfulCalculator* calculator = NULL;
hr = WsGetOperationContextProperty (context,
WS_OPERATION_CONTEXT_PROPERTY_CHANNEL_USER_STATE,
&calculator, sizeof (SessionfulCalculator*), NULL);
if (SUCCEEDED(hr) && (calculator != NULL))
{
delete calculator;
}
return NOERROR;
}
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 7 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 R2 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | webservices.h |