Esempio n. 1
0
        public static unsafe bool Seek(IntPtr driverHandle, int track)
        {
            tagFD_SEEK_PARAMS seekParams = new tagFD_SEEK_PARAMS()
            {
                cyl  = (byte)(track >> 1),
                head = 0
            };
            uint dwRet;

            return(DeviceIoControl(driverHandle, IOCTL_FDCMD_SEEK, (IntPtr)(&seekParams), (uint)sizeof(tagFD_SEEK_PARAMS), IntPtr.Zero, 0, out dwRet, IntPtr.Zero));
        }
Esempio n. 2
0
        public static unsafe int ScanTrack(IntPtr driverHandle, int track, UpperSideHead upperSideHead)
        {
            tagFD_SEEK_PARAMS seekParams = new tagFD_SEEK_PARAMS()
            {
                cyl  = (byte)(track >> 1),
                head = upperSideHead == UpperSideHead.Head1 ? (byte)(track & 1) : (byte)0
            };
            uint dwRet;

            DeviceIoControl(driverHandle, IOCTL_FDCMD_SEEK, (IntPtr)(&seekParams), (uint)sizeof(tagFD_SEEK_PARAMS), IntPtr.Zero, 0, out dwRet, IntPtr.Zero);
            tagFD_SCAN_PARAMS scanParams = new tagFD_SCAN_PARAMS()
            {
                Flags = 0,
                Head  = (byte)(track & 1)
            };
            tagFD_SCAN_RESULT scanResult = new tagFD_SCAN_RESULT();
            bool r = DeviceIoControl(driverHandle, IOCTL_FD_SCAN_TRACK, (IntPtr)(&scanParams), (uint)sizeof(tagFD_SCAN_PARAMS),
                                     (IntPtr)(&scanResult), (uint)sizeof(tagFD_SCAN_RESULT), out dwRet, IntPtr.Zero);
            int error = !r?Marshal.GetLastWin32Error() : 0;

            ScanResult scanResultNew = new ScanResult(scanResult);

            return(error);
        }