Esempio n. 1
0
        public VolumeHeader GetVolumeHeader()
        {
            try
            {
                VolumeHeader v          = new VolumeHeader();
                int          structSize = Marshal.SizeOf(v.GetType()); //Marshal.SizeOf(typeof(Student));
                IntPtr       buffer     = Marshal.AllocHGlobal(structSize);
                Marshal.StructureToPtr(v, buffer, true);

                // ... send buffer to dll
                cppToCsharpAdapter.getVolumeHeader(this.myDiskPointer, buffer);
                Marshal.PtrToStructure(buffer, v);

                // free allocate
                Marshal.FreeHGlobal(buffer);

                return(v);
            }
            catch (SEHException)
            {
                IntPtr cString = cppToCsharpAdapter.getLastDiskErrorMessage(this.myDiskPointer);
                string message = Marshal.PtrToStringAnsi(cString);
                throw new Exception(message);
            }
            catch
            {
                throw;
            }
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            try
            {
                int structSize = Marshal.SizeOf(typeof(VolumeHeader));
                Console.WriteLine("Marshal.SizeOf(typeof(VolumeHeader) == " + structSize);

                Disk d = new Disk();
                Console.WriteLine("\nMake Disk:");
                Console.WriteLine(ToStringProperty(d.GetVolumeHeader()));

                d.Createdisk("disk1", "oshri");
                Console.WriteLine("\nCreate Disk:");
                Console.WriteLine(ToStringProperty(d.GetVolumeHeader()));

                d.Mountdisk("disk1");
                d.Format("oshri");
                Console.WriteLine("\nFormat Disk:");
                Console.WriteLine(ToStringProperty(d.GetVolumeHeader()));

                VolumeHeader tmp = d.GetVolumeHeader();
                Console.WriteLine("Disk_Owner: {0}", tmp.DiskOwner);
                Console.WriteLine("Disk_Name: {0}", tmp.DiskName);
            }
            catch (Exception e)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(e.Message);
                Console.ResetColor();
            }
            Console.WriteLine("After: ******************************************\n");
            Console.ReadLine();
        }