Здравствуйте, Аноним, Вы писали:
А>Задача: прочитать содержимое жёсткого диска (FAT, FAT32, NTFS) как поток байт, без интерпретации, где там таблица разделов, а где ещё чего. Просто взять и прочитать.
Возьми и читай.
static void Main(string[] args)
{
var discSize=0L;
using (var handle=CreateFile(@"\\.\C:", EFileAccess.GenericRead,
EFileShare.Read|EFileShare.Write,
IntPtr.Zero,
ECreationDisposition.OpenExisting,
EFileAttributes.Normal, IntPtr.Zero))
{
using (var file=new FileStream(handle, FileAccess.Read))
{
var buffer=new byte[4*1024];
var readed=0;
while((readed=file.Read(buffer, 0, buffer.Length))>0)
{
discSize+=readed;
}
}
}
}
[Flags]
public enum EFileAccess : uint
{
GenericRead=0x80000000,
GenericWrite=0x40000000,
GenericExecute=0x20000000,
GenericAll=0x10000000,
}
[Flags]
public enum EFileShare : uint
{
None=0x00000000,
Read=0x00000001,
Write=0x00000002,
Delete=0x00000004,
}
[DllImport("kernel32.dll", CharSet=CharSet.Auto, SetLastError=true)]
public static extern SafeFileHandle CreateFile(
string lpFileName,
EFileAccess dwDesiredAccess,
EFileShare dwShareMode,
IntPtr lpSecurityAttributes,
ECreationDisposition dwCreationDisposition,
EFileAttributes dwFlagsAndAttributes,
IntPtr hTemplateFile);
public enum ECreationDisposition : uint
{
New=1,
CreateAlways=2,
OpenExisting=3,
OpenAlways=4,
TruncateExisting=5,
}
[Flags]
public enum EFileAttributes : uint
{
Readonly=0x00000001,
Hidden=0x00000002,
System=0x00000004,
Directory=0x00000010,
Archive=0x00000020,
Device=0x00000040,
Normal=0x00000080,
Temporary=0x00000100,
SparseFile=0x00000200,
ReparsePoint=0x00000400,
Compressed=0x00000800,
Offline=0x00001000,
NotContentIndexed=0x00002000,
Encrypted=0x00004000,
Write_Through=0x80000000,
Overlapped=0x40000000,
NoBuffering=0x20000000,
RandomAccess=0x10000000,
SequentialScan=0x08000000,
DeleteOnClose=0x04000000,
BackupSemantics=0x02000000,
PosixSemantics=0x01000000,
OpenReparsePoint=0x00200000,
OpenNoRecall=0x00100000,
FirstPipeInstance=0x00080000
}
В человечишке все должно быть прекрасненьким: и одёжка, и душенка, и мордочка, и мыслишки.