使用GetLogicalDriveStrings获取驱动器根路径,并使用自定义的GetDriveInfo函数获取驱动器的属性。

VS2012 + win7 x64下调试通过。

#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
#define BUFSIZE 1024
BOOL GetDriverInfo(LPSTR szDrive);
//int WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nCmdShow)
int main(void)
{
CHAR szLogicDriveStrings[BUFSIZE];
PCHAR szDrive; ZeroMemory(szLogicDriveStrings,BUFSIZE); GetLogicalDriveStrings(BUFSIZE-,szLogicDriveStrings);
szDrive = (PCHAR)szLogicDriveStrings; do
{
if(!GetDriverInfo(szDrive))
{
printf("\nGet Volume Information Error:%d",GetLastError()); }
szDrive += (lstrlen(szDrive)+);
} while (*szDrive !='\x00'); system("PAUSE");
return ; } BOOL GetDriverInfo(LPSTR szDrive)
{
UINT uDriverType;
DWORD dwVolumeSerialNumber;
DWORD dwMaximumComponentlength;
DWORD dwFileSystemFlags;
CHAR szFileSystemNameBuffer[BUFSIZE];
CHAR szDriveName[MAX_PATH]; printf("\n%s\n",szDrive);
uDriverType = GetDriveType(szDrive); switch(uDriverType)
{
case DRIVE_UNKNOWN:
printf("The driver 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("This drive is a remote(network) drive");
break;
case DRIVE_CDROM:
printf("This drive is a CD-ROM drive.");
break;
case DRIVE_RAMDISK:
printf("This drive is a RAM disk");
break;
default:
break;
} if (!(GetVolumeInformation(
szDrive,
szDriveName,
MAX_PATH,
&dwVolumeSerialNumber,
&dwMaximumComponentlength,
&dwFileSystemFlags,
szFileSystemNameBuffer,
BUFSIZE)))
{
return FALSE; } if (!=lstrlen(szDriveName))
{
printf("\nDrive Name is %s.\n",szDriveName);
} printf("\nVolume Serial 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.\n");
} if (dwFileSystemFlags & FILE_SUPPORTS_REPARSE_POINTS)
{
printf("The file system does not support volume mount points.\n"); } if (dwFileSystemFlags & FILE_CASE_SENSITIVE_SEARCH)
{
printf("The file system supports case-sentitive file name.\n");
} printf("...\n"); return TRUE; }

使用GetLogicalDriveStrings获取驱动器根路径的更多相关文章

  1. js获取项目根路径

    //js获取项目根路径,如: http://localhost:8083/uimcardprj function getRootPath(){ //获取当前网址,如: http://localhost ...

  2. Java中获取项目根路径和类加载路径的7种方法

    引言 在web项目开发过程中,可能会经常遇到要获取项目根路径的情况,那接下来我就总结一下,java中获取项目根路径的7种方法,主要是通过thisClass和System,线程和request等方法. ...

  3. html 获取项目根路径

    html 获取项目根路径 function getContextPath(){ var pathName = document.location.pathname; //当前文件的绝度路径 var i ...

  4. 【spring】【spring boot】获取系统根路径,根目录,用于存储临时生成的文件在服务器上

    今日份代码: private static final String UPLOAD_TEMP_FILE_NAME = "测试商品数据.xlsx"; /** * 获取临时文件路径 * ...

  5. Spring Boot 上传文件 获取项目根路径 物理地址 resttemplate上传文件

    springboot部署之后无法获取项目目录的问题: 之前看到网上有提问在开发一个springboot的项目时,在项目部署的时候遇到一个问题:就是我将项目导出为jar包,然后用java -jar 运行 ...

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

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

  7. javascript 获取项目根路径

    /** * http://localhost:8088/projectName */ function getRootPath(){ //获取当前网址,如: http://localhost:8088 ...

  8. Spring下获取项目根路径--good

    Spring 在 org.springframework.web.util 包中提供了几个特殊用途的 Servlet 监听器,正确地使用它们可以完成一些特定需求的功能.比如某些第三方工具支持通过 ${ ...

  9. java-动态获取项目根路径

    ${ pageContext.request.contextPath } <hr> <a href="${ pageContext.request.contextPath ...

随机推荐

  1. PERCONA-TOOLKIT 工具的安装与使用2

    [root@server-mysql ~]# cd /usr/bin [root@server-mysql bin]# ls pt* pt-align pt-duplicate-key-checker ...

  2. 文件和目录之mkdir和rmdir函数

    用mkdir函数创建目录,用rmdir函数删除目录. #include <sys/stat.h> int mkdir( const char *pathname, mode_t mode ...

  3. linux shell执行方式

    linux shell执行有两种方式 shell脚本以#!/bin/bash开头,执行shell时先检查首行,在内部以下列方式执行: $/bin/bash script.sh 1. 使用sh执行. $ ...

  4. 嵌入式Linux-linux连接脚本

    嵌入式Linux-linux连接脚本 介绍 每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出 ...

  5. 实现当UILable的内容超出其范围后自动滚动效果

    本文主要介绍 [当UILabel的内容超出其自身的宽度范围后,进行互动展示的效果],我们先来看一下Demo的效果图. 实际实现起来并不十分繁杂,在这里,为了开发的效率,我们使用了一个已经封装好的UIL ...

  6. Java基础知识强化之IO流笔记57:数据输入输出流(操作基本数据类型)

    1. 数据输入输出流(操作基本数据类型) (1)数据输入流:DataInputStream DataInputStream(InputStream in) (2)数据输出流:DataOutputStr ...

  7. Android App用MulticastSocket监听组播,为什么连接到不同路由、在不同手机上跑,有的能收到有的收不到

    ---------------------------!! 转载请注明出处 !!-----------------------   一个项目,利用wifi组播在局域网内发现设备.却发现在有的路由器上能 ...

  8. Linux基础命令(三)

    一.常用命令—文件目录类命令 1.ls 列出指定或默认目录的文件信息 使用形式: ls [选项] [目录名] 实例: $ls $ls –als $ls /home/sq/Desktop $ls ./D ...

  9. 我给自己的Sass+Compass,在Windows下写个bat,快速cd到我的sass目录

    在Windows下,我总是要打开Ruby的cmd来进行Sass,其中要写好多cd,次数多了,自己的多敲,的确能记得更牢靠,但是无形中会浪费自己的一点点敲cd命令的时间,所以我想到自己在windows下 ...

  10. js 注册手机摇动事件

    var rockModule = (function () { //监听手机摇动事件 if (window.DeviceMotionEvent) { window.addEventListener(' ...