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


RpcSs memóriakezelési csomag

Az alapértelmezett kiosztó/felszabadító pár, amelyet a csonkok használnak, és a futási idő, amikor a memória az alkalmazás nevében midl_user_allocate/midl_user_free. Az RpcSs-csomagot azonban az alapértelmezett helyett az [enable_allocate] ACF attribútummal választhatja ki. Az RpcSs-csomag olyan RPC-függvényekből áll, amelyek RpcSs vagy RpcSmelőtaggal kezdődnek. Az RpcSs-csomag windowsos alkalmazásokhoz nem ajánlott.

Jegyzet

Az Rpcss memóriakezelési csomag elavult. Javasoljuk, hogy a helyén midl_user_allocate és midl_user_free használnak.

 

/osf módban az RpcSs-csomag automatikusan engedélyezve van a MIDL által generált csonkokhoz, ha teljes mutatót használ, amikor az argumentumok memóriafoglalást igényelnek, vagy a [enable_allocate] attribútum használata miatt. Az alapértelmezett (Microsoft extended) módban az RpcSs-csomag csak akkor engedélyezett, ha a [enable_allocate] attribútumot használja. A [enable_allocate] attribútum lehetővé teszi az RpcSs-környezetet a kiszolgálóoldali csonkokkal. Az ügyféloldal értesítést kap az RpcSs-csomag engedélyezésének lehetőségéről. /osf módban az ügyféloldal nincs hatással.

Ha az RpcSs-csomag engedélyezve van, a memória lefoglalása a kiszolgálóoldalon a privát RpcSs memóriakezelési kiosztóval és felszabadító párral történik. Az RpcSmAllocate meghívásával (vagy RpcSsAllocate) meghívhatja a memóriát ugyanazzal a mechanizmussal. A kiszolgálói csonkról való visszatéréskor az RpcSs-csomag által lefoglalt összes memória automatikusan felszabadul. Az alábbi példa bemutatja, hogyan engedélyezheti az RpcSs-csomagot:

/* 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 */

Az alkalmazás explicit módon felszabadíthatja a memóriát az RpcSsFree vagy RpcSmFree függvény meghívásával. Vegye figyelembe, hogy ezek a függvények valójában nem szabadítják fel a memóriát. Törlésre jelölik meg. Az RPC-kódtár felszabadítja a memóriát, amikor a program meghívja RpcSsDisableAllocate vagy RpcSsDisableAllocate.

Az alkalmazás memóriakezelési környezetét az RpcSmEnableAllocate rutin meghívásával is engedélyezheti (és letilthatja az RpcSmDisableAllocate rutin meghívásával). Ha engedélyezve van, az alkalmazáskód lefoglalhatja és felszabadíthatja a memóriát az RpcSs-csomag függvényeinek meghívásával.