Получение серийного номера тома NTFS - C#
Формулировка задачи:
Приветствую!
Есть необходимость читать серийный номер тома NTFS.
В классе DriveInfo такого свойства или метода я не нашел.
Стал городить велосипед через WinAPI и GetVolumeInformation, получился вот такой огород:
Результат:
Перевожу в hex получаю: 4С54-026A
Значение в PM: 644C-5433-4C54-026A
Т.е. верно, но получена только половина значения, вопрос как все таки получить всю?!
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Runtime.InteropServices; namespace WinAPI_GetVolumeInformation { class Program { [DllImport("kernel32.dll")] public static extern int GetVolumeInformation(string strPathName, StringBuilder strVolumeNameBuffer, int lngVolumeNameSize, out int lngVolumeSerialNumber, out int lngMaximumComponentLength, out int lngFileSystemFlags, StringBuilder strFileSystemNameBuffer, int lngFileSystemNameSize); static void Main() { const int MAX_SIZE = 256; //метка диска StringBuilder volname = new StringBuilder(MAX_SIZE); //серийный номер диска int sn; int maxcomplen;//максимальное кол-во компонент int sysflags;//системные флаги StringBuilder sysname = new StringBuilder(MAX_SIZE);//файловая система GetVolumeInformation(@"D:\", volname, MAX_SIZE, out sn, out maxcomplen, out sysflags, sysname, MAX_SIZE); Console.WriteLine(volname.ToString()); Console.WriteLine(sn.ToString()); Console.WriteLine(sysname.ToString()); Console.Read(); } } }
Win7 1280574058 NTFS
Решение задачи: «Получение серийного номера тома NTFS»
textual
Листинг программы
Раздел NTFS в таблице разделов идентифицируется номером 7. Первый сектор раздела - загрузочный.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д