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