03-10-12, 09:25 AM
سنحتاج إلى تعريف Structure ليعيد تلك المعلومات
كود :
Public Structure DriveInfoStr
Dim DriveLetter As String
Dim Description As String
Dim FileSystem As String
Dim Size As UInt64
Dim FreeSpace As UInt64
Dim DriveType As DriveTypeEnum
Dim VolumeName As String
Dim VolumeSerialNumber As String
End Structureكود :
Public Enum DriveTypeEnum
Unknown = 0
NoRootDirectory = 1
RemovableDisk = 2
LocalDisk = 3
NetworkDrive = 4
CompactDisc = 5
RAMDisk = 6
End Enumكود :
Private m_DriveInfoS As DriveInfoStr
Public ReadOnly Property DriveInformation() As DriveInfoStr
Get
Return m_DriveInfoS
End Get
End Propertyكود :
Sub New(ByVal DeviceName As String, ByVal DriveLetter As String, ByVal ArrivedRemoved As EnUsbArrivedRemoved _
, ByVal DriveInformations As DriveInfoStr)
Me.m_DeviceName = DeviceName
Me.m_DriveLetter = DriveLetter
Me.m_ArrivedRemoved = ArrivedRemoved
Me.m_DriveInfoS = DriveInformations
End Subكود :
Private Function GetDriveInformation(ByVal DriveLetter As String) As DriveInfoStr
Dim Query As String = "Select * from Win32_LogicalDisk WHERE DeviceID = '" & DriveLetter & "'"
Dim colDisks As New ManagementObjectSearcher(Query)
For Each objDisk As ManagementObject In colDisks.Get
Dim DrIn As DriveInfoStr
With DrIn
.DriveLetter = objDisk("DeviceID")
.FileSystem = objDisk("FileSystem")
.Size = objDisk("Size")
.FreeSpace = objDisk("FreeSpace")
.Description = objDisk("Description")
.DriveType = objDisk("DriveType")
.VolumeName = objDisk("VolumeName")
.VolumeSerialNumber = objDisk("VolumeSerialNumber")
End With
Return DrIn
Next
Return Nothing
End Functionكود :
Dim DrL As String = GetDriveLetterFromDisk(obj("Name"))
Dim Ee As New UsbDriveEeventArgs(obj("Caption"), DrL, EnUsbArrivedRemoved.Arrived, GetDriveInformation(DrL))
RaiseEvent UsbDeviceArrivedRemoved(Me, Ee)