65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 C# 获取驱动器的卷信息

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.80/5 (7投票s)

2007年12月21日

CPOL
viewsIcon

72088

downloadIcon

2345

使用 C# 获取驱动器的卷信息

引言

首先,我想为我的拙劣英语道歉。 在本文中,我尝试解释如何使用kernel32.dll获取逻辑驱动器的卷信息。

Kernel32.dll

这个 DLL 支持与操作系统相关的能力,例如

  • 进程加载
  • 上下文切换
  • 文件 I/O
  • 内存管理

GetVolumeInformation

此函数用于获取驱动器的卷信息。 它提供序列号、卷名和文件类型。

以下是 GetVolumeInformation 函数的声明

[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
static extern bool GetVolumeInformation(string Volume, StringBuilder VolumeName, 
	uint VolumeNameSize, out uint SerialNumber, out uint SerialNumberLength, 
	out uint flags, StringBuilder fs, uint fs_size);

DllImport 用于导入kernel32.dll文件。 out 变量SerialNumber 将返回给定驱动器的序列号。 以下代码将解释如何获取给定驱动器的卷信息。

uint serialNum, serialNumLength, flags;
StringBuilder volumename = new StringBuilder(256);
StringBuilder fstype = new StringBuilder(256); 

bool ok = = GetVolumeInformation(drives, volumename, 
	(uint)volumename.Capacity - 1, out serialNum, out serialNumLength, 
	out flags, fstype, (uint)fstype.Capacity - 1);

if (ok)
 {
  lblVolume.Text = lblVolume.Text + "\n Volume Information of " + drives + "\n";
  lblVolume.Text = lblVolume.Text + "\nSerialNumber of is..... " + 
	serialNum.ToString() + " \n";
   if (volumename != null)
   {
   lblVolume.Text = lblVolume.Text + "VolumeName is..... " + 
	volumename.ToString() + " \n";
   }
if (fstype != null)
 {
 lblVolume.Text = lblVolume.Text + "FileType is..... " + fstype.ToString() + " \n";
 }

希望这能帮到你。 :)

历史

  • 2007年12月20日:初始发布
© . All rights reserved.