none
WIN8存储空间大小 RRS feed

答案

  • GetDiskFreeSpaceEx function 是支持Metro的, 在C#中,简单的进行P/Invoke即可:

            [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
            [return: MarshalAs(UnmanagedType.Bool)]
            static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,
                                                  out ulong lpFreeBytesAvailable,
                                                  out ulong lpTotalNumberOfBytes,
                                                  out ulong lpTotalNumberOfFreeBytes);
            private void Button_Click_1(object sender, RoutedEventArgs e)
            {
                ulong FreeBytesAvailable;
                ulong TotalNumberOfBytes;
                ulong TotalNumberOfFreeBytes;
                bool success = GetDiskFreeSpaceEx(".",
                                                out FreeBytesAvailable,
                                                out TotalNumberOfBytes,
                                                out TotalNumberOfFreeBytes);
                if (!success) throw new Exception();
                Debug.WriteLine("Free Bytes Available:      {0,15:D}", FreeBytesAvailable);
                Debug.WriteLine("Total Number Of Bytes:     {0,15:D}", TotalNumberOfBytes);
                Debug.WriteLine("Total Number Of FreeBytes: {0,15:D}", TotalNumberOfFreeBytes);
            }

    C++就可以include <Windows.h> 后直接调用。

    不过由于Metro环境的局限性,不能访问大多数文件系统,所以这个函数尽可以基于 Path="." 或者 应用安装位置来获得所在盘的空间大小。参考:http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/adf58e57-fb50-4460-95c8-aa8bd62fe901


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 PennerYu 2012年7月31日 13:49
    2012年7月31日 3:58
    版主

全部回复

  • 各位老大,有清楚的吗?

    2012年7月31日 2:22
  • GetDiskFreeSpaceEx function 是支持Metro的, 在C#中,简单的进行P/Invoke即可:

            [DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
            [return: MarshalAs(UnmanagedType.Bool)]
            static extern bool GetDiskFreeSpaceEx(string lpDirectoryName,
                                                  out ulong lpFreeBytesAvailable,
                                                  out ulong lpTotalNumberOfBytes,
                                                  out ulong lpTotalNumberOfFreeBytes);
            private void Button_Click_1(object sender, RoutedEventArgs e)
            {
                ulong FreeBytesAvailable;
                ulong TotalNumberOfBytes;
                ulong TotalNumberOfFreeBytes;
                bool success = GetDiskFreeSpaceEx(".",
                                                out FreeBytesAvailable,
                                                out TotalNumberOfBytes,
                                                out TotalNumberOfFreeBytes);
                if (!success) throw new Exception();
                Debug.WriteLine("Free Bytes Available:      {0,15:D}", FreeBytesAvailable);
                Debug.WriteLine("Total Number Of Bytes:     {0,15:D}", TotalNumberOfBytes);
                Debug.WriteLine("Total Number Of FreeBytes: {0,15:D}", TotalNumberOfFreeBytes);
            }

    C++就可以include <Windows.h> 后直接调用。

    不过由于Metro环境的局限性,不能访问大多数文件系统,所以这个函数尽可以基于 Path="." 或者 应用安装位置来获得所在盘的空间大小。参考:http://social.msdn.microsoft.com/Forums/en-US/winappswithnativecode/thread/adf58e57-fb50-4460-95c8-aa8bd62fe901


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 PennerYu 2012年7月31日 13:49
    2012年7月31日 3:58
    版主