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;
    }
  • 相关阅读:
    leetcode教程系列——Binary Tree
    《Ranked List Loss for Deep Metric Learning》CVPR 2019
    《Domain Agnostic Learning with Disentangled Representations》ICML 2019
    Pytorch从0开始实现YOLO V3指南 part5——设计输入和输出的流程
    Pytorch从0开始实现YOLO V3指南 part4——置信度阈值和非极大值抑制
    Pytorch从0开始实现YOLO V3指南 part3——实现网络前向传播
    Pytorch从0开始实现YOLO V3指南 part2——搭建网络结构层
    Pytorch从0开始实现YOLO V3指南 part1——理解YOLO的工作
    让我佩服的人生 文章
    win8.1配置cordova+ionic等一系列东西
  • 原文地址:https://www.cnblogs.com/xuqiulin/p/10182926.html
Copyright © 2011-2022 走看看