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


Макросы переносимости

Средства RPC достигают независимости модели, вызова и соглашения об именовании путем связывания типов данных и возвращаемых функций в созданных файлах заглушки и файлах заголовков с определениями, характерными для каждой платформы. Эти определения макросов гарантируют, что все типы данных и функции, требующие обозначения __far , указываются в качестве объектов.

На следующем рисунке показаны определения макросов, которые компилятор MIDL применяет к вызовам функций между компонентами RPC:

Схема, показывающая определения макросов, которые MIDL применяется к вызовам функций.

Макросы RPC определяются следующим образом.

Определение Описание
__RPC_API Применяется к вызовам заглушки к пользовательскому приложению. Обе функции находятся в одной исполняемой программе.
__RPC_FAR Применяется к стандартному определению макроса для указателей. Это определение макроса должно отображаться как часть подписи всех пользовательских функций.
__RPC_STUB Применяется к вызовам, выполняемым из библиотеки времени выполнения к заглушку. Эти вызовы можно считать частными.
__RPC_USER Применяется к вызовам, выполняемым библиотекой времени выполнения к пользовательскому приложению. Они пересекают границу между библиотекой DLL и приложением.
RPC_ENTRY Применяется к вызовам приложения или заглушки к библиотеке времени выполнения. Это определение макроса применяется ко всем функциям среды выполнения RPC.

Чтобы правильно связаться с библиотеками времени выполнения Microsoft RPC, заглушками и подпрограммами поддержки, некоторые пользовательские функции также должны включать эти макросы в определение функции. Используйте макрос __RPC_API при определении функций, связанных с управлением памятью, определяемыми пользователем дескрипторами привязки и атрибутом transmit_as , а также при определении подпрограммы запуска контекста, связанной с дескриптором контекста, используйте __RPC_USER макроса. Укажите функции следующим образом:

__RPC_USER midl_user_allocate(...)

__RPC_USER midl_user_free(...)

__RPC_USER handletype_bind(...)

__RPC_USER handletype_unbind(...)

тип __RPC_USER_to_local

тип __RPC_USER_from_local

__RPC_USER type_to_xmit(...)

тип __RPC_USER_from_xmit(...)

тип __RPC_USER_free_local

тип __RPC_USER_free_inst(...)

тип __RPC_USER_free_xmit(...)

__RPC_USER context_rundown(...)

Примечание

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

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Rpc.h