2

WMIを使用して、さまざまな形式のメディア(USBドライブ、CDなど)がいつ接続/挿入されるかを判断しています。ただし、「SanDisk Enterprise FIPS USB」などの暗号化されたドライブは、ファンキーな機能を果たします。ロック解除アプリケーションを起動できるCDドライブとして表されているように見えます。ロック解除ユーティリティが終了すると、新しいUSB論理ディスクが読み取り/書き込みに使用できるようになります。したがって、WMIから見たイベントの順序は次のとおりです。

  1. USBが挿入されています
  2. Win32_DiskDriveオブジェクトが作成されます(以下の\。\ PHYSICALDRIVE2を参照)
  3. 個別のWin32_LogicalDiskが作成されます。1つは以下にコピーし(G :)、ランチャーを保持し、もう1つ(私の場合はM:)は最終的にアクセス可能なドライブです。

ただし、ユーティリティが実行されるまで、 Win32_DiskDriveToDiskPartitionエントリは存在しません。これは、ハードウェアIDからボリュームを見つける通常の方法です。多くのグーグルといくつかの試行錯誤の結果、PHYSICALDRIVE2をG:に関連付けるアーキテクチャ的に適切な方法を見つけることができませんでした。オンラインでの一般的なコンセンサスは、物理メディアにパーティションやボリュームなどが必要ないため、このようなマッピングが存在することを期待すべきではないということですが、私の場合、基本的に存在することを知っており、期待される場合は何らかの意味のある方法でエラーが発生しますマッピングがありませんでした。

この時点での私の唯一の戦略は、すべてのボリュームを列挙し、すべてのCDドライブで適切なファイルを探すことです。おそらく、暗号化されたUSBドライブが接続された後に認識されたそのようなデバイスを追跡します。明らかに、これは醜いハックです。提案?

TargetInstance = 
instance of Win32_LogicalDisk
{
    Caption = "G:";
    CreationClassName = "Win32_LogicalDisk";
    Description = "CD-ROM Disc";
    DeviceID = "G:";
    DriveType = 5;
    MediaType = 11;
    Name = "G:";
    SystemCreationClassName = "Win32_ComputerSystem";
};

instance of Win32_DiskDrive
{
    Caption = "SanDisk Enterprise FIPS USB Device";
    ConfigManagerErrorCode = 0;
    ConfigManagerUserConfig = FALSE;
    CreationClassName = "Win32_DiskDrive";
    Description = "Disk drive";
    DeviceID = "\\\\.\\PHYSICALDRIVE2";
    FirmwareRevision = "6.61";
    Index = 2;
    InterfaceType = "USB";
    Manufacturer = "(Standard disk drives)";
    MediaLoaded = TRUE;
    Model = "SanDisk Enterprise FIPS USB Device";
    Name = "\\\\.\\PHYSICALDRIVE2";
    Partitions = 0;
    SerialNumber = "u";
    Signature = 0;
    Status = "OK";
    SystemCreationClassName = "Win32_ComputerSystem";
};
4

1 に答える 1

0

同様の方法で機能するUSB​​3Gドングルがありました。

それは、CD-ROMドライブと3Gドングルの2つの完全に別個のデバイスとしてコンピュータに表示されました。あなたの場合、それはCD-ROMドライブとハードドライブです。

G:Windowsは、実際には物理CD-ROMドライブである と考えています。G:のパーティションではありませんPHYSICALDISK2

G:これが、との間の直接接続を見つけることができない理由ですPHYSICALDISK2:接続はありません。

十分に深く掘り下げると、CD-ROMとディスクが同じUSBバス上にあることを示すことができます。それらが実際に同じデバイスであることをソフトウェアを介して最終的に示すことができるかどうかはわかりません。

于 2012-10-29T20:09:46.223 に答える