zoukankan      html  css  js  c++  java
  • windows程序设计 获取磁盘容量

    //磁盘分区的总容量(字节)=总簇数*每簇扇区数*每扇区字节数
    //磁盘分区的空闲空间(字节)=空闲簇数*每簇扇区数*每扇区字节数
    BOOL GetDiskFreeSpace(
        LPCTSTR lpRootPathName,//指向所要获取磁盘空间信息的磁盘分区根路径字符串
        LPDWORD lpSectorsPerCluster,//指向存储每簇扇区数的DWORD类型变量
        LPDWORD lpBytesPerSector,//指向存储每扇区字节数的DWORD类型变量
        LPDWORD lpNumberOfFreeClusters,//指向存储空闲簇的DWORD类型变量
        LPDWORD lpTotalNumberOfClusters//指向存储总簇数的DWORD类型变量
        );
    /* **************************************************************
     * BOOL GetDiskFreeSpaceEx
     * 功能:
     *  获取用户可用的空闲空间字节数、空闲空间的字节数、磁盘总容量的字节数
     * 参数:
     *  LPCTSTR lpDirectoryName
     *   指向所要获取磁盘空闲信息的磁盘分区根路径字符串
     *  PULARGE_INTEGER lpFreeBytesAvailable
     *   指向用于存储可获得的总字节数量的变量,用户实际可用的空闲空间
     *  PULARGE_INTEGER lpTotalNumberOfBytes
     *   指向存储磁盘空间总字节数据的变量
     *  PULARGE_INTEGER lpTotalNUmberOfFreeBytes
     *   指向存储磁盘空闲空间总字节的变量
     * 返回值:
     *  返回BOOL值,表示信息获取是否成功
     ***************************************************************/
    BOOL GetDiskFreeSpaceEx(
        LPCTSTR lpDirectoryName,//指向所要获取磁盘空闲信息的磁盘分区根路径字符串
        PULARGE_INTEGER lpFreeBytesAvailable,//指向用于存储可获得的总字节数量的变量
        PULARGE_INTEGER lpTotalNumberOfBytes,//指向存储磁盘空间总字节数据的变量
        PULARGE_INTEGER lpTotalNUmberOfFreeBytes//指向存储磁盘空闲空间总字节的变量
        );

    代码演示

    #include <windows.h>
    #include <stdio.h>
    
    
    /* **********************************************************************
     * BOOL GetDiskSpaceInfo(LPCSTR pszDrive)
     * 功能:根据输入的驱动器,获取磁盘总容量、空闲空间、簇数量等磁盘信息
     * 参数:驱动器根路径,比如:“D:”
     ***********************************************************************/
    BOOL GetDiskSpaceInfo(LPCSTR pszDrive)
    {
        DWORD64 qwFreeBytesToCaller, qwTotalBytes, qwFreeBytes;
        DWORD dwSectPerClust, dwBytesPerSect, dwFreeClusters, dwTotalClusters;
        BOOL bResult;
    
        printf("%s
    ", pszDrive);
    
        //使用GetDiskFreeSpaceEx获取磁盘信息并打印结果
        bResult = GetDiskFreeSpaceExA(
            pszDrive,
            (PULARGE_INTEGER)&qwFreeBytesToCaller,
            (PULARGE_INTEGER)&qwTotalBytes,
            (PULARGE_INTEGER)&qwFreeBytes
            );
        if(bResult)
        {
            printf("使用GetDiskFreeSpaceEx获取磁盘空间信息
    ");
            printf("可获得的空闲空间(字节):	%I64d
    ", qwFreeBytesToCaller);
            printf("空闲空间(字节):		%I64d
    ", qwFreeBytes);
            printf("磁盘总容量(字节):		%I64d
    ", qwTotalBytes);
        }
        //使用GetDiskFreeSpace获取磁盘信息并打印结果
        bResult = GetDiskFreeSpaceA(
            pszDrive,
            &dwSectPerClust,
            &dwBytesPerSect,
            &dwFreeClusters,
            &dwTotalClusters
            );
        if(bResult)
        {
            printf("
    使用GetDiskFreeSpace获取磁盘空间信息
    ");
            printf("空闲的簇数量:		%d
    ", dwFreeClusters);
            printf("总簇数量:		%d
    ", dwTotalClusters);
            printf("每簇的扇区数量:	%d
    ", dwSectPerClust);
            printf("每扇区的容量(字节):	%d
    ", dwBytesPerSect);
            printf("空闲空间(字节):	%I64d
    ",(DWORD64)dwFreeClusters*(DWORD64)dwSectPerClust*(DWORD64)dwBytesPerSect);
            printf("磁盘总容量(字节):	%I64d
    ",(DWORD64)dwTotalClusters*(DWORD64)dwSectPerClust*(DWORD64)dwBytesPerSect);
        }
        return bResult;
    }
    
    int main(void)
    {
        GetDiskSpaceInfo("c:");
        return 0;
    }
  • 相关阅读:
    《需求工程--软件建模与分析》读书笔记一
    软件工程概论课程总结及给老师的意见
    梦断代码阅读笔记之三
    梦断代码阅读笔记之二
    第二阶段小组冲刺第七天总结
    软件工程第十一周学习进度条
    用户场景描述
    软件工程第九、十周学习进度条
    个人工作总结
    软件工程第八周学习进度条
  • 原文地址:https://www.cnblogs.com/xuqiulin/p/10182926.html
Copyright © 2011-2022 走看看