The most code in vbox_common.h is extracted from the vbox_CAPI_v*.h. I know some symbols like PR_INT16_MAX or PR_INT16_MIN may not be necessary, as well as the
definition of the NS_LIKELY and NS_UNLIKEY. But I put it here because I treat these codes as a whole thing and not separate them.
I think your suggestion on handling API fails is better than mine, I would take it.