2017-08-14 10 views
0

DragonBorad 410cでWindows 10のIoTを使用して顧客固有のアプリケーションを開発しています。 このアプリケーションでは、どのドライブ/ StorageFolderがSDカードであり、どちらが追加のUSBスティックであるかを知ることが不可欠です。 SDカードは、ドライブ文字「D」を持つことになっているので、私はStorageDevice.FromIdがWindows 10で「実装されていない例外」をスローするIoT

KnownFolders.RemovableDevices 

を使用してドライブ文字を介してこれを処理するために使用しました。 一方のボードでは、SDカードが突然ドライブ文字「E」を持っていて、コードが失敗しました。

は、したがって、私は、リムーバブルドライブを列挙するために

var deviceInfos = DeviceInformation.FindAllAsync(DeviceClass.PortableStorageDevice); 

を使用して開始してから特定のパターンごとにデバイス情報オブジェクトのID文字列を検索:

private StorageFolder _sdCard; 
private StorageFolder _usbDrive; 

foreach(DeviceInformation info in deviceInfos) 
{ 
    string id = info.Id.ToUpper(); 

    try 
    { 

     if(id.Contains(SDId)) 
     {        
      _sdCard = StorageDevice.FromId(info.Id); 
     } 
     else if(id.Contains(USBId)) 
     { 
      _usbDrive = StorageDevice.FromId(info.Id); 
     } 

    } 
    catch(Exception e) 
    { 
     Debug.WriteLine("########## Error " + e); 
    } 

} 

残念ながら

StorageDevice.FromId() 

"実装されていない例外"をスローします。 .appxmanifestファイルとファイルタイプの関連付けのリムーバブルストレージ機能が有効になっています。リムーバブルストレージデバイス上のファイルにアクセスする際に問題はありません。誰も似たような問題を経験して解決策を見つけましたか?追加のUSBスティックが接続されている場合、SDカードにStorageFolderを確実に取り込むという考えは誰にもありますか?

はちょうど私がそれとあまり満足していないが、私は、ソリューションを自分で発見した質問を終えた後、事前に非常に多くのティム

+0

申し訳ありませんが、私はDeviceInformation.FindAllAsyncで待っていませんでした。しかし、それは私のコードであり、問​​題ではありません。 –

答えて

0

、ありがとうございました。

StorageFolder    removableDevices = KnownFolders.RemovableDevices; 
IReadOnlyList<StorageFolder> drives   = await removableDevices.GetFoldersAsync(); 

を使用してドライブの最初の要素は必ずSDカードを表し、これは、また、ここに記載されている:https://docs.microsoft.com/de-de/windows/uwp/files/access-the-sd -card

しかし、これは非常に信頼性の高い解決策ではないと私はまだ何か他のものを探しています。

+0

'DisplayName'を確認できます。詳細については、[this](https://blog.falafel.com/readwrite-data-fromto-usb-thumb-drive-windows-iot-core-device/)を参照してください。 –

+0

残念ながら、これは動作しません。表示名にはボリュームの名前が表示されますが、完全に不明です。前述の例では、ボリュームの名前は "USB DRIVE"に設定されていました。 –

関連する問題