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


Реализация канала Client-Side

Клиентское приложение должно реализовать следующие процедуры, которые заглушки клиента будут вызываться во время передачи данных:

  • Процедура извлечения (для входного канала)
  • Процедура отправки (для выходного канала)
  • Процедура выделения буфера для передачи данных

Все эти процедуры должны использовать аргументы, заданные файлом заголовка MIDL. Кроме того, клиентское приложение должно иметь переменную состояния, чтобы определить, где находить или размещать данные.

Процедура выделения также может быть простой или сложной по мере необходимости. Например, он может возвращать указатель на один и тот же буфер каждый раз, когда заглушка вызывает функцию, или она может выделять разные объемы памяти каждый раз. Если данные уже расположены в правильной форме (например, массив элементов канала), можно координировать процедуру выделения с помощью процедуры извлечения для выделения буфера, который уже содержит данные. В этом случае процедура вытягивания может быть пустой подпрограммой.

Выделение буфера должно находиться в байтах. С другой стороны, процедуры отправки и извлечения управляют элементами, размер которых в байтах зависит от того, как они были определены.

В этом разделе рассматривается реализация клиентских каналов ввода и вывода в следующих разделах: