当前位置:  开发笔记 > 编程语言 > 正文

使用C#获取Windows Mobile手机驱动器的大小(免费,总计)

如何解决《使用C#获取WindowsMobile手机驱动器的大小(免费,总计)》经验,为你挑选了1个好方法。

如何使用C#获取Windows Mobile手机上任何驱动器的大小(免费,总计)?

我需要在设备上运行代码(而不是在连接的PC上)执行此操作.



1> ctacke..:

我已经基于对问题的更好理解重写了答案,但是对于那些发现这个问题的人,我没有丢失任何原始答案.

从设备上运行的代码中获取大小

答案很简单:P/Invoke的GetDiskFreeSpaceEx直接(例如这里),或者使用第三方库这会为你.

我也打算编辑这篇文章,看起来我的假设是正确的 - 如果你需要,可以改为阅读.

你有一个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.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有