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


Файл прокси-сервера интерфейса

Прокси-файл интерфейса (U_p.c) — это файл C, содержащий подпрограммы, эквивалентные подпрограммам в файлах заглушки клиента и серверной заглушки интерфейса объекта (COM). Этот файл содержит реализации суррогатных подпрограмм для клиента и сервера во встроенном режиме компилятора или эквивалентных данных и thunks в интерпретируемых режимах, а также другие соответствующие данные COM-клея, такие как прокси-серверы и заглушки VTable.

Прокси-файл интерфейса содержит вспомогательные подпрограммы и данные только для методов интерфейсов, определенных в текущем IDL-файле. Чтобы уточнить это поведение, в этом разделе используется расширенный пример. При компиляции IDL-файла с интерфейсом, таким как IFaceB, который наследуется от IFaceA, вспомогательные данные и подпрограммы, связанные с IFaceB, создаются в текущий прокси-файл, а вспомогательные данные и подпрограммы, связанные с базовым интерфейсом IFaceA, находятся в прокси-сервере, созданном из IDL-файла, содержащего определение IFaceA. Компилятор создает все данные, необходимые для идентификации суррогатов базового интерфейса и делегирования им при необходимости для поддержки методов IFaceA, используемых через интерфейс IFaceB.

Для каждого метода в интерфейсе в текущем IDL-файле прокси-файл содержит следующие два суррогатных метода при компиляции в смешанном режиме (/Os) и эквивалентные данные интерпретатора при компиляции в режиме интерпретатора (/Oi).

  • Суррогат на стороне клиента, например IFaceB_Method_Proxy в этом примере.

    Этот суррогат на стороне клиента является виртуальной точкой входа, в которую отправляется клиент, например IFaceB::Method. Он маршалирует входные аргументы в передаваемую форму, передает маршалированные аргументы вместе со сведениями, определяющими интерфейс и операцию, а затем отменяет маршалирование возвращаемого значения и всех выходных аргументов при возвращении вызванной операции.

  • Суррогат на стороне сервера, например, IFaceB_Method_Stub .

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

Имя по умолчанию для файла прокси-сервера, созданного на основе file.idl, — file_p.c. Используйте параметр компилятора /proxy MIDL, чтобы переопределить имя прокси-файла интерфейса по умолчанию. Параметры /env и /out влияют на этот файл.