zoukankan      html  css  js  c++  java
  • GetLogicalDriveStringS获取驱动器根路径 流沙

    #include <windows.h>
    #include <stdlib.h>
    #include <stdio.h>

    // 预定义
    #define BUFSIZE 1024

    //函数申明
    BOOL GetDirverInfo(LPSTR szDrive);


    void main(void)
    {
    CHAR szLogicalDriveStrings[BUFSIZE];
    PCHAR szDrive;用来指向字符数组

    //将上面申请的CHar数组用O填充
    ZeroMemory(szLogicalDriveStrings,BUFSIZE);
    //获取逻辑驱动器卷标名  写入数组
    GetLogicalDriveStrings(BUFSIZE-1,szLogicalDriveStrings);
    //指向字符数组
    szDrive=(PCHAR)szLogicalDriveStrings;

    //循环每个卷
    do
    {
    if(!GetDirverInfo(szDrive))
    {
    printf("\n 获取错误:%d",GetLastError());
    }
    szDrive +=(lstrlen(szDrive)+1);
    }
    while(*szDrive!='\x00');

    printf("\n",szDrive);
    }


    BOOL GetDirverInfo(LPSTR szDrive)
    {
    UINT uDriveType;
    DWORD dwVolumeSerialNumber;
    DWORD dwMaximumComponentLength;
    DWORD dwFileSystemFlags;
    CHAR szFileSystemNameBuffer[BUFSIZE];
    CHAR szDirveName[MAX_PATH];

    printf("\n%s\n",szDrive);
    uDriveType = GetDriveType(szDrive);//TCHAR的指针类型
    switch(uDriveType)
    {
    case DRIVE_UNKNOWN:
    printf("the drive type cannot be determined");
    break;
    case DRIVE_NO_ROOT_DIR:
    printf("the root path is invalid, for example,no volume is mounted at the path");
    break;
    case DRIVE_REMOVABLE:
    printf("the drive is a type that has removable media,for example,a floppy drive or removable hard disk");
    break;
    case DRIVE_FIXED:
    printf("the drive is a type that cannot be removed,for example,a fixed hard drive");
    break;
    case DRIVE_REMOTE:
    printf("the drive is a remote(network) drive");
    break;
    case DRIVE_CDROM:
    printf("the drive is a CD_ROM drive");
    break;
    case DRIVE_RAMDISK:
    printf("the drive is a RAM disk");
    break;
    default:
    break;

    }
    if(!GetVolumeInformation(//读取文件系统信息
    szDrive,
    szDirveName,
    MAX_PATH,
    &dwVolumeSerialNumber,
    &dwMaximumComponentLength,
    &dwFileSystemFlags,
    szFileSystemNameBuffer,
    BUFSIZE
    ))
    {
    return FALSE;
    }
    if(0!=lstrlen(szDirveName))
    {
    printf("\nDrive name is %s\n",szDirveName);
    }
    printf("\nVolume serial Number is %u",dwVolumeSerialNumber);
    printf("\nMaximum Component Length is %u",dwMaximumComponentLength);
    printf("\nsystem type is %s\n",szFileSystemNameBuffer);

    if (dwFileSystemFlags & FILE_VOLUME_QUOTAS)
    {
    printf("the file system supports disk quotas");

    }
    if (dwFileSystemFlags & FILE_CASE_SENSITIVE_SEARCH)
    {
    printf("the file system supports case-sensitive file names");
    }
    return TRUE;
    }

  • 相关阅读:
    SSD报告
    House of Spirit学习调试验证与实践
    怎样改动SharePoint管理中心的语言
    PuTTY连接Linuxserver常常断线解决方式
    HDU 2819 Swap (行列匹配+输出解)
    HDOJ--1061--Rightmost Digit
    POJ Cow Exhibition
    程序员之---C语言细节24(段错误、类型提升、sizeof &#39;A&#39;)
    java之 ------ 图形界面(三)
    Oracle 安装报错 [INS-06101] IP address of localhost could not be determined 解决方法
  • 原文地址:https://www.cnblogs.com/darkdance/p/2266766.html
Copyright © 2011-2022 走看看