¿Cómo obtener el número de serie del disco duro? Versión .NET [C#]
Desafortunadamente, muchos amigos a menudo no pueden distinguir esto.
Es muy sencillo de utilizar: HardDiskInfo hdd = AtapiDevice.GetHddInfo(0); // El primer disco duro Console.WriteLine(Número de módulo: {0}, hdd. ModuleNumber Console.WriteLine(Número de serie: {0}); hdd.SerialNumber); Console.WriteLine(Firmware: {0}, hdd. Firmware); Console.WriteLine(Capacidad: {0} M, hdd. Capacidad: usando System.Runtime); .InteropServices; usando System.Text; espacio de nombres Sunmast.Hardware { [Serializable] estructura pública HardDiskInfo { /// lt; resumengt; /// Versión de firmware /// lt; /summarygt; public string SerialNumber; /// resumengt; / Capacidad, en M es la unidad /// lt; /summarygt; public uint Capacidad; } #region Estructuras internas [StructLayout(LayoutKind.Sequential, Pack=1)] estructura interna GetVersionOutParams { byte público bVersion; byte bReserved; byte público bIDEDeviceMap; public uint fCapabilities; [MarshalAs(UnmangedType.ByValArray, SizeConst=4)] public uint[] dwReserved; // Para uso futuro } [StructLayout(LayoutKind.Sequential, Pack=1)] IDEREGS {BYTE BYTE BYTE
SendCmdInParams { public uint cBufferSize; public IdeRegs irDriveRegs; byte público bDriveNumber; [MarshalAs(UnmanagedType.ByValArray, SizeConst=3)] public uint[] dwReserved; byte público bBuffer; } [StructLayout(LayoutKind.Sequential, Pack=1)] estructura interna DriverStatus { byte público bDriverError; byte público bIDEStatus; UnmanagedType.ByValArray, SizeConst=2)] public uint[] dwReserved; } [StructLayout(LayoutKind.Sequential, Pack=1)] estructura interna SendCmdOutParams { public uint cBufferSize; public DriverStatus DriverStatus; public IdSector bBuffer } [StructLayout(LayoutKind. Secuencial, Paquete = 1, Tamaño = 512)] estructura interna IdSector { público ushort wGenConfig; público ushort wReserved; público ushort wNumHeads; público ushort wBytesPerSector; SizeConst=3)] public ushort[] wVendorUnique; [MarshalAs(UnmangedType.ByValArray, SizeConst=20)] public byte[] sSerialNumber; public ushort wBufferType; 8)] byte público[] sFirmwareRev; [MarshalAs(UnmanagedType.ByValArray, SizeConst=40)] byte público[] sModelNumber;
blic ushort wMoreVendorUnique; público ushort wDoubleWordIO; público ushort wPIOTiming; público ushort wMultSectorStuff; DMA; público ushort wMultiWordDMA; [MarshalAs(UnmanagedType.ByValArray, SizeConst=128)] byte público[] bReserved; } #endregion /// lt; resumengt /// controlador ATAPI relacionado /// lt;/ resumengt; DllImport(kernel32.dll, SetLastError=true)] static extern int CloseHandle(IntPtr hObject); dwCreationDisposition, uint dwFlagsAndAttributes, IntPtr hTemplateFile); ytesReturned, [Salida] IntPtr lpOverlapped); [DllImport(kernel32.dll)] static extern int DeviceIoControl( IntPtr hDevice, uint dwIo[1] [2] [3] Página siguiente