Exemple #1
0
void CALLBACK_HandlerObject::Set_RealVec(Bit8u vec){
	if(!vectorhandler.installed) {
		vectorhandler.installed=true;
		vectorhandler.interrupt=vec;
		RealSetVec(vec,Get_RealPointer(),vectorhandler.old_vector);
	} else E_Exit ("double usage of vector handler");
}
Exemple #2
0
CALLBACK_HandlerObject::~CALLBACK_HandlerObject()
	{
	if (!installed)
		return;
	if (m_type == CALLBACK_HandlerObject::SETUP)
		{
		if (vectorhandler.installed)
			{
			// See if we are the current handler. if so restore the old one
			if (RealGetVec(vectorhandler.interrupt) == Get_RealPointer())
				RealSetVec(vectorhandler.interrupt, vectorhandler.old_vector);
			else 
				LOG(LOG_MISC,LOG_WARN)("Interrupt vector changed on %X %s", vectorhandler.interrupt, CALLBACK_GetDescription(m_callback));
			}
		CALLBACK_RemoveSetup(m_callback);
		}
	else if (m_type == CALLBACK_HandlerObject::SETUPAT)
		E_Exit("Callback: SETUP at not handled yet.");
	else if (m_type == CALLBACK_HandlerObject::NONE)
		{
		// Do nothing. Merely DeAllocate the callback
		}
	else
		E_Exit("What kind of callback is this!");
	if (CallBack_Description[m_callback])
		delete [] CallBack_Description[m_callback];
	CallBack_Description[m_callback] = 0;
	CALLBACK_DeAllocate(m_callback);
	}