C#如何读取磁盘扇区?困扰了我好几天的问题了帮帮小弟吧最好能帖上源代码.
解决方案 »
- 大括号本来就可以折叠代码,为何还要用#region呢?区别何在?
- 模式窗口导致SESSION丢失怎么解决
- winform调用一个控制台程序,如何传非string类型的参数
- Winfrom下的datagridview的空白行中的某可编辑列输入一值然后(根据改值从数据库某表中检索相关数据插入到datagridview数据源中并显示)
- ComboBox的问题
- 关于腾讯QQ 获取对方IP 然后解析ip 然后得到该用户的具体信息~!在线等待 ~up 有分!
- C#怎么操作Windows的安全设置
- 俄罗斯方块左移/右移时,按住左移/右移键不动的时候,就报错,谁知道怎么解决?
- 这个asp.net的代码 有什么错误么? 谢谢 高分
- DataList和Repeater有否自动分页功能
- 要从字符串"123,-1,苏州XX公司"依次提取整数123,整数-1,字符串"苏州XX公司",如何写代码
- 求做一例题 别说简单 我刚学 我希望能写成个完整的!vc# web形式!
http://blog.csdn.net/yefanqiu/archive/2008/03/19/2198364.aspx
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;namespace DiskInfo
{
public static class Native
{
public const short FILE_ATTRIBUTE_NORMAL = 0x80;
public const short INVALID_HANDLE_VALUE = -1;
public const uint GENERIC_READ = 0x80000000;
public const uint GENERIC_WRITE = 0x40000000;
public const uint CREATE_NEW = 1;
public const uint CREATE_ALWAYS = 2;
public const uint OPEN_EXISTING = 3;
public const uint FILE_BEGIN = 0;
public const uint FILE_CURRENT=1;
public const uint FILE_END = 2; [DllImport("Kernel32.dll")]
extern static IntPtr CreateFile(string fileName, uint accessFlag, uint shareMode, IntPtr security,
uint createFlag, uint attributeFlag, IntPtr tempfile); [DllImport("Kernel32.dll")]
extern static bool ReadFile(IntPtr handle, [Out] byte[] buffer, uint bufferLength,
ref uint length, IntPtr overLapped); [DllImport("Kernel32.dll")]
extern static bool CloseHandle(IntPtr handle); [DllImport("Kernel32.dll")]
extern static uint SetFilePointer(IntPtr handle, int offset, IntPtr distance, uint flag);
/// <summary>
/// Read Disk MBR(Main Boot Record)
/// </summary>
/// <returns>512 byte for MBR record</returns>
public static byte[] ReadMBR()
{
//HANDLE hDev=CreateFile("\\\\.\\A:",GENERIC_READ,FILE_SHARE_WRITE,0,OPEN_EXISTING,0,0); IntPtr DiskHandle = CreateFile(@"\\.\PhysicalDrive0", GENERIC_READ,
0, IntPtr.Zero, OPEN_EXISTING, 0, IntPtr.Zero);
byte[] buffer = new byte[512];
uint length =0;
SetFilePointer(DiskHandle, 0, IntPtr.Zero, FILE_BEGIN);
ReadFile(DiskHandle, buffer, 512, ref length, IntPtr.Zero);
CloseHandle(DiskHandle);
return buffer;
}
}
}