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


Функция 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.