다음을 통해 공유


CHANNEL_OPEN_EVENT_FN 콜백 함수(cchannel.h)

원격 데스크톱 서비스가 특정 가상 채널에 대한 이벤트를 클라이언트 DLL에 알리기 위해 호출하는 애플리케이션 정의 콜백 함수입니다.

PCHANNEL_OPEN_EVENT_FN 형식은 이 콜백 함수에 대한 포인터를 정의합니다. VirtualChannelOpenEvent 는 애플리케이션 정의 또는 라이브러리 정의 함수 이름의 자리 표시자입니다.

구문

CHANNEL_OPEN_EVENT_FN ChannelOpenEventFn;

VOID VCAPITYPE ChannelOpenEventFn(
  [in] DWORD openHandle,
  [in] UINT event,
  [in] LPVOID pData,
  [in] UINT32 dataLength,
  [in] UINT32 totalLength,
  [in] UINT32 dataFlags
)
{...}

매개 변수

[in] openHandle

가상 채널에 대한 핸들입니다. VirtualChannelOpen 함수의 pOpenHandle 매개 변수에 반환된 핸들입니다.

[in] event

알림을 발생시킨 이벤트를 나타냅니다. 이 매개 변수는 다음 값 중 하나일 수 있습니다.

CHANNEL_EVENT_DATA_RECEIVED

가상 채널은 서버 끝에서 데이터를 수신했습니다. pData 는 데이터 청크에 대한 포인터입니다. dataLength 는 이 청크의 크기를 나타냅니다. totalLength 는 서버에서 작성한 데이터의 총 크기를 나타냅니다.

CHANNEL_EVENT_WRITE_CANCELLED

VirtualChannelWrite 호출로 시작된 쓰기 작업이 취소되었습니다. pDataVirtualChannelWritepUserData 매개 변수에 지정된 값입니다.

클라이언트 세션의 연결이 끊어지면 쓰기 작업이 취소됩니다. 이 알림을 사용하면 쓰기 작업과 관련된 메모리를 해제할 수 있습니다.

CHANNEL_EVENT_WRITE_COMPLETE

VirtualChannelWrite 호출로 시작된 쓰기 작업이 완료되었습니다. pDataVirtualChannelWritepUserData 매개 변수에 지정된 값입니다.

[in] pData

이벤트에 대한 추가 데이터에 대한 포인터입니다. 데이터 형식은 이벤트 설명의 앞부분에서 설명한 대로 이벤트에 따라 달라집니다.

이벤트가CHANNEL_EVENT_DATA_RECEIVED 경우 서버에서 작성한 데이터는 CHANNEL_CHUNK_LENGTH 바이트 이하의 청크로 나뉩니다. dataFlags 매개 변수는 현재 청크가 서버에서 작성한 데이터 블록의 시작, 중간 또는 끝에 있는지 여부를 나타냅니다.

이 매개 변수의 크기는 dataLength 매개 변수에 지정된 값보다 클 수 있습니다. 애플리케이션은 dataLength로 지정된 바이트 수만 읽어야 합니다.

[in] dataLength

pData 버퍼에 있는 데이터의 크기(바이트)를 지정합니다.

[in] totalLength

가상 채널의 서버 끝에 대한 단일 쓰기 작업으로 작성된 데이터의 총 크기(바이트)를 지정합니다.

[in] dataFlags

CHANNEL_EVENT_DATA_RECEIVED 이벤트에서 수신되는 데이터의 청크에 대한 정보를 제공합니다. 다음 비트 플래그가 설정됩니다.

다음 목록의 값을 비교할 때 '==' 연산자를 사용하여 직접 비교하면 안 됩니다. 대신 설명된 비교 방법을 사용합니다.

CHANNEL_FLAG_FIRST

청크는 단일 쓰기 작업으로 작성된 데이터의 시작입니다.

이 플래그를 비교할 때 비트 비교를 사용합니다.

CHANNEL_FLAG_LAST

청크는 단일 쓰기 작업으로 작성된 데이터의 끝입니다.

이 플래그를 비교할 때 비트 비교를 사용합니다.

CHANNEL_FLAG_MIDDLE

이것이 기본값입니다. 청크는 단일 쓰기 작업으로 작성된 데이터 블록의 중간에 있습니다.

비트 비교를 사용하여 이 플래그 값을 직접 비교하지 마세요. 대신 비트 비교를 사용하여 플래그 값이 CHANNEL_FLAG_FIRST 또는CHANNEL_FLAG_LAST 아닌지 확인합니다. 이 작업은 비교를 사용하여 수행됩니다 Result = !(flags & CHANNEL_FLAG_FIRST) && !(flags & CHANNEL_FLAG_LAST).

CHANNEL_FLAG_ONLY

CHANNEL_FLAG_FIRSTCHANNEL_FLAG_LAST 값을 결합합니다. 청크에는 단일 쓰기 작업의 모든 데이터가 포함됩니다.

이 플래그를 비교할 때 비트 비교를 사용합니다.

반환 값

이 함수에는 반환 값이 없습니다.

설명

클라이언트 DLL은 VirtualChannelOpen 함수를 사용하여 특정 가상 채널에 대해 VirtualChannelOpenEvent 함수를 등록합니다.

VirtualChannelOpen에 대한 여러 호출에 동일한 VirtualChannelOpenEvent 함수를 사용할 수 있습니다.

이 함수는 실행되는 동안 다른 이벤트 형식으로 호출할 수 있습니다. 예를 들어 CHANNEL_EVENT_DATA_RECEIVED이벤트를 처리하는 동안 CHANNEL_EVENT_WRITE_COMPLETE 또는 CHANNEL_EVENT_WRITE_CANCELLED 호출될 수 있습니다. 이 함수는 현재 처리 중인 것과 동일한 이벤트 형식으로 호출되지 않습니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 cchannel.h

추가 정보

VirtualChannelOpen