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 호출로 시작된 쓰기 작업이 취소되었습니다. pData는 VirtualChannelWrite의 pUserData 매개 변수에 지정된 값입니다.
클라이언트 세션의 연결이 끊어지면 쓰기 작업이 취소됩니다. 이 알림을 사용하면 쓰기 작업과 관련된 메모리를 해제할 수 있습니다.
CHANNEL_EVENT_WRITE_COMPLETE
VirtualChannelWrite 호출로 시작된 쓰기 작업이 완료되었습니다. pData는 VirtualChannelWrite의 pUserData 매개 변수에 지정된 값입니다.
[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_FIRST 및 CHANNEL_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 |