Paket Manajemen Memori RpcSs

Pasangan alokator/dealokator default yang digunakan oleh stub dan durasi saat mengalokasikan memori atas nama aplikasi midl_user_allocate/midl_user_free. Namun, Anda dapat memilih paket RpcSs alih-alih default dengan menggunakan atribut ACF [enable_allocate]. Paket RpcSs terdiri dari fungsi RPC yang dimulai dengan awalan RpcSs atau RpcSm. Paket RpcSs tidak disarankan untuk aplikasi Windows.

Catatan

Paket Manajemen Memori Rpcss sudah usang. Disarankan agar midl_user_allocate dan midl_user_free digunakan di tempatnya.

 

Dalam mode /osf , paket RpcSs diaktifkan untuk stub yang dihasilkan MIDL secara otomatis ketika pointer penuh digunakan, ketika argumen memerlukan alokasi memori, atau sebagai akibat dari menggunakan atribut [enable_allocate ]. Dalam mode default (Microsoft extended), paket RpcSs hanya diaktifkan saat atribut [enable_allocate] digunakan. Atribut [enable_allocate] memungkinkan lingkungan RpcSs oleh tikungan sisi server. Sisi klien menjadi waspada terhadap kemungkinan bahwa paket RpcSs dapat diaktifkan. Dalam mode /osf , sisi klien tidak terpengaruh.

Ketika paket RpcSs diaktifkan, alokasi memori di sisi server dicapai dengan alokator manajemen memori RpcSs privat dan pasangan dealokator. Anda dapat mengalokasikan memori menggunakan mekanisme yang sama dengan memanggil RpcSmAllocate (atau RpcSsAllocate). Setelah kembali dari stub server, semua memori yang dialokasikan oleh paket RpcSs secara otomatis dikosongkan. Contoh berikut menunjukkan cara mengaktifkan paket RpcSs:

/* ACF file fragment */

[ 
    implicit_handle(handle_t GlobalHandle),
    enable_allocate
]
interface iface
{
}

/*Server management routine fragment. Replaces p=midl_user_allocate(size); */

    p=RpcSsAllocate(size);                /*raises exception */
    p=RpcSmAllocate(size, &status);       /*returns error code */

Aplikasi Anda dapat secara eksplisit membebaskan memori dengan memanggil fungsi RpcSsFree atau RpcSmFree . Perhatikan bahwa fungsi-fungsi ini sebenarnya tidak membebaskan memori. Mereka menandainya untuk dihapus. Pustaka RPC merilis memori saat program Anda memanggil RpcSsDisableAllocate atau RpcSsDisableAllocate.

Anda juga dapat mengaktifkan lingkungan manajemen memori untuk aplikasi Anda dengan memanggil rutinitas RpcSmEnableAllocate (dan Anda dapat menonaktifkannya dengan memanggil rutinitas RpcSmDisableAllocate ). Setelah diaktifkan, kode aplikasi dapat mengalokasikan dan membatalkan alokasi memori dengan memanggil fungsi dari paket RpcSs.