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


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

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

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

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

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

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

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

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

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