• 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;
    }
  • 相关阅读:
    动态查询 母表和子表的 一种方法
    js的一些正则 整理 长期更新
    fmt 标签格式化 日期
    一些关于 checkbox的前台 jquery 操作 记录
    jQuery 追加元素的方法如append、prepend、before,after(转)
    (Oracle)DBMS_SYSTEM工具-01[20180510]
    MySQL->元数据[20180510]
    MySQL->复制表[20180509]
    MySQL->索引的维护[20180504]
    MySQL-ALTER TABLE命令学习[20180503]
  • 原文地址:https://www.cnblogs.com/xuqiulin/p/10182926.html
Copyright © 2020-2023  润新知