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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值