' Imports System.Runtime.InteropServices
' Imports System.Text
<DllImport("kernel32", SetLastError:=True)> _
Public Shared Function GetVolumeInformation _
(ByVal lpRootPathName As String, _
ByVal lpVolumeName As StringBuilder, _
ByVal nVolumeNameSize As Integer, _
ByRef lpVolumeSerialNumber As Integer, _
ByRef lpMaximumComponentLength As Integer, _
ByRef lpFileSystemFlags As fsflags, _
ByVal lpFileSystemName As StringBuilder, _
ByVal nFileSystemNameSize As Integer) As Integer
End Function
<DllImport("kernel32")> _
Public Shared Function GetLastError() As Integer
End Function
Public Function GetSerial(ByVal str As String) As String
Dim volumeNameLength As Integer = 256
Dim volumeName As New StringBuilder(volumeNameLength)
Dim volumeSerialNumber As Integer
Dim maxCompLen As Integer
Dim fileSystemFlags As fsflags
Dim filesystemnamelength As Integer = 256
Dim fileSystemName As New StringBuilder(filesystemnamelength)
Dim ret As Boolean
ret = GetVolumeInformation(str, volumeName, volumeNameLength, _
volumeSerialNumber, maxCompLen, fileSystemFlags, fileSystemName, filesystemnamelength)
If ret = 0 Then
Me.Text = GetLastError()
End If
Me.Label1.Text = "Volume Name: " & volumeName.ToString & Environment.NewLine
Me.Label1.Text &= "Volume Serial Number: " & hex(volumeSerialNumber) & Environment.NewLine
Me.Label1.Text &= "FileSystem Name: " & fileSystemName.ToString & Environment.NewLine
Me.Label1.Text &= "Filesystem Flags: " & fileSystemFlags.ToString
Return volumeSerialNumber.ToString
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GetSerial("C:\")
Me.Label1.Dock = Dock.Fill
End Sub
<FlagsAttribute()> _
Public Enum fsflags
FILE_NAMED_STREAMS = &H40000
FILE_READ_ONLY_VOLUME = &H80000
FILE_SUPPORTS_OBJECT_IDS = &H10000
FILE_SUPPORTS_REPARSE_POINTS = &H80
FILE_SUPPORTS_SPARSE_FILES = &H40
FILE_VOLUME_QUOTAS = &H20
FS_CASE_IS_PRESERVED = 2
FS_CASE_SENSITIVE = 1
FS_FILE_COMPRESSION = &H10
FS_FILE_ENCRYPTION = &H20000
FS_PERSISTENT_ACLS = 8
FS_UNICODE_STORED_ON_DISK = 4
FS_VOL_IS_COMPRESSED = &H8000
End Enum