Автор работы: Пользователь скрыл имя, 05 Апреля 2011 в 18:19, курсовая работа
В данной курсовой работе необходимо разработать программу для поиска в свободных кластерах символьных последовательностей из заданного набора.
}
//Метод для закрытия устрйства
public void CloseDrive()
{
//Закрытие устройства
Win32API.CloseHandle(_
}
//Метод для открытия устройства
public void OpenDrive()
{
//Открытие диска для записи и чтения
_cHDevice = Win32API.CreateFile(new StringBuilder("\\\\.\\" + _Name), Win32API.GENERIC_READ | Win32API.GENERIC_WRITE, Win32API.FILE_SHARE_WRITE | Win32API.FILE_SHARE_READ, IntPtr.Zero, Win32API.OPEN_EXISTING, Win32API.FILE_FLAG_BACKUP_
}
//Свойства для доступа к основным переменным диска
#region Свойства
public uint BytesPerSector
{
get{return _BytesPerSector;}
set{_BytesPerSector = value;}
}
public uint SectorsPerCluster
{
get{return _SectorsPerCluster;}
set{_SectorsPerCluster = value;}
}
public uint ClusterSize
{
get{ return
_BytesPerSector*_
}
public uint TotalSize
{
get{return _TotalSize;}
set{_TotalSize = value;}
}
public uint SectorsPerFAT
{
get{ return _SectorsPerFAT;}
set{_SectorsPerFAT = value;}
}
public uint FATSize
{
get
{return _SectorsPerFAT*_
}
public uint CopiesFAT
{
get{ return _CopiesFAT;}
set{_CopiesFAT = value;}
}
public uint RootEntries
{
get{ return _RootEntries;}
set{_RootEntries = value;}
}
public uint RootSize
{
get{return _RootEntries * (uint)32;}
}
public uint ReservedSectors
{
get{ return _ReservedSectors;}
set{_ReservedSectors = value;}
}
public uint ReservedSize
{
get { return _ReservedSectors * _BytesPerSector; }
}
public uint BeginningData
{
get{return ReservedSize + _CopiesFAT*FATSize+RootSize;}
}
public uint BeginningRoot
{
get { return ReservedSize + _CopiesFAT * FATSize; }
}
public byte[] CopyBR
{
get{return _CopyBR;}
}
public SafeFileHandle cHDevice
{
get { return _cHDevice; }
}
public uint Error
{
get { return _Error; }
}
public ulong TypeSystem
{
get { return _TypeSystem; }
}
#endregion
}
}
Win32API.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32.SafeHandles;
using System.Runtime.
namespace HiddenLost
{
public class Win32API
{
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool GetDiskFreeSpace(StringBuilder lpRootPathName, out UInt32 lpSectorsPerCluster, out UInt32 lpBytesPerSector, out UInt32 lpNumberOfFreeClusters, out UInt32 lpTotalNumberOfClusters);
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern SafeFileHandle CreateFile(StringBuilder lpFileName, UInt32 dwDesiredAccess, System.UInt32 dwShareMode, IntPtr pSecurityAttributes, System.UInt32 dwCreationDisposition, System.UInt32 dwFlagsAndAttributes, IntPtr hTemplateFile);