Share via


WS_CHANNEL_DECODER構造体 (webservices.h)

受信したメッセージのコンテンツ タイプとエンコードされたバイトを変換できるコールバックのセットを指定するために使用される構造体。

構文

typedef struct _WS_CHANNEL_DECODER {
  void                                 *createContext;
  WS_CREATE_DECODER_CALLBACK           createDecoderCallback;
  WS_DECODER_GET_CONTENT_TYPE_CALLBACK decoderGetContentTypeCallback;
  WS_DECODER_START_CALLBACK            decoderStartCallback;
  WS_DECODER_DECODE_CALLBACK           decoderDecodeCallback;
  WS_DECODER_END_CALLBACK              decoderEndCallback;
  WS_FREE_DECODER_CALLBACK             freeDecoderCallback;
} WS_CHANNEL_DECODER;

メンバー

createContext

WS_CREATE_DECODER_CALLBACKに渡されるコンテキスト。

createDecoderCallback

デコーダーのインスタンスを作成する WS_CREATE_DECODER_CALLBACK コールバック。

decoderGetContentTypeCallback

メッセージ コンテンツ タイプを取得するために呼び出されるWS_DECODER_GET_CONTENT_TYPE_CALLBACKコールバック。

decoderStartCallback

メッセージ デコードの開始時に呼び出されるWS_DECODER_START_CALLBACKコールバック。

decoderDecodeCallback

メッセージ デコードするために呼び出されるWS_DECODER_DECODE_CALLBACKコールバック。

decoderEndCallback

メッセージ デコードの最後に呼び出されるWS_DECODER_END_CALLBACKコールバック。

freeDecoderCallback

デコーダーのインスタンスを解放する WS_FREE_DECODER_CALLBACK コールバック。

注釈

WS_CHANNELは、メッセージが受信されるとすぐにエンコードされたバイトを圧縮解除、変更、またはその他の方法で変換することができます。 WS_CHANNEL_DECODERは、これらの変更をインターセプトして実行するために必要なフックを提供します。

チャネルを作成するときは、適切な関数を 使用してWS_CHANNEL_PROPERTY_DECODER を設定する必要があります。

指定されたコールバックは、次の文法に従って呼び出されます。


decodercalls := create decoderloop* free
decoderloop  := decodestart
             |  decodestart getcontenttype
             |  decodestart getcontenttype (decode*)
             |  decodestart getcontenttype (decode*) decodeend

メッセージの読み取り中にチャネルまたはデコーダーでエラーが発生した場合、デコーダーにメッセージの完全なデコード シーケンスが表示されない場合があります。 デコーダーは、呼び出されたコールバックに基づいて適切な状態への移行を処理するように準備する必要があります。

WS_CHANNEL_TYPE_SESSIONWS_TCP_CHANNEL_BINDINGを使用する場合、コンテンツ タイプはチャネルに対して固定されます。 この場合、 WS_DECODER_GET_CONTENT_TYPE_CALLBACK は、すべてのメッセージのコンテンツ タイプに対してまったく同じ値を返す必要があります。

WS_DECODER_DECODE_CALLBACKが 0 バイトを返すまで、WS_DECODER_END_CALLBACKは呼び出されません。

デコーダー インスタンスを使用してチャネルが終了すると、 WS_FREE_DECODER_CALLBACKを介してチャネルが解放されます。

要件

要件
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
Header webservices.h