一个遍历驱动器的c代码

简介:
最近看到Windows编程的获取驱动器信息的一些东西,就熟练下相关的API调用,增强对c的熟练程度,具体代码如下:
 
 
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

#define BUFSIZE 1024

 BOOL GetDirverInfo(LPSTR szDriver);

void main()
{
    CHAR szLogicalDriverStrings[BUFSIZE] = {0};
    PCHAR szDriver = NULL;
    ZeroMemory(szLogicalDriverStrings,BUFSIZE);
    GetLogicalDriveStrings( (BUFSIZE - 1),szLogicalDriverStrings);
    szDriver = (PCHAR) szLogicalDriverStrings;
    do 
    {
        if ( ! GetDirverInfo(szDriver) )
        {
            printf("\n得到卷信息错误:%d",GetLastError() );
        }
        szDriver += ( lstrlen(szDriver) + 1 );
    } while (*szDriver != '\x00');

    getchar();
}

BOOL GetDirverInfo(LPSTR szDriver)
{
    UINT nDriverType;
    CHAR szDriverName[MAX_PATH];
    DWORD nVolumeSerialNumber;
    DWORD nMaximumComponentLength;
    DWORD nFileSystemFlags;
    CHAR szFileSystemNameBuffer[MAX_PATH];
    nDriverType = GetDriveType(szDriver);
    switch (nDriverType)
    {
    case DRIVE_UNKNOWN:
        printf("%s","未知的驱动器");
        break;
    case DRIVE_NO_ROOT_DIR:
        printf("%s","根路径无效驱动器");
        break;
    case DRIVE_REMOVABLE:
            printf ("%s","可插拔的驱动器");
            break;
    case DRIVE_CDROM:
                printf("%s","光驱驱动");
                break;
    case DRIVE_RAMDISK:
                printf("%s","硬盘驱动");
                break;
    default:
        printf("%s","其他类型");
    }

        
    if ( !GetVolumeInformation(
        szDriver,
        szDriverName,
        MAX_PATH,
        &nVolumeSerialNumber,
        &nMaximumComponentLength,
        &nFileSystemFlags,
        szFileSystemNameBuffer,
        BUFSIZE
        ) )
    {
        
     goto EXIT0;
        
    }
    if ( 0 != lstrlen(szDriverName) )
    {
        printf("\n驱动器名字 是 %s\n",szDriverName);
    }
    printf("\n 卷的序列号是 %u\n",nVolumeSerialNumber);
    printf("\n 最大元件长度是 %u\n",nMaximumComponentLength);
    printf("\n 文件系统类型是 %s\n",szFileSystemNameBuffer);

   return true;
EXIT0:

   return false;
}


本文转自wiliiwin 51CTO博客,原文链接:http://blog.51cto.com/wiliiwin/241904

相关文章
|
Java 关系型数据库 MySQL
连接MySQL数据库的最优JDBC代码
连接MySQL数据库的最优JDBC代码
|
数据采集 中间件 数据处理
scrapy的入门和使用
scrapy的入门和使用
|
消息中间件 Kubernetes Java
MQ产品使用合集之RocketMQ发消息失败了,proxy报connect to null failed如何解决
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
1961 2
MQ产品使用合集之RocketMQ发消息失败了,proxy报connect to null failed如何解决
|
存储 Linux Shell
udev用户空间设备管理
udev用户空间设备管理
273 0
|
JavaScript Java 测试技术
基于springboot+vue.js的疗养院管理系统附带文章和源代码设计说明文档ppt
基于springboot+vue.js的疗养院管理系统附带文章和源代码设计说明文档ppt
118 1
|
SpringCloudAlibaba Java 测试技术
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
299 1
|
Java Maven 数据安全/隐私保护
|
算法
朴素贝叶斯典型的三种算法
朴素贝叶斯主要有三种算法:贝努利朴素贝叶斯、高斯贝叶斯和多项式贝叶斯三种算法
194 0
|
消息中间件 存储 缓存
消息队列(六)
消息队列(六)
287 0
消息队列(六)
|
8天前
|
人工智能 运维 安全