Bagikan melalui


Fungsi midl_user_allocate

Fungsi midl_user_allocate adalah prosedur yang harus disediakan oleh pengembang aplikasi RPC. Ini mengalokasikan memori untuk stub RPC dan rutinitas pustaka. Fungsi midl_user_allocate Anda harus cocok dengan prototipe berikut:

void __RPC_FAR * __RPC_USER midl_user_allocate (size_t cBytes);

Parameter cBytes menentukan jumlah byte yang akan dialokasikan. Aplikasi klien dan aplikasi server harus menerapkan fungsi midl_user_allocate kecuali Anda mengkompilasi dalam mode kompatibilitas OSF (/osf). Aplikasi dan stub yang dihasilkan memanggil midl_user_allocate secara langsung atau tidak langsung untuk mengelola objek yang dialokasikan. Contohnya:

  • Aplikasi klien dan server memanggil midl_user_allocate untuk mengalokasikan memori untuk aplikasi, seperti saat membuat simpul baru di pohon atau daftar tertaut.
  • Potret server memanggil midl_user_allocate saat membatalkan nama data ke ruang alamat server.
  • Stub klien memanggil midl_user_allocate saat membatalkan nama data dari server yang dirujuk oleh penunjuk [out]. Perhatikan bahwa untuk penunjuk [in], [out], dan [unik], stub klien memanggil midl_user_allocate hanya jika nilai pointer [unik] null pada input dan berubah menjadi nilai non-null selama panggilan. Jika penunjuk [unik] non-null pada input, stub klien menulis data terkait ke dalam memori yang ada.

Jika midl_user_allocate gagal mengalokasikan memori, itu harus mengembalikan pointer null.

Fungsi midl_user_allocate harus mengembalikan penunjuk rata 8 byte.

Misalnya, program sampel yang disediakan dengan Platform Software Development Kit (SDK) mengimplementasikan midl_user_allocate dalam hal fungsi C malloc:

void __RPC_FAR * __RPC_USER midl_user_allocate(size_t cBytes)
{
    return((void __RPC_FAR *) malloc(cBytes));
}

Catatan

Jika paket RpcSs diaktifkan (misalnya, sebagai hasil dari penggunaan atribut [ enable_allocate]), gunakan RpcSmAllocate untuk mengalokasikan memori di sisi server. Untuk informasi tambahan tentang [enable_allocate], lihat Referensi MIDL.