UWP How to get StorageDevice freespace and capacit

2019-03-05 09:25发布

问题:

in my UWP app I use this construction to get list of all StorageDevices:

List<StorageFolder> list = new List<StorageFolder>();
var selector = Windows.Devices.Portable.StorageDevice.GetDeviceSelector();

var devices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(selector);

foreach (Windows.Devices.Enumeration.DeviceInformation device in devices)
    {
        // Get device root folder
        StorageFolder rootFolder = Windows.Devices.Portable.StorageDevice.FromId(device.Id);
        list.Add(rootFolder);
    }

RemovableItems.DataContext = new RemovableStorageViewModel(list);

How to get freespace and capacity of this devices? I try to get it from folder props rootFolder.Properties.RetrievePropertiesAsync(new List<string>()), but this props is missing.

UPDATE:

Available props values:

Available props keys:

Why freespace and capacity is missing?

回答1:

Did you try to query for System.FreeSpace and System.Capacity property (more about available property https://msdn.microsoft.com/en-us/library/windows/desktop/bb760719%28v=vs.85%29.aspx )

Usage:

var retrivedProperties = await rootFolder.Properties.RetrievePropertiesAsync(new string[] { "System.FreeSpace" });
var freeSpace = (UInt64)retrivedProperties["System.FreeSpace"];


回答2:

I've tried without success to do the same thing. Microsoft has omitted those properties for some reason. Hoping that the next SDK update will address this.



回答3:

I am able to retrieve the "System.FreeSpace" and "System.Capacity" properties for some drives as of Windows 10, version 1803 (10.0: Build 17134), using the answer by thang2410199

You can see a code sample in my answer to this question: Error while accessing AvailableFreeSpace/TotalSize in DriveInfo in UWP