Beispiel #1
0
        //-------------- Rotinas

        public DVDRomReader(Char drive)
        {
            context = IOManager.CreateIOContext("DVD-ROM " + drive, @"\\.\" + drive + ':', FileAccess.Read, FileShare.Read, 0,
                                                FileMode.Open, EFileAttributes.NoBuffering);

            context.Lock();

            DISK_GEOMETRY dg = context.GetDiskGeometry();

            sectorSize = (int)dg.BytesPerSector;

            PARTITION_INFORMATION pi = context.GetPartitionInformation();

            size = pi.PartitionLength;

            context.Unlock();
        }
Beispiel #2
0
        //--------------- Lê a Geometria do disco
        public DISK_GEOMETRY GetDiskGeometry()
        {
            DISK_GEOMETRY dg    = new DISK_GEOMETRY();
            int           bytes = 0;

            if (!lockedByMe)
            {
                result = (int)IORet.RET_IO_UNLOCKED;
                Log.SendMessage(name, (int)IORet.RET_IO_UNLOCKED, null, LogMessageType.Error);
                return(dg);
            }

            //--------- Determina a geometria do disco
            if (DeviceIoControl(handle.handle, IOManager.IOCTL_DISK_GET_DRIVE_GEOMETRY, IntPtr.Zero, 0, ref dg,
                                Marshal.SizeOf(dg), ref bytes, 0) == 0)
            {
                //Loga erro
                result = Marshal.GetLastWin32Error();
                Log.SendMessage(name, (int)IORet.RET_IO_NATIVEERROR, result, LogMessageType.Error);
            }

            return(dg);
        }
Beispiel #3
0
 private static extern int DeviceIoControl(int hDevice, uint dwIoControlCode, IntPtr InBuffer, int nInBufferSize,
                                           ref DISK_GEOMETRY OutBuffer, int nOutBufferSize, ref int pBytesReturned, int lpOverlapped);