通話の取り消し
呼び出しの取り消し通知は、サーバー側のサービス操作 およびサービス モデル コールバック 操作を取り消します。 このような取り消しには、次の 2 つの理由のいずれかが考えられます。
- WsAbortServiceHost 関数の呼び出しにより、サービス ホストが操作を停止しました。
- 基になるチャネルでエラーが発生しました。
キャンセル通知を受け取る場合、サービス操作またはサービス モデル コールバックは、WsRegisterOperationForCancel 関数を呼び出して、WS_OPERATION_CANCEL_CALLBACK コールバックを登録する必要があります。
必要に応じて、キャンセル通知の登録の一環として、サービス操作またはサービス モデルコールバックで、アプリケーション固有の状態データと WS_OPERATION_FREE_STATE_CALLBACK コールバックを登録することもできます。
状態データは、WS_OPERATION_CANCEL_CALLBACK コールバックで使用できるようになります。 呼び出しが完了すると、WS_OPERATION_FREE_STATE_CALLBACK コールバックが呼び出され、アプリケーションは状態データを解放できます。
コード例については、「BlockingServiceExample を参照してください。
取り消しコールバックは、サーバー側のサービス操作 またはコールバック関数の有効期間中に 1 回だけ呼び出されます。
呼び出しの取り消しは、パラメーターとして WS_OPERATION_CONTEXT を受け取るすべてのサービス ホスト コールバックで使用できます。
次の API 要素は、呼び出しの取り消しに関連しています。
コールバック | 形容 |
---|---|
WS_OPERATION_CANCEL_CALLBACK | サービス ホストのシャットダウンが中止された結果として非同期サービス操作の取り消しを通知するために、サービス モデルによって呼び出されます。 |
WS_OPERATION_FREE_STATE_CALLBACK | サービス モデルによって呼び出され、キャンセル コールバックに登録された状態データをアプリケーションがクリーンアップできるようにします。 |
機能 | 形容 |
---|---|
WsRegisterOperationForCancelの | サービス操作またはサービス モデル コールバックがキャンセル通知に登録できるようにします。 |