예제 #1
0
파일: PS4RTE.cs 프로젝트: ps4lib/OpenRTE
        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);
        }
예제 #2
0
파일: PS4RTE.cs 프로젝트: ps4lib/OpenRTE
        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);
        }