Megosztás a következőn keresztül:


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.