다음을 통해 공유


WsCloseChannel 함수(webservices.h)

지정된 채널을 닫습니다.

구문

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

매개 변수

[in] channel

닫을 채널을 나타내는 WS_CHANNEL 구조체에 대한 포인터입니다.

[in, optional] asyncContext

함수를 비동기적으로 호출하기 위한 정보를 포함하는 WS_ASYNC_CONTEXT 데이터 구조체에 대한 포인터입니다. NULL 값을 전달하여 함수를 동기적으로 호출합니다.

[in, optional] error

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

반환 값

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

반환 코드 설명
WS_S_ASYNC
비동기 작업은 아직 보류 중입니다.
WS_E_OPERATION_ABORTED
채널이 닫히는 동안 WsAbortChannel 에 대한 호출로 채널 폐쇄가 중단되었습니다.
WS_E_INVALID_OPERATION
채널이 부적절한 상태였습니다(주의 섹션 참조).
WS_E_ENDPOINT_DISCONNECTED
원격 엔드포인트와의 연결이 종료되었습니다.
WS_E_ENDPOINT_FAILURE
원격 엔드포인트에서 요청을 처리할 수 없습니다.
WS_E_INVALID_FORMAT
입력 데이터가 예상 형식이 아니거나 예상 값이 없습니다.
WS_E_OPERATION_TIMED_OUT
할당된 시간 내에 작업이 완료되지 않았습니다.
WS_E_QUOTA_EXCEEDED
할당량을 초과했습니다.
E_OUTOFMEMORY
메모리가 부족하여 작업을 완료할 수 없습니다.
E_INVALIDARG
하나 이상의 인수가 잘못되었습니다.
기타 오류
이 함수는 위에 나열되지 않은 다른 오류를 반환할 수 있습니다.

설명

채널을 열거나 채널을 수락하는 경우 더 이상 필요하지 않은 경우 채널을 닫아야 합니다. 채널이 닫힌 후 연결된 리소스를 안전하게 해제할 수 있습니다.

채널 닫기 프로세스는 이미 시작된 보류 중인 I/O가 완료될 때까지 기다립니다.

현재 채널에 대해 읽거나 쓰는 메시지가 없는 경우 채널은 정상적인 종료를 시도합니다. 그렇지 않으면 채널 자체에서 보류 중인 모든 I/O가 중단되고 채널이 무례하게 종료됩니다.

채널이 정상 종료를 시도하지만 오류가 발생하면 WsCloseChannel 에서 오류를 반환하지만 채널은 여전히 닫힙니다.

이 작업은 채널이 WS_CHANNEL_STATE_OPEN 또는 WS_CHANNEL_STATE_FAULTED 상태인 경우에만 허용됩니다.

채널을 닫으면 읽거나 쓰는 과정에 있는 모든 메시지의 연결이 자동으로 해제됩니다. 따라서 WsCloseChannel을 호출하기 전에 WsAbandonMessage를 호출할 필요가 없습니다.

요구 사항

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