다음을 통해 공유


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

디코더의 instance 만드는 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

디코더의 instance 해제하는 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 호출되지 않습니다.

채널이 디코더 instance 사용이 완료되면 WS_FREE_DECODER_CALLBACK 통해 해제됩니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱만 해당]
머리글 webservices.h