2017-08-14 147 views
0

我正在DragonBorad 410c上開發使用Windows 10 IoT的客戶特定應用程序。 在此應用程序中,瞭解哪個驅動器/ StorageFolder是SD卡以及哪個驅動器是附加的USB記憶棒非常重要。我以前通過驅動器號使用StorageDevice.FromId在Windows 10上拋出「Not Implemented Exception」IoT

KnownFolders.RemovableDevices 

因爲SD卡應該有驅動器號「D」。 但是,在一塊主板上,SD卡突然出現驅動器盤符「E」,代碼失敗。

所以我開始使用

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

枚舉可移動驅動器,然後搜索每DeviceInformation對象的特定圖案的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卡的想法?

非常感謝你提前,蒂姆

+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卡

但我不認爲這是一個非常可靠的解決方案,我還在尋找別的東西。

+0

你可以檢查它的'DisplayName'。有關更多信息,請參閱[this](https://blog.falafel.com/readwrite-data-fromto-usb-thumb-drive-windows-iot-core-device/)。 –

+0

不幸的是,這不起作用。顯示名稱顯示卷的名稱,完全未知。在提到的例子中,卷的名稱假設設置爲「USB DRIVE」。 –

相關問題