首页 文章

StorageDevice.FromId在Windows 10 IoT上抛出“未实现的异常”

提问于
浏览
0

我正在使用DragonBoard 410c上的Windows 10 IoT开发客户特定的应用程序 . 在此应用程序中,必须知道哪个驱动器是SD卡,哪个是另外的USB记忆棒 . 我以前通过驱动器号使用来处理这个问题

KnownFolders.RemovableDevices

因为SD卡应该有驱动器号“D” . 但是,在一块板上,SD卡突然有驱动器号“E”,我的代码失败了 .

因此我开始使用

var deviceInfos = await 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() 抛出 NotImplementedException .

我在 .appxmanifest 中启用了可移动存储功能以及文件类型关联 . 访问任何可移动存储设备上的文件时没有任何问题 . 有没有人遇到类似的问题并找到解决方案?如果可能附加额外的USB记忆棒,有没有人有可能为SD卡可靠地检索 StorageFolder

1 回答

  • 1

    在完成问题后,我自己找到了解决方案,虽然我对它不太满意 . 运用

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

    驱动器中的第一个元素始终代表SD卡,这也在此处说明:https://docs.microsoft.com/de-de/windows/uwp/files/access-the-sd-card

    但我不认为这是一个非常可靠的解决方案,我仍在寻找其他东西 .

相关问题