一个遍历驱动器的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

相关文章
|
1月前
|
存储 算法 编译器
如何优化单片机程序里面的C代码方法
如何优化单片机程序里面的C代码方法
20 0
|
9月前
|
C语言
C语言:调整数组使奇数全部都位于偶数前面
题目: 输入一个整数数组,实现一个函数, 来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分, 所有偶数位于数组的后半部分。 (奇数在数组前面,偶数在数组后面)
Python-剑指offer(13,14)调整数组顺序使奇数置于偶数前面,链表中倒数第k个节点
Python-剑指offer(13,14)调整数组顺序使奇数置于偶数前面,链表中倒数第k个节点
|
Linux
C中使用汇编交换两个值
C中使用汇编交换两个值
47 0
回溯法——装载问题
回溯法——装载问题
130 0
|
编译器 C语言 C++
在C/C++直接插入汇编代码的方法-内联汇编
在C/C++直接插入汇编代码的方法-内联汇编
583 0
在C/C++直接插入汇编代码的方法-内联汇编
|
SQL 小程序 数据挖掘
c语言递归思想的小程序 | 数字三角形求路径最大值
c语言递归思想的小程序 | 数字三角形求路径最大值
155 0
c语言递归思想的小程序 | 数字三角形求路径最大值
线性表的顺序表示和实现 (创建,插入,删除,查找)数据结构 严蔚敏(C语言版)代码实现
线性表的顺序表示和实现 (创建,插入,删除,查找)数据结构 严蔚敏(C语言版)代码实现
105 0
线性表的顺序表示和实现 (创建,插入,删除,查找)数据结构 严蔚敏(C语言版)代码实现
|
Windows
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 从内存结构中根据寻址路径查找子弹数据的内存地址 )(二)
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 从内存结构中根据寻址路径查找子弹数据的内存地址 )(二)
182 0
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 从内存结构中根据寻址路径查找子弹数据的内存地址 )(二)
|
Windows
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 从内存结构中根据寻址路径查找子弹数据的内存地址 )(三)
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 从内存结构中根据寻址路径查找子弹数据的内存地址 )(三)
113 0
【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 从内存结构中根据寻址路径查找子弹数据的内存地址 )(三)