Share via


WS_CHANNEL_ENCODER構造体 (webservices.h)

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

構文

typedef struct _WS_CHANNEL_ENCODER {
  void                                 *createContext;
  WS_CREATE_ENCODER_CALLBACK           createEncoderCallback;
  WS_ENCODER_GET_CONTENT_TYPE_CALLBACK encoderGetContentTypeCallback;
  WS_ENCODER_START_CALLBACK            encoderStartCallback;
  WS_ENCODER_ENCODE_CALLBACK           encoderEncodeCallback;
  WS_ENCODER_END_CALLBACK              encoderEndCallback;
  WS_FREE_ENCODER_CALLBACK             freeEncoderCallback;
} WS_CHANNEL_ENCODER;

メンバー

createContext

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

createEncoderCallback

エンコーダー インスタンスを作成するWS_CREATE_ENCODER_CALLBACKコールバック。

encoderGetContentTypeCallback

メッセージ エンコードするときに呼び出されるWS_ENCODER_GET_CONTENT_TYPE_CALLBACKコールバック。

encoderStartCallback

メッセージのエンコードを開始するために呼び出される WS_ENCODER_START_CALLBACK コールバック。

encoderEncodeCallback

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

encoderEndCallback

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

freeEncoderCallback

エンコーダー インスタンスを解放するWS_FREE_ENCODER_CALLBACKコールバック。

注釈

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

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

エンコーダー コールバックの文法は次のとおりです。


encodercalls := create encoderloop* free
encoderloop  := getcontenttype
             |  getcontenttype encodestart
             |  getcontenttype encodestart (encode*)
             |  getcontenttype encodestart (encode*) encodeend

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

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

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

要件

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