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;
}

posted on 2011-11-28 21:49 流沙- 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/darkdance/archive/2011/11/28/2266766.html

GetLogicalDriveStringS获取驱动器根路径相关推荐

  1. Python 获取项目根路径

    本文仅供学习交流使用,如侵立删!demo下载见文末 获取项目根路径 os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 本文仅供学习 ...

  2. java获取项目根路径通用方法

    windows或linux系统通用,包含常用的三个方法. package com.home.util;import java.io.File;/*** 获取项目的根路径* 在windows和linux ...

  3. JAVA获取Classpath根路径的方法

    方法一: String path = Test.class.getResource("/").toString(); System.out.println("path = ...

  4. 获取项目根路径,并在其下创建一个名称为userData 的目录。

    NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); NSStri ...

  5. 获取请求的url java_Java获取此次请求URL以及服务器根路径的方法

    一. 获取此次请求的URL String requestUrl = request.getScheme() //当前链接使用的协议 +"://" + request.getServ ...

  6. java application 路径_java项目获取根路径(web项目和application项目的区分)

    Java项目中经常要读取配置文件,涉及到读取配置文件的地方,就会要读定位文件的路径.因此,在项目如何正确获取文件路径尤为关键. 根据不同的java项目,在获取文件路径时候有一些 小区别 测试环境:E: ...

  7. #js--js获取${pageContext.request.contextPath}得到项目的根路径

    我们知道,在js中直接获取jsp中的EL表达式是无法获取的,要想获取${pageContext.request.contextPath}的值,我们可以使用下面的两种方式: 1.在${pageConte ...

  8. js获取当前应用根路径contextPath完美方案

    最近在升级华丹开发平台,想通过js直接获取上下文路径contextPath,而不用通过参数配置的方式,减少用户配置麻烦. 上网查了一下,没有理想的方案.比如(节选自网上资料): 方法一: 在JSP页面 ...

  9. FindFirstVolume系列函数遍历驱动器,获取驱动器信息

    什么是"卷"? 卷,又称为"逻辑驱动器",是 NTFS, FAT32 等文件系统组织结构的最高层.卷是存储设备(如硬盘)上由文件系统管理的一块区域,是在逻辑上相 ...

最新文章

  1. Kaggle上的犬种识别(ImageNet Dogs)
  2. python类的__slots__属性、__del__属性、上下文(__enter__和__exit__)、
  3. Android逆向之调试smali代码基础
  4. html用JQuery自定义表单验证。
  5. 5笔涂出一只3D猫咪模型,可跑可跳无需手动绑定骨骼,新鬼畜素材get丨浙大开源...
  6. RedisLive监控工具 windows部署笔记
  7. C++面试八股文快问快答のSTL篇
  8. C# 系统应用之无标题窗体移动的两种方法
  9. MySQL select后面的子查询使用
  10. java selenium (二) 环境搭建方法一
  11. Cortex-M3操作模式和特权级别
  12. GJM:用C#实现网络爬虫(一) [转载]
  13. python压缩和读取.tar.bz2格式的压缩包
  14. socat命令如何监听Linux串口设备通讯报文
  15. 信息论与编码冯桂周林著答案_信息论与编码技术+(冯桂+林其伟+陈东华+著)+清华大学出版社+课后答案.pdf...
  16. 我读过关于面试最好的一篇文章
  17. MATLAB -plotyy函数
  18. 计算机毕业优秀作品展观后感,毕业设计作品展观后感
  19. HTTP Error 503
  20. 计算机管理中误删用户,win10管理员账户删除了怎么解决?

热门文章

  1. 学习python自动化运维笔记文件比较
  2. 站长圈转风向标了 都玩自媒体了!
  3. CCNP OSPF协议详解
  4. c语言作用域有哪两种变量,2017年计算机二级C语言字考点归纳:变量的存储类别、作用域及生存期...
  5. python account_GitHub - Python3WebSpider/AccountPool: Account Pool
  6. Linux Kernel TCP/IP Stack — L3 Layer — netfilter 框架 — iptables NAPT 网络地址/端口转换
  7. SuperEdge — Overview
  8. etcd — 操作手册
  9. 快速理解 session/token/cookie 认证方式
  10. NanoPi NEO Air使用五:安装Xfce和xrdp,实现远程访问