public int LoadModule(String module_name) { int ret = -1; lock (ps4_lock) { Console.Write("Envoie d'une requête de load ..\n"); ModuleRequest d_req; d_req.module_name = module_name; byte[] request = new byte[1 + Marshal.SizeOf(typeof(ModuleRequest))]; request[0] = 0x07; IntPtr ptr0 = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(ModuleRequest))); Marshal.StructureToPtr(d_req, ptr0, true); Marshal.Copy(ptr0, request, 1, Marshal.SizeOf(typeof(ModuleRequest))); Marshal.FreeHGlobal(ptr0); send_all(request); Console.Write("En attente de résultat\n"); byte[] data = recv_all(); IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(ReturnResponce))); Marshal.Copy(data, 0, ptr, Marshal.SizeOf(typeof(ReturnResponce))); ReturnResponce r = (ReturnResponce)Marshal.PtrToStructure(ptr, typeof(ReturnResponce)); ret = r.ret; } return(ret); }
public int GenericCommandWithRet(byte c) { ps4.Send(new byte[] { c }); Console.Write("En attente de résultat\n"); byte[] data = recv_all(); IntPtr ptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(ReturnResponce))); Marshal.Copy(data, 0, ptr, Marshal.SizeOf(typeof(ReturnResponce))); ReturnResponce r = (ReturnResponce)Marshal.PtrToStructure(ptr, typeof(ReturnResponce)); return(r.ret); }