다음을 통해 공유


WTSVirtualChannelRead 함수(wtsapi32.h)

가상 채널의 서버 끝에서 데이터를 읽습니다.

WTSVirtualChannelRead 는 가상 채널의 클라이언트 끝에서 VirtualChannelWrite 호출로 작성된 데이터를 읽습니다.

구문

BOOL WTSVirtualChannelRead(
  [in]  HANDLE hChannelHandle,
  [in]  ULONG  TimeOut,
  [out] PCHAR  Buffer,
  [in]  ULONG  BufferSize,
  [out] PULONG pBytesRead
);

매개 변수

[in] hChannelHandle

WTSVirtualChannelOpen 함수에서 연 가상 채널에 대한 핸들입니다.

[in] TimeOut

시간 제한(밀리초)을 지정합니다. TimeOut이 0이면 읽을 데이터가 없는 경우 WTSVirtualChannelRead가 즉시 반환됩니다. TimeOut이 INFINITE(Winbase.h에 정의됨)인 경우 함수는 읽을 데이터가 있을 때까지 무기한 대기합니다.

[out] Buffer

가상 채널의 서버 끝에서 읽은 데이터 청크를 수신하는 버퍼에 대한 포인터입니다. 서버가 단일 WTSVirtualChannelRead 호출에서 수신할 수 있는 최대 데이터 양은 CHANNEL_CHUNK_LENGTH 바이트입니다. 클라이언트의 VirtualChannelWrite 호출이 더 큰 데이터 블록을 작성하는 경우 서버는 여러 WTSVirtualChannelRead 호출을 수행해야 합니다.

경우에 따라 원격 데스크톱 서비스는 WTSVirtualChannelRead 함수에서 읽은 각 데이터 청크의 시작 부분에 CHANNEL_PDU_HEADER 구조를 배치합니다. 이는 클라이언트 DLL이 가상 채널을 초기화하기 위해 VirtualChannelInit 함수를 호출할 때 CHANNEL_OPTION_SHOW_PROTOCOL 옵션을 설정하는 경우에 발생합니다. 이는 채널이 IWTSVirtualChannel::Write 메서드를 사용하여 작성된 동적 가상 채널인 경우에도 발생합니다. 그렇지 않으면 버퍼는 VirtualChannelWrite 호출에 기록된 데이터만 받습니다.

[in] BufferSize

버퍼의 크기(바이트)를 지정합니다. 버퍼의 데이터 청크 앞에 CHANNEL_PDU_HEADER 구조체가 있는 경우 이 매개 변수의 값은 적어도 CHANNEL_PDU_LENGTH 합니다. 그렇지 않으면 이 매개 변수의 값 은 CHANNEL_CHUNK_LENGTH 이상이어야 합니다.

[out] pBytesRead

읽은 바이트 수를 수신하는 변수에 대한 포인터입니다.

반환 값

함수가 성공하면 반환 값은 0이 아닌 값입니다.

함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.

설명

참고WTSVirtualChannelRead 는 스레드로부터 안전하지 않습니다. 여러 스레드에서 가상 채널에 액세스하거나 가상 채널을 통해 비동기 IO를 수행하려면 WTSVirtualFileHandle과 함께 WTSVirtualChannelQuery를 사용합니다.
 

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 wtsapi32.h
라이브러리 Wtsapi32.lib
DLL Wtsapi32.Dll

추가 정보

CHANNEL_PDU_HEADER

IWTSVirtualChannel::Write

VirtualChannelWrite

WTSVirtualChannelQuery

WTSVirtualChannelWrite