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_SESSIONでWS_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 |