Функция midl_user_free
Разработчики RPC должны предоставить функцию midl_user_free. Она освобождает память, выделенную midl_user_allocate для заглушки RPC и процедур библиотеки. Функция midl_user_free должна соответствовать следующему прототипу:
void __RPC_USER midl_user_free(void * pBuffer);
Параметр pBuffer указывает указатель на память, которая должна быть освобождена. Как клиентское, так и серверное приложение должны реализовывать функцию midl_user_free , если компиляция не выполняется в режиме совместимости OSF (/osf). Функция midl_user_free должна иметь возможность освободить все хранилище, выделенное midl_user_allocate.
Приложения и заглушки вызывают midl_user_free при работе с выделенными объектами:
- Серверное приложение должно вызывать midl_user_free для освобождения памяти, выделенной приложением, например при удалении динамически выделенного узла данных.
- Заглушка сервера вызывает midl_user_free для освобождения памяти на сервере после маршалинга всех аргументов [out], аргументов [in],[out] и возвращаемого значения функции.
Например, пример программы RPC для Windows, отображающий "Hello, world", реализует midl_user_free с точки зрения свободной функции C:
void __RPC_USER midl_user_free(void __RPC_FAR * p)
{
free(p);
}
Примечание
Если пакет RpcSs включен (например, в результате использования атрибута [ enable_allocate], серверная программа должна использовать RpcSmFree для освобождения памяти. Дополнительные сведения см. в разделе Пакет управления памятью RpcSs.