Могу ли я протестировать дисковод, используя пространство имен WMI & System.Management? - PullRequest
3 голосов
/ 01 октября 2008

Я бы узнал, что вставлено в дискету :

  • дискета не вставлена ​​
  • вставлена ​​неформатированная дискета
  • вставлена ​​отформатированная дискета

Может ли это быть определено с использованием "WMI" в пространстве имен System.Management?

Если это так, могу ли я генерировать события, когда изменяется вставленная дискета ?

Ответы [ 2 ]

2 голосов
/ 02 октября 2008

Это из Scripting Center @ MSDN :

strComputer = "."
Set objWMIService = GetObject( _
    "winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
    ("Select * From Win32_LogicalDisk Where DeviceID = 'A:'")

For Each objItem in colItems
    intFreeSpace = objItem.FreeSpace
    If IsNull(intFreeSpace) Then
        Wscript.Echo "There is no disk in the floppy drive."
    Else
        Wscript.Echo "There is a disk in the floppy drive."
    End If
Next

Вы также сможете узнать, отформатирован он или нет, проверив других членов Win32_LogicalDisk класса .

1 голос
/ 03 октября 2008

Используя идею Боба Кинга, я написал следующий метод.

Отлично работает на компакт-дисках, съемных дисках, обычных дисках.

Однако для дискеты всегда возвращается «Not Available».

    public static void TestFloppy( char driveLetter ) {
        using( var searcher = new ManagementObjectSearcher(  @"SELECT * FROM Win32_LogicalDisk WHERE DeviceID = '" + driveLetter + ":'" ) )
        using( var logicalDisks = searcher.Get() ) {
            foreach( ManagementObject logicalDisk in logicalDisks ) {
                var fs = logicalDisk[ "FreeSpace" ];
                Console.WriteLine( "FreeSpace = " + ( fs ?? "Not Available" ) );

                logicalDisk.Dispose();
            }
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...