다음을 통해 공유


WsReadMessageStart 함수(webservices.h)

채널에서 다음 메시지의 헤더를 읽고 본문 요소를 읽을 준비를 합니다.

구문

HRESULT WsReadMessageStart(
  [in]           WS_CHANNEL             *channel,
  [in]           WS_MESSAGE             *message,
  [in, optional] const WS_ASYNC_CONTEXT *asyncContext,
  [in, optional] WS_ERROR               *error
);

매개 변수

[in] channel

수신할 채널입니다.

[in] message

받을 메시지입니다.

[in, optional] asyncContext

함수를 비동기적으로 호출하는 방법 또는 동기적으로 호출하는 경우 NULL 에 대한 정보입니다.

[in, optional] error

함수가 실패할 경우 추가 오류 정보를 저장할 위치를 지정합니다.

반환 값

이 함수는 이러한 값 중 하나를 반환할 수 있습니다.

반환 코드 Description
S_OK
메시지 시작이 성공적으로 수신되었습니다.
WS_S_END
채널에서 사용할 수 있는 메시지가 더 이상 없습니다.
WS_S_ASYNC
비동기 작업은 아직 보류 중입니다.
WS_E_OPERATION_ABORTED
작업이 중단되었습니다.
WS_E_INVALID_OPERATION
개체의 현재 상태로 인해 작업이 허용되지 않습니다.
WS_E_ENDPOINT_NOT_FOUND
원격 엔드포인트가 없거나 위치할 수 없습니다.
WS_E_ENDPOINT_ACCESS_DENIED
원격 엔드포인트에서 액세스가 거부되었습니다.
WS_E_ENDPOINT_DISCONNECTED
원격 엔드포인트와의 연결이 종료되었습니다.
WS_E_ENDPOINT_FAILURE
원격 엔드포인트에서 요청을 처리할 수 없습니다.
WS_E_ENDPOINT_NOT_AVAILABLE
원격 엔드포인트가 현재 이 위치에서 서비스되고 있지 않습니다.
WS_E_ENDPOINT_TOO_BUSY
원격 엔드포인트가 오버로드되어 요청을 처리할 수 없습니다.
WS_E_ENDPOINT_UNREACHABLE
원격 엔드포인트에 연결할 수 없습니다.
WS_E_INVALID_ENDPOINT_URL
엔드포인트 주소 URL이 잘못되었습니다.
WS_E_INVALID_FORMAT
입력 데이터가 예상 형식이 아니거나 예상 값이 없습니다.
WS_E_OPERATION_TIMED_OUT
할당된 시간 내에 작업이 완료되지 않았습니다.
WS_E_PROXY_ACCESS_DENIED
HTTP 프록시 서버에서 액세스가 거부되었습니다.
WS_E_PROXY_FAILURE
HTTP 프록시 서버에서 요청을 처리할 수 없습니다.
WS_E_QUOTA_EXCEEDED
할당량을 초과했습니다.
WS_E_SECURITY_VERIFICATION_FAILURE
수신된 데이터에 대한 보안 확인에 성공하지 못했습니다.
WS_E_SECURITY_SYSTEM_FAILURE
Windows Web Services 프레임워크에서 보안 작업이 실패했습니다.
WS_E_SECURITY_TOKEN_EXPIRED
서버에서 보안 토큰이 만료되어 거부되었습니다.
WS_E_PROXY_REQUIRES_BASIC_AUTH
HTTP 프록시 서버에는 HTTP 인증 체계 '기본'이 필요합니다.
WS_E_PROXY_REQUIRES_DIGEST_AUTH
HTTP 프록시 서버에는 HTTP 인증 체계 '다이제스트'가 필요합니다.
WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH
HTTP 프록시 서버에는 HTTP 인증 체계 'negotiate'가 필요합니다.
WS_E_PROXY_REQUIRES_NTLM_AUTH
HTTP 프록시 서버에는 HTTP 인증 체계 'NTLM'이 필요합니다.
WS_E_SERVER_REQUIRES_BASIC_AUTH
원격 엔드포인트에는 HTTP 인증 체계 '기본'이 필요합니다.
WS_E_SERVER_REQUIRES_DIGEST_AUTH
원격 엔드포인트에는 HTTP 인증 체계 '다이제스트'가 필요합니다.
WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH
원격 엔드포인트에는 HTTP 인증 체계 'negotiate'가 필요합니다.
WS_E_SERVER_REQUIRES_NTLM_AUTH
원격 엔드포인트에는 HTTP 인증 체계 'NTLM'이 필요합니다.
CERT_E_EXPIRED
현재 시스템 클록 또는 서명된 파일의 타임스탬프에 대해 확인할 때 필수 인증서가 유효 기간 내에 있지 않습니다.
CERT_E_CN_NO_MATCH
인증서 CN 이름이 전달된 값과 일치하지 않습니다.
CERT_E_UNTRUSTEDROOT
인증서 체인이 처리되었지만 트러스트 공급자가 신뢰하지 않는 루트 인증서에서 종료되었습니다.
CERT_E_WRONG_USAGE
인증서가 요청된 사용에 유효하지 않은 경우
CRYPT_E_REVOCATION_OFFLINE
해지 서버가 오프라인 상태이므로 해지 함수가 해지를 확인할 수 없습니다.
E_OUTOFMEMORY
메모리가 부족합니다.
E_INVALIDARG
하나 이상의 인수가 잘못되었습니다.
기타 오류
이 함수는 위에 나열되지 않은 다른 오류를 반환할 수 있습니다.

설명

그러면 메시지의 헤더를 포함하여 채널에서 다음 메시지의 시작을 읽습니다.

이 함수는 WsReadEnvelopeStart 와 비슷하지만 채널과 함께 사용됩니다.

성공하면 헤더가 메시지에 저장되고 임의 액세스 방식으로 액세스할 수 있습니다(예: WsGetHeader 사용).

메시지는 WS_MESSAGE_STATE_EMPTY 상태여야 합니다. 성공하면 메시지가 WS_MESSAGE_STATE_READING 상태로 전환됩니다.

메시지 본문의 요소를 역직렬화하려면 WsReadBody를 사용합니다. 메시지의 XML 판독기에서 직접 읽으려면 먼저 WS_MESSAGE_PROPERTY_BODY_READER 속성을 사용하여 판독기를 가져옵니다.

채널 입력이 스트리밍되면(WS_STREAMED_INPUT_TRANSFER_MODE) WsFillBody 를 호출하여 본문의 다음 부분을 수신해야 실제로 읽을 수 있습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 R2 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 webservices.h
라이브러리 WebServices.lib
DLL WebServices.dll