WsAbandonMessage 함수(webservices.h)

지정된 채널에서 지정된 메시지 의 나머지 부분을 건너뜁니다.

구문

HRESULT WsAbandonMessage(
  [in]           WS_CHANNEL *channel,
  [in]           WS_MESSAGE *message,
  [in, optional] WS_ERROR   *error
);

매개 변수

[in] channel

메시지를 읽거나 쓰는 채널을 나타내는 WS_CHANNEL 구조체에 대한 포인터입니다.

[in] message

중단할 메시지를 나타내는 WS_MESSAGE 구조체에 대한 포인터입니다. WsWriteMessageStart 또는 WsReadMessageStart 함수에 전달된 것과 동일한 메시지여야 합니다.

[in, optional] error

함수가 실패할 경우 추가 오류 정보를 수신하는 WS_ERROR 구조체에 대한 포인터입니다.

반환 값

함수가 성공하면 NO_ERROR 반환합니다. 그렇지 않으면 HRESULT 오류 코드가 반환됩니다.

반환 코드 설명
WS_E_INVALID_OPERATION
채널이 WS_CHANNEL_STATE_OPEN 또는 WS_CHANNEL_STATE_FAULTED 상태가 아닙니다. 채널 상태의 경우 WS_CHANNEL_STATE 열거형을 참조하세요.
E_INVALIDARG
지정된 메시지가 현재 지정된 채널에서 읽거나 쓰여지지 않습니다.

설명

WsAbandonMessage 는 메시지의 나머지 내용을 읽거나 쓰는 것을 건너뛰고 채널의 다음 메시지를 읽거나 쓸 수 있도록 하는 데 사용됩니다. 이와 관련하여 다음 상태 다이어그램과 같이 WsReadMessageEnd 또는 WsWriteMessageEnd 함수의 대안입니다.

WsAbandonMessage 함수로 인한 상태 전환이 WSReadMessageEnd 및 WsWriteMessageEnd 함수와 어떻게 다른지 보여 주는 다이어그램

읽기 작업의 경우 애플리케이션이 메시지 데이터를 계속 읽을 필요가 없는 경우(예: 메시지가 애플리케이션의 요구 사항을 충족하지 않는 경우) 애플리케이션은 일반적으로 WsAbandonMessage 를 호출합니다. 메시지에 잘못된 형식의 XML이 포함되어 있거나 XML 판독 기에서 메시지를 읽는 동안 오류가 발생한 경우에도 이 함수를 사용할 수 있습니다.

채널이 스트리밍되면(WS_TRANSFER_MODE 열거형의 WS_STREAMED_INPUT_TRANSFER_MODE 값 참조) 스트리밍된 메시지 데이터의 나머지 부분을 읽고 채널에 대한 WsReadMessageStart 또는 WsCloseChannel 에 대한 다음 호출과 함께 자동으로 삭제됩니다. 채널이 스트리밍되지 않으면 읽지 않은 버퍼링된 메시지 데이터는 단순히 삭제됩니다.

쓰기 작업의 경우 애플리케이션은 XML 작성기에서 반환한 오류와 같은 일부 오류가 발생했거나 다른 이유로 인해 메시지 생성을 중지해야 하므로 애플리케이션에서 메시지를 계속 작성할 수 없는 경우 일반적으로 WsAbandonMessage를 호출합니다.

채널이 스트리밍되면(WS_TRANSFER_MODE 열거형의 WS_STREAMED_INPUT_TRANSFER_MODE 값 참조) 메시지 데이터가 잘리고 원격 당사자가 읽을 때 오류가 발생할 수 있습니다. 채널이 스트리밍되지 않으면 메시지의 버퍼링된 데이터는 전송되지 않았기 때문에 단순히 삭제됩니다.

이 함수를 사용하면 오류가 발생하더라도 채널 사용자가 채널을 열어 두고 추가 메시지(예: 오류 보내기)를 보내거나 받을 수 있습니다. 반면 , WsAbortChannel 은 채널 오류를 발생합니다. 일반적인 사용법은 먼저 메시지를 포기하고 오류를 보내려고 시도하는 것입니다. 실패하면 채널을 중단할 수 있습니다.

이 함수는 차단 I/O를 수행하지 않습니다.

이 함수는 채널이 WS_CHANNEL_STATE_OPEN 또는 WS_CHANNEL_STATE_FAULTED 상태인 경우에만 유효합니다. 채널 상태의 경우 WS_CHANNEL_STATE 열거형을 참조하세요.

지정된 메시지는 현재 읽는 메시지이거나 지정된 채널에 대해 작성 중인 현재 메시지여야 합니다.

올바르게 호출되는 경우 이 함수는 실패하지 않습니다(예: 시스템 리소스 부족으로 인해).

요구 사항

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