3
我需要的編程方式獲得與以下字段的Linux系統中使用的所有存儲驅動器:如何以編程方式獲取有關在Linux中的存儲驅動器的信息? (C#MONO)
- 路徑
- 文件系統(FAT32,NTFS等)
- 含物理磁盤
它需要支持所有常見的存儲類型:硬盤,固態硬盤,鑰匙,CD-ROM,DVD等
如何從C#這樣做是爲了運行良好來自MONO?
我需要的編程方式獲得與以下字段的Linux系統中使用的所有存儲驅動器:如何以編程方式獲取有關在Linux中的存儲驅動器的信息? (C#MONO)
它需要支持所有常見的存儲類型:硬盤,固態硬盤,鑰匙,CD-ROM,DVD等
如何從C#這樣做是爲了運行良好來自MONO?
這很簡單。 閱讀文件夾/ dev/disk/by-path的內容。 此目錄中的文件是指向/ dev中設備文件的符號鏈接。 然後你可以找到一些關於這些的一般信息,使用gudev的單聲道端口 - 你可以得到一個here。 你也需要glib-sharp來使用它,它是gtk-sharp2軟件包的一部分(使用你的軟件包管理器進行安裝)。 用作這個例子:
GLib.GType.Init();
gudev.GUdevClient a=new gudev.GUdevClient(null);
gudev.GUdevDevice dev=a.QueryByDeviceFile("/dev/disk/by-path/--some-file--");
Console.WriteLine (dev.GetProperty("ID_FS_TYPE")); //will output the file system, eg. ntfs
Console.WrtieLine(dev.GetProperty("ID_FS_LABEL")); //will output the label of the disk
得到掛載點,你會發現實際的設備文件。 添加對「Mono.Posix」包的引用並使用Mono.Unix.UnixSymbolicLinkInfo類查找該文件。 例如:
Mono.Unix.UnixSymbolicLinkInfo sym=new Mono.Unix.UnixSymbolicLinkInfo("/dev/disk/by-path/--some-file--");
Console.WriteLine(sym.ContentsPath); //Will output something like ../../sda1
取代../ ..以/ dev和比讀取文件/ etc/MTAB。 文件的格式是這樣的:
/dev/file mountpoint stuff-you-don't-care-about
在新線上的每個器件。所以按/ n分割並按空格分割。之後的任何事情都很簡單,我不認爲我需要繼續。