Поделиться через


Функция 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 равно нулю, функция WTSVirtualChannelRead немедленно возвращает значение , если нет данных для чтения. Если timeOut имеет значение INFINITE (определено в Winbase.h), функция ожидает неограниченное время, пока не будет считываться данные.

[out] Buffer

Указатель на буфер, который получает фрагмент данных, считываемых с конца сервера виртуального канала. Максимальный объем данных, которые сервер может получить в одном вызове WTSVirtualChannelRead , составляет CHANNEL_CHUNK_LENGTH байтов. Если вызов VirtualChannelWrite клиента записывает большой блок данных, сервер должен выполнить несколько вызовов WTSVirtualChannelRead .

В некоторых случаях службы удаленных рабочих столов помещает структуру CHANNEL_PDU_HEADER в начало каждого блока данных, считываемого функцией WTSVirtualChannelRead . Это произойдет, если клиентская библиотека DLL задает параметр CHANNEL_OPTION_SHOW_PROTOCOL при вызове функции VirtualChannelInit для инициализации виртуального канала. Это также произойдет, если канал является динамическим виртуальным каналом, записанным с помощью метода IWTSVirtualChannel::Write . В противном случае буфер получает только данные, записанные в вызове VirtualChannelWrite .

[in] BufferSize

Указывает размер буфера в байтах. Если фрагменту данных в Buffer предшествует структура CHANNEL_PDU_HEADER , значение этого параметра должно быть не менее CHANNEL_PDU_LENGTH. В противном случае значение этого параметра должно быть не менее CHANNEL_CHUNK_LENGTH.

[out] pBytesRead

Указатель на переменную, которая получает число прочитанных байтов.

Возвращаемое значение

Если функция выполняется успешно, возвращаемое значение будет ненулевым.

Если функция выполняется неудачно, возвращается нулевое значение. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.

Комментарии

ПримечаниеWTSVirtualChannelRead не является потокобезопасным. Чтобы получить доступ к виртуальному каналу из нескольких потоков или выполнить асинхронные операции ввода-вывода через виртуальный канал, используйте WTSVirtualChannelQuery с WTSVirtualFileHandle.
 

Требования

Требование Значение
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header wtsapi32.h
Библиотека Wtsapi32.lib
DLL Wtsapi32.Dll

См. также раздел

CHANNEL_PDU_HEADER

IWTSVirtualChannel::Write

VirtualChannelWrite

WTSVirtualChannelQuery

WTSVirtualChannelWrite