使用C#获取Windows Mobile手机驱动器的大小(免费,总计)
如何使用C#获取Windows Mobile手机上任何驱动器的大小(免费,总计)?
我需要在设备上运行代码(而不是在连接的PC上)执行此操作。
我基于对问题的更好理解重写了答案,但是对于那些发现这个问题的人,我没有丢失任何原始答案。
从设备上运行的代码中获取大小
答案很简单:P /直接调用GetDiskFreeSpaceEx ( 此处为示例 )或使用为您执行此操作 的第三方库 。
我也要编辑post,让我觉得我的假设是正确的 – 如果你需要,可以改为阅读。
你有一个P / Invoke定义。 这只是一个静态方法调用。 你把它放在课堂上。 像这样的东西:
public class MyClass { [DllImport("coredll.dll", SetLastError=true, CharSet=CharSet.Auto)] [return: MarshalAs(UnmanagedType.Bool)] internal static extern bool GetDiskFreeSpaceEx(string lpDirectoryName, out ulong lpFreeBytesAvailable, out ulong lpTotalNumberOfBytes, out ulong lpTotalNumberOfFreeBytes); }
然后你打电话给它(不知道你要用你所有的编组工作做什么):
ulong GetDiskSize(string volumeName) { ulong avail; ulong total; ulong totalfree; MyClass.GetDiskFreeSpaceEx(volumeName, out avail, out total, out totalFree); return total; // return others as desired }
然后使用它就像这样:
ulong diskSize = GetDiskSize("\Storage Card");
从PC上运行的代码中获取大小
虽然设备在资源管理器中显示为“驱动器”,但它不是驱动器。 shell扩展用于使其显示在资源管理器中。 您不能在框架中或通过P / Invoke使用任何驱动器API来获取有关设备的信息。
如果您需要获取有关通过ActiveSync(XP及更早版本)或WMDC(Vista)连接的设备的信息,则必须使用Remote API或RAPI。 特定的API是CeGetStoreInformation ,但您必须先进行一些初始化才能调用它。
RAPI有点过于复杂,无法在这里得到答案,但它在网上有很好的文档,并且在这里有一个现成的托管包装(免费和开源) 。 您在该库中的特定调用是RAPI.GetDeviceStoreInformation 。
假设手机的驱动器作为常规卷安装在Windows中(即,它在Windows资源管理器中有驱动器号),您可以使用System.IO.DriveInfo类获取此信息。
当然,下一个问题是确定要使用哪个驱动器号,因为几乎每个插入电话的PC都会有所不同。
有两种选择:
如果你想直接在手机上运行你的代码,而不是在它附带的PC上(你的问题没有详细说明……), 这个StackOverflow问题显示了如何在Compact Framework上获取可用空间信息。
编辑 ,响应详细说明“当我使用DriveInfo并给它驱动器符号时,它给了我本地驱动器的大小”我的C:驱动器“而不是C驱动器存在于移动设备上”:C:驱动器手机将在其安装的PC上有不同的驱动器号(例如,F ? – 因此我的答案部分涉及找到正确的驱动器号。 当然,这确实假设您的手机驱动器在主机PC上完全可用:取决于手机型号,这可能是也可能不是。 如果没有,在手机上运行一些代码是获取此信息的唯一可行解决方案……
上述就是C#学习教程:使用C#获取Windows Mobile手机驱动器的大小(免费,总计)分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1005006.html