WsReceiveMessage 함수(webservices.h)
메시지를 수신하고 메시지 본문을 값으로 역직렬화합니다.
구문
HRESULT WsReceiveMessage(
[in] WS_CHANNEL *channel,
[in] WS_MESSAGE *message,
const WS_MESSAGE_DESCRIPTION **messageDescriptions,
[in] ULONG messageDescriptionCount,
[in] WS_RECEIVE_OPTION receiveOption,
[in] WS_READ_OPTION readBodyOption,
[in, optional] WS_HEAP *heap,
void *value,
[in] ULONG valueSize,
ULONG *index,
[in, optional] const WS_ASYNC_CONTEXT *asyncContext,
[in, optional] WS_ERROR *error
);
매개 변수
[in] channel
수신할 채널입니다.
[in] message
받는 데 사용되는 메시지 개체입니다.
메시지는 WS_MESSAGE_STATE_EMPTY 상태여야 합니다.
messageDescriptions
예상되는 메시지 유형에 대한 메타데이터를 지정하는 메시지 설명에 대한 포인터 배열입니다.
[in] messageDescriptionCount
messageDescriptions 배열의 항목 수입니다.
[in] receiveOption
메시지가 필요한지 여부입니다. 자세한 내용은 WS_RECEIVE_OPTION 참조하세요.
[in] readBodyOption
본문 요소가 필요한지 여부 및 값을 할당하는 방법입니다.
자세한 내용은 WS_READ_OPTION 참조하세요.
[in, optional] heap
역직렬화된 값을 저장할 힙입니다. 지정된 형식에 힙이 필요하지 않은 경우 이 매개 변수는 NULL일 수 있습니다.
value
이 매개 변수의 해석은 WS_READ_OPTION 따라 달라집니다.
receiveOption 매개 변수에 대해 WS_RECEIVE_OPTIONAL_MESSAGE 지정되고 채널에서 더 이상 메시지를 사용할 수 없는 경우 이 매개 변수는 터치되지 않습니다. 이 경우 함수는 WS_S_END 반환합니다. ( Windows Web Services 반환 값을 참조하세요.)
일치하는 WS_MESSAGE_DESCRIPTION bodyElementDescription이 NULL인 경우 이 매개 변수는 터치되지 않습니다. 이 경우 매개 변수를 지정할 필요가 없습니다.
[in] valueSize
이 매개 변수의 해석은 WS_READ_OPTION 따라 달라집니다.
index
receiveOption 매개 변수에 대해 WS_RECEIVE_OPTIONAL_MESSAGE 지정되고 채널에서 더 이상 메시지를 사용할 수 없는 경우 이 매개 변수는 그대로 유지됩니다. 이 경우 함수는 WS_S_END 반환합니다.
그렇지 않으면 함수가 성공하면 일치하는 항목을 나타내는 메시지 설명 배열에 0부터 시작하는 인덱스가 포함됩니다.
호출자가 값에 관심이 없는 경우(예: 메시지 설명이 하나만 있는 경우) 이 매개 변수는 NULL 일 수 있습니다.
[in, optional] asyncContext
함수를 비동기적으로 호출하는 방법 또는 동기적으로 호출하는 경우 NULL 에 대한 정보입니다.
[in, optional] error
함수가 실패할 경우 추가 오류 정보를 저장할 위치를 지정합니다.
반환 값
이 함수는 이러한 값 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
|
비동기 작업은 아직 보류 중입니다. |
|
수신 옵션 WS_RECEIVE_OPTIONAL_MESSAGE 지정되었으며 채널에 사용할 수 있는 메시지가 더 이상 없습니다. |
|
받은 메시지에 오류가 포함되었습니다. WsGetErrorProperty를 사용하여 WS_ERROR 오류를 추출할 수 있습니다. |
|
작업이 중단되었습니다. |
|
개체의 현재 상태로 인해 작업이 허용되지 않습니다. |
|
원격 엔드포인트가 없거나 위치할 수 없습니다. |
|
원격 엔드포인트에서 액세스가 거부되었습니다. |
|
원격 엔드포인트와의 연결이 종료되었습니다. |
|
원격 엔드포인트에서 요청을 처리할 수 없습니다. |
|
원격 엔드포인트가 현재 이 위치에서 서비스되고 있지 않습니다. |
|
원격 엔드포인트가 오버로드되어 요청을 처리할 수 없습니다. |
|
원격 엔드포인트에 연결할 수 없습니다. |
|
엔드포인트 주소 URL이 잘못되었습니다. |
|
입력 데이터가 예상 형식이 아니거나 예상 값이 없습니다. |
|
할당된 시간 내에 작업이 완료되지 않았습니다. |
|
HTTP 프록시 서버에서 액세스가 거부되었습니다. |
|
HTTP 프록시 서버에서 요청을 처리할 수 없습니다. |
|
할당량을 초과했습니다. |
|
수신된 데이터에 대한 보안 확인에 성공하지 못했습니다. |
|
Windows Web Services 프레임워크에서 보안 작업이 실패했습니다. |
|
서버에서 보안 토큰이 만료되어 거부되었습니다. |
|
HTTP 프록시 서버에는 HTTP 인증 체계 '기본'이 필요합니다. |
|
HTTP 프록시 서버에는 HTTP 인증 체계 '다이제스트'가 필요합니다. |
|
HTTP 프록시 서버에는 HTTP 인증 체계 'negotiate'가 필요합니다. |
|
HTTP 프록시 서버에는 HTTP 인증 체계 'NTLM'이 필요합니다. |
|
원격 엔드포인트에는 HTTP 인증 체계 '기본'이 필요합니다. |
|
원격 엔드포인트에는 HTTP 인증 체계 '다이제스트'가 필요합니다. |
|
원격 엔드포인트에는 HTTP 인증 체계 'negotiate'가 필요합니다. |
|
원격 엔드포인트에는 HTTP 인증 체계 'NTLM'이 필요합니다. |
|
현재 시스템 클록 또는 서명된 파일의 타임스탬프에 대해 확인할 때 필수 인증서가 유효 기간 내에 있지 않습니다. |
|
인증서 CN 이름이 전달된 값과 일치하지 않습니다. |
|
인증서 체인이 처리되었지만 트러스트 공급자가 신뢰하지 않는 루트 인증서에서 종료되었습니다. |
|
인증서가 요청된 사용에 유효하지 않은 경우 |
|
해지 서버가 오프라인 상태이므로 해지 함수가 해지를 확인할 수 없습니다. |
|
메모리가 부족합니다. |
|
하나 이상의 인수가 잘못되었습니다. |
|
이 함수는 위에 나열되지 않은 다른 오류를 반환할 수 있습니다. |
설명
이 함수는 본문을 역직렬화하기 위해 예상된 메시지 형식에 대한 메타데이터를 사용합니다.
메타데이터는 WS_MESSAGE_DESCRIPTION포인터의 배열입니다.
각 메시지 설명에는 메시지 동작과 일치하는 데 사용되는 작업 값과 본문 요소에 대한 메타데이터를 제공하는 WS_ELEMENT_DESCRIPTION 포함됩니다.
메시지 헤더가 수신되면 함수는 배열을 검사하여 작업과 일치하는 항목을 찾습니다. 일치하는 첫 번째 메시지 설명은 본문을 역직렬화하는 데 사용되며 배열에 있는 이 메시지 설명의 인덱스(0부터 시작)는 index out 매개 변수에 반환됩니다. 함수가 성공하면 인덱스 출력 매개 변수는 항상 사용된 메시지 설명을 나타내도록 설정됩니다.
메시지 설명과 일치하려면 작업 값이 메시지의 값과 정확히 일치해야 합니다. WS_MESSAGE_DESCRIPTION 작업이 NULL인 경우 작업은 항상 일치합니다. 수신된 메시지에 작업 헤더가 없거나 작업이 무엇인지에 관계없이 본문이 항상 동일한 경우에 사용할 수 있습니다.
본문이 비어 있을 것으로 예상되는 경우 WS_MESSAGE_DESCRIPTION bodyElementDescription 필드는 NULL일 수 있습니다.
bodyElementDescription이 NULL이 아닌 경우 이 함수는 WsReadBody에 설명된 대로 본문을 역직렬화합니다.
메시지를 받은 후 WsGetHeader 또는 WsGetCustomHeader 를 사용하여 헤더 를 검사할 수 있습니다.
요구 사항
지원되는 최소 클라이언트 | Windows 7 [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2008 R2 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | webservices.h |
라이브러리 | WebServices.lib |
DLL | WebServices.dll |