using system;
using system.io;
using system.runtime.interopservices;
using system.text;
using microsoft.win32;
namespace wjb.readorwriteiniandreg
{
 /// <summary>
 /// harddiskval 的摘要說明。
 /// 讀取指定盤符的硬盤序列號
 /// 類庫開發(fā):吳劍冰
 /// 時間:2003年10月20日
 /// 功能:讀取指定盤符的硬盤序列號
 /// </summary>
 public class harddiskval
 {
 [dllimport("kernel32.dll")]
 private static extern int getvolumeinformation(
 string lprootpathname,
 string lpvolumenamebuffer,
 int nvolumenamesize,
 ref int lpvolumeserialnumber,
 int lpmaximumcomponentlength,
 int lpfilesystemflags,
 string lpfilesystemnamebuffer,
 int nfilesystemnamesize
 );
 /// <summary>
 /// 獲得盤符為drvid的硬盤序列號,缺省為c
 /// </summary>
 /// <param name="drvid"></param>
 /// <returns></returns>
 public string hdval(string drvid)
 {
 const int max_filename_len = 256;
 int retval = 0;
 int a =0;
 int b =0;
 string str1 = null;
 string str2 = null;
 int i = getvolumeinformation(
 drvid + @":/",
 str1,
 max_filename_len,
 ref retval,
 a,
 b,
 str2,
 max_filename_len
 );
 return retval.tostring();
 }
 public string hdval()
 {
 const int max_filename_len = 256;
 int retval = 0;
 int a =0;
 int b =0;
 string str1 = null;
 string str2 = null;
 int i = getvolumeinformation(
 "c://",
 str1,
 max_filename_len,
 ref retval,
 a,
 b,
 str2,
 max_filename_len
 );
 return retval.tostring();
 }
 } 
}