C#或C#调用API能实现对整个磁盘的操作、控制吗?

elivenet 2010-09-30 10:04:56
下面的功能用API不能实现吗?
简单的说我要的是列出各个磁盘、硬盘类型(用API getdrivetype不能识别出移动硬盘)、总容量及该磁盘的分区,并获得对整个磁盘(不是分区)操作的名称(不知道应该叫什么,或许也是句柄)(就像对窗口操作用句柄,对分区操作用盘符一样)以对整个移动硬盘格式化(用其它格式化软件,主要是要传递用户的磁盘选择给这个格式化软件,这个软件本来就是对整个磁盘格式化的)。
难道这些操作得用C或汇编并且是驱动级的程序?
...全文
233 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zkforever 2010-10-02
  • 打赏
  • 举报
回复
学习。。
zhouxuancq0912 2010-10-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]

API
[DllImport("kernel32.dll", EntryPoint="GetDiskFreeSpaceExA")]
public static extern int GetDiskFreeSpaceEx (string lpRootPathName,out long lpFreeBytesAvailable,out long lpTotalNumberOfBytes……
[/Quote]

这样的功能调用Win32函数 太麻烦了
tsh185 2010-10-02
  • 打赏
  • 举报
回复
哥们,这个东西在 C# 中 非常的简单 有个一叫 WMI 的 你了解一下 ,就像读数据库里面的数据一样
很方便 很实用.
elivenet 2010-10-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 kensouterry 的回复:]
MSDN中查看DriveInfo类,尽量不要用API函数,麻烦!
[/Quote]
嗯,谢谢!
elivenet 2010-10-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
API
[DllImport("kernel32.dll", EntryPoint="GetDiskFreeSpaceExA")]
public static extern int GetDiskFreeSpaceEx (string lpRootPathName,out long lpFreeBytesAvailable,out long lpTotalNumberOfBytes,o……
[/Quote]

我之前用API的getDriveType会将移动硬盘也识别为本地硬盘,而且不会像这样处理 磁盘m:n >> 指定磁盘m上的分区n (m从0开始,n从1开始计数).(好像你这没给出)
回去试下你这个行不行。
谢谢!
kensouterry 2010-10-02
  • 打赏
  • 举报
回复
MSDN中查看DriveInfo类,尽量不要用API函数,麻烦!
ysz89757 2010-10-01
  • 打赏
  • 举报
回复
学习了,顶
wuyq11 2010-09-30
  • 打赏
  • 举报
回复
API
[DllImport("kernel32.dll", EntryPoint="GetDiskFreeSpaceExA")]
public static extern int GetDiskFreeSpaceEx (string lpRootPathName,out long lpFreeBytesAvailable,out long lpTotalNumberOfBytes,out long lpTotalNumberOfFreeBytes);
c#
ManagementClass mClass = new ManagementClass("Win32_LogicalDisk");
ManagementObjectCollection moCollection = mClass.GetInstances();
foreach (ManagementObject mObject in moCollection)
{
if (Int32.Parse(mObject["DriveType"].ToString()) == (int)System.IO.DriveType.Fixed)
{
long lDiskSize = long.Parse(mObject["Size"].ToString());
long lfreeDiskSiz= long.Parse(mObject["FreeSpace"].ToString());

} }

DriveInfo di = new DriveInfo(disk);
switch (di.DriveType)
{
case DriveType.CDRom: return "光盘";
case DriveType.Fixed: return "固定磁盘";
case DriveType.Network: return "网络驱动器";
case DriveType.Ram: return "Ram磁盘";
case DriveType.Removable: return "右移动存贮设备";
case DriveType.Unknown: return "未知";
}

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧