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.