static public HV_HOOKING_HCALL_STATS[] getStats() { HV_HOOKING_HCALL_STATS[] val = new HV_HOOKING_HCALL_STATS[0xE8 + 1]; bool success; unsafe { fixed(HV_HOOKING_HCALL_STATS *tmp = val) { success = hypercallsGetStats(tmp); } } if (success) { return(val); } return(null); }
static public bool hypercall(long callInfo, byte[] inBuffer, uint inBufferSize, out long callResult, out byte[] outBuffer, uint outBufferSize) { HV_HOOKING_HCALL_STATS[] val = new HV_HOOKING_HCALL_STATS[0xE8 + 1]; bool success; unsafe { fixed(byte *tmpIn = inBuffer) { fixed(byte *tmpOut = outBuffer) { long result; long tmpCallCode = callInfo; success = hypercallsCall(&tmpCallCode, tmpIn, inBufferSize, &result, tmpOut, outBufferSize); callResult = result; } } } return(success); }