#ifndef RLOEW_MULTCLIB #define RLOEW_MULTCLIB struct CORE { int zpage,spage; int id,core; DWORD cr3,argb; DWORD tag,event0; BYTE status,command,halted,nmireq,lok,bpact; WORD idtl; DWORD idtp; DWORD virt; DWORD usrhalt,signal,exit,bpcall; DWORD cr2b; DWORD bpsp; DWORD eip,ecs,eflags,esp; DWORD uevent; DWORD temp,bptemp; BYTE x1[156]; DWORD idt[512]; //Set 0x100 from Base BYTE x2[1536]; //0x900 DWORD ustk[16]; //Set 0xf00 from Base (top addr) DWORD stk3[35]; //Set 0xf40 from Base (top addr) DWORD ds,ss,es,fs,gs; DWORD regs[8]; //Set 0xfe0 from Base }; int OpenMC(); DWORD CoreCount(); DWORD LockMemory(); DWORD MapMemory(int c); DWORD StopCore(int c); DWORD PauseCore(int c); DWORD ResumeCore(int c); DWORD FreeCore(int c); DWORD OpenCore(int c); //Zero Get First Free Core BYTE CoreStatus(int c); int CoreArg(int c); int SetCoreArg(int c,int val); struct CORE *CoreAddress(int c); //Zero Gets APIC Page struct CORE **CorePointer(int c); void *CoreEvent(int c,void *event); //Zero Releases User Event void *CoreInterrupt(int c,int in,void *vec); DWORD InterruptCore(int c,void *vec); BYTE *StartCore(int c,void *ip,int arg,void *sp); //Returns Status Byte Pointer int AbortBPCall(int c); int CloseMC(); int CoreNum(); int CoreGetArg(); int CoreSetArg(int val); void CoreSignal(int x); int CoreWait(int x); void CoreExit(int x); int BPCall(int n,void *p,...); #endif