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_SESSIONでWS_TCP_CHANNEL_BINDINGを使用する場合、コンテンツ タイプはチャネルに対して固定されます。 この場合、 WS_ENCODER_GET_CONTENT_TYPE_CALLBACK は、すべてのメッセージのコンテンツ タイプに対してまったく同じ値を返す必要があります。
エンコーダー インスタンスの使用が完了すると、 WS_FREE_ENCODER_CALLBACKを介してチャネルが解放されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリのみ] |
Header | webservices.h |