c# API使用GetVolumeInformation函数获取硬盘信息

API 说明(Code:C#)-------------

[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
        public static extern bool GetVolumeInformation(
        string lpRootPathName,                       //   欲获取信息的那个卷的根路径 
        string lpVolumeNameBuffer,                 //   用于装载卷名(卷标)的一个字串 
        int nVolumeNameSize,                         //   lpVolumeNameBuffer字串的长度   
        ref int lpVolumeSerialNumber,           //   用于装载磁盘卷序列号的变量   
        int lpMaximumComponentLength,   // 指定一个变量,用于装载文件名每一部分的长度。例如,在“c:\component1\component2.ext”的情况下,它就代表component1或component2名称的长度 .

        int lpFileSystemFlags,    //   用于装载一个或多个二进制位标志的变量。对这些标志位的解释如下:

  FS_CASE_IS_PRESERVED 文件名的大小写记录于文件系统

  FS_CASE_SENSITIVE 文件名要区分大小写

  FS_UNICODE_STORED_ON_DISK 文件名保存为Unicode格式

  FS_PERSISTANT_ACLS 文件系统支持文件的访问控制列表(ACL)安全机制

  FS_FILE_COMPRESSION 文件系统支持逐文件的进行文件压缩

  FS_VOL_IS_COMPRESSED 整个磁盘卷都是压缩的 

     string lpFileSystemNameBuffer, //指定一个缓冲区,用于装载文件系统的名称(如FAT,NTFS以及其他)        int nFileSystemNameSize                   //   lpFileSystemNameBuffer字串的长度
        );  


        /// <summary>
        /// 获取硬盘ID
        /// </summary>
        /// <returns></returns>
public string GetdiskID()
        {

const int MAX_FILENAME_LEN = 256;
            int retVal = 0;
            int a = 0;
            int b = 0;
            string str1 = null;
            string str2 = null;


            GetVolumeInformation(
                @"C:\",
                str1,
                MAX_FILENAME_LEN,
                ref retVal,
                a,
                b,
                str2,
                MAX_FILENAME_LEN);

return retVal.ToString();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值