A midl_user_allocate függvény
A midl_user_allocate függvény olyan eljárás, amelyet az RPC-alkalmazások fejlesztőinek kell megadniuk. Memóriát foglal le az RPC-csonkokhoz és a tár rutinjaihoz. A midl_user_allocate függvénynek meg kell egyeznie a következő prototípusával:
void __RPC_FAR * __RPC_USER midl_user_allocate (size_t cBytes);
A cBytes paraméter határozza meg a lefoglalni kívánt bájtok számát. Az ügyfélalkalmazásnak és a kiszolgálóalkalmazásnak egyaránt implementálnia kell a midl_user_allocate függvényt, kivéve, ha OSF-kompatibilis (/osf) módban van összeállítva. Az alkalmazások és a létrehozott csonkok közvetlenül vagy közvetve meghívják midl_user_allocate a lefoglalt objektumok kezelésére. Például:
- Az ügyfél- és kiszolgálóalkalmazások meghívják a midl_user_allocate, hogy lefoglalják az alkalmazás memóriáját, például amikor új csomópontot hoznak létre egy fában vagy csatolt listában.
- A kiszolgálói csonk meghívja midl_user_allocate, amikor az adatokat leválasztja a kiszolgáló címterébe.
- Az ügyfélcsomópont meghívja midl_user_allocate, amikor leválasztja az adatokat a kiszolgálóról, amelyekre egy [out] mutató hivatkozik. Vegye figyelembe, hogy az [in], [out] és [egyedi] mutatók esetében az ügyfélcsomópont csak akkor midl_user_allocate, ha az [egyedi] mutató értéke null volt a bemeneten, és a hívás során nem null értékűre változik. Ha az [egyedi] mutató nem null értékű volt a bemeneten, az ügyfélcsomópont a társított adatokat a meglévő memóriába írja.
Ha midl_user_allocate nem tudja lefoglalni a memóriát, null mutatót kell visszaadnia.
A midl_user_allocate függvénynek egy 8 bájtos igazítású mutatót kell visszaadnia.
A Platform Software Development Kit (SDK) által biztosított mintaprogramok például midl_user_allocate implementálnak a C függvény malloc:
void __RPC_FAR * __RPC_USER midl_user_allocate(size_t cBytes)
{
return((void __RPC_FAR *) malloc(cBytes));
}
Jegyzet
Ha az RpcSs-csomag engedélyezve van (például a [ enable_allocate] attribútum használata miatt), használja RpcSmAllocate a memória kiszolgálóoldali lefoglalásához. A [enable_allocate] szolgáltatással kapcsolatos további információkért lásd MIDL-referencia.