Author:水如烟
参考了一个C#的,原出处不知在哪了.
Public
Class
PhysicalDriveDemo
Public Shared Sub Run()
Console.WriteLine(PhysicalDrive.GetSerialNumber( 0 ))
End Sub
End Class
Public Shared Sub Run()
Console.WriteLine(PhysicalDrive.GetSerialNumber( 0 ))
End Sub
End Class
Imports
System
Imports System.Collections.Generic
Imports System.Text
Imports System.Runtime.InteropServices
Public Class PhysicalDrive
' <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _
' Friend Structure IDSECTOR
' Public wGenConfig As Int16
' Public wNumCyls As Int16
' Public wReserved As Int16
' Public wNumHeads As Int16
' Public wBytesPerTrack As Int16
' Public wBytesPerSector As Int16
' Public wSectorsPerTrack As Int16
' <MarshalAs(UnmanagedType.ByValArray, SizeConst:=3)> _
' Public wVendorUnique() As Int16
' <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=20)> _
' Public sSerialNumber As String
' Public wBufferType As Int16
' Public wBufferSize As Int16
' Public wECCSize As Int16
' <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=8)> _
' Public sFirmwareRev As String
' <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=40)> _
' Public sModelNumber As String
' Public wMoreVendorUnique As Int16
' Public wDoubleWordIO As Int16
' Public wCapabilities As Int16
' Public wReserved1 As Int16
' Public wPIOTiming As Int16
' Public wDMATiming As Int16
' Public wBS As Int16
' Public wNumCurrentCyls As Int16
' Public wNumCurrentHeads As Int16
' Public wNumCurrentSectorsPerTrack As Int16
' Public ulCurrentSectorCapacity As Int32
' Public wMultSectorStuff As Int16
' Public ulTotalAddressableSectors As Int32
' Public wSingleWordDMA As Int16
' Public wMultiWordDMA As Int16
' <MarshalAs(UnmanagedType.ByValArray, SizeConst:=128)> _
' Public bReserved() As Byte
' End Structure
< StructLayout(LayoutKind.Sequential) > _
Friend Structure DRIVERSTATUS
Public bDriverError As Byte
Public
Imports System.Collections.Generic
Imports System.Text
Imports System.Runtime.InteropServices
Public Class PhysicalDrive
' <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _
' Friend Structure IDSECTOR
' Public wGenConfig As Int16
' Public wNumCyls As Int16
' Public wReserved As Int16
' Public wNumHeads As Int16
' Public wBytesPerTrack As Int16
' Public wBytesPerSector As Int16
' Public wSectorsPerTrack As Int16
' <MarshalAs(UnmanagedType.ByValArray, SizeConst:=3)> _
' Public wVendorUnique() As Int16
' <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=20)> _
' Public sSerialNumber As String
' Public wBufferType As Int16
' Public wBufferSize As Int16
' Public wECCSize As Int16
' <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=8)> _
' Public sFirmwareRev As String
' <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=40)> _
' Public sModelNumber As String
' Public wMoreVendorUnique As Int16
' Public wDoubleWordIO As Int16
' Public wCapabilities As Int16
' Public wReserved1 As Int16
' Public wPIOTiming As Int16
' Public wDMATiming As Int16
' Public wBS As Int16
' Public wNumCurrentCyls As Int16
' Public wNumCurrentHeads As Int16
' Public wNumCurrentSectorsPerTrack As Int16
' Public ulCurrentSectorCapacity As Int32
' Public wMultSectorStuff As Int16
' Public ulTotalAddressableSectors As Int32
' Public wSingleWordDMA As Int16
' Public wMultiWordDMA As Int16
' <MarshalAs(UnmanagedType.ByValArray, SizeConst:=128)> _
' Public bReserved() As Byte
' End Structure
< StructLayout(LayoutKind.Sequential) > _
Friend Structure DRIVERSTATUS
Public bDriverError As Byte
Public