HGSMIOFFSET HGSMIHeapBufferOffset (HGSMIHEAP *pHeap, void *pvData) { HGSMIBUFFERHEADER *pHeader = HGSMIBufferHeaderFromData (pvData); HGSMIOFFSET offBuffer = HGSMIPointerToOffset (&pHeap->area, pHeader); return offBuffer; }
void HGSMIHeapFree(HGSMIHEAP *pHeap, void *pvData) { if (pvData) { HGSMIBUFFERHEADER *pHeader = HGSMIBufferHeaderFromData(pvData); HGSMIHeapBufferFree(pHeap, pHeader); } }
/** * Inform the host that a command has been handled. * * @param pCtx the context containing the heap to be used * @param pvMem pointer into the heap as mapped in @a pCtx to the command to * be completed */ RTDECL(void) VBoxHGSMIHostCmdComplete(PHGSMIHOSTCOMMANDCONTEXT pCtx, void *pvMem) { HGSMIBUFFERHEADER *pHdr = HGSMIBufferHeaderFromData(pvMem); HGSMIOFFSET offMem = HGSMIPointerToOffset(&pCtx->areaCtx, pHdr); Assert(offMem != HGSMIOFFSET_VOID); if(offMem != HGSMIOFFSET_VOID) { HGSMINotifyHostCmdComplete(pCtx, offMem); } }
void HGSMIHeapFree (HGSMIHEAP *pHeap, void *pvData) { if ( pvData && pHeap->u.hPtr != NIL_RTHEAPSIMPLE) { HGSMIBUFFERHEADER *pHeader = HGSMIBufferHeaderFromData (pvData); HGSMIHeapBufferFree (pHeap, pHeader); } }