驱动器相关的操作

  

首先来说明3个函数:

(1)查看系统中驱动器,函数原型DWORD GetLogicalDrives(VOID)

  //这个函数可以查看驱动器的个数,返回的是一个DWORD类型的数据,每一位代表相应的驱动盘是否存在,比如返回的一个数为0X0000

 00FC(0000 0000 0000 0000 0000 0000 1111 1100)(252)其中最低位代表的是A盘,以此类推,在上数中di0位为0,第一位为0,第

 2、3、4、5、6、7位为1,则说明A盘B盘不存在,C盘D盘E盘F盘G盘H盘存在,其余不存在盘;

   DWORD  DiskInfo;  int DiskCount=0; //定义8位的整型变量

   DiskInfo=GetLogicalDrives();

   while(DiskInfo) 

   {

      if(DiskInfo&1) //看该位是否为1,为1代表有对应的驱动器

          DiskCount++;

      DiskInfo>>=1; //DiskInfo=DiskInfo>>1,即DiskInfo右移一位

   }

   cout<<"该机器共有"<<DiskCount<<"个逻辑驱动器";


(2)取所有驱动器字符串信息,函数原型:

   DWORD GetLogicalDriveStrings(

          DWORD nBufferLength, // 缓冲区的长度

          LPTSTRlpBuffer       // 指向所有驱动器字符串的指针);

   使用该函数一般分两个步骤:

    ①求所有驱动器的字符串信息长度

   把0传递给API函数GetLogicalDriveStrings()的两个形参,函数的返回值就是所有驱动器的字符串信息长度。语句为:DriveStringLength=GetLogicalDriveStrings(0,NULL);

    ②动态分配内存空间保存所有驱动器的字符串信息

  通过new函数在栈区申请内存于字符指针变量DriverStr,然后把上一步求的所有驱动器的字符串信息长度DriveStringLength和准备保存所有驱动器的字符串缓冲区地址

DriverStr传递给API函数GetLogicalDriveStrings()的两个形参,这样求得的所有驱动器的字符串信息就保存到缓冲区DriverStr中,注意每个驱动器字符串的长度为4,假设该机器

有A、B、C、D四个驱动器则在缓冲区DriverStr保存的内容是A:\<NULL>B:\<NULL>C:\<NULL>D:\<NULL><NULL>,其中<NULL>表示的是空字符,各个驱动器之间靠<NULL>

来分隔,最后以<NULL>结束。典型的代码为:

    DriverStr=new char[DriveStringLength+1];

    GetLogicalDriveStrings(DriveStringLength,(LPTSTR)DriverStr);

 (3)取驱动器类型

  倘若还要知道每个驱动器标识符各代表什么类型的驱动器时,如A:代表软盘还是硬盘,F:代表光盘还是U盘(可移动盘),就要使用API函数GetDriveType(),该函数的原型为:

UINT GetDriveType(LPCTSTR lpRootPathName  //驱动器的根目录);

   函数返回值为驱动器的类型,若值为DRIVE_REMOVABLE,代表的是可移动U盘,若值为DRIVE_FIXED,代表的是固定盘,若值为CDROM,代表的是光盘等。

下面是一个实例:

#include<iostream.h>

voidmain()

{

  DWORD  DiskInfo;

  char *DriverStr;

  UINT type;

  short DriveStringLength;

  _int8 DiskCount=0;//定义8位的整型变量

  DiskInfo=GetLogicalDrives();//取机器上的驱动器信息于DiskInfo

  while(DiskInfo

  {

  if(DiskInfo&1) //看该位是否为1,为1代表有对应的驱动器

  DiskCount++;

  DiskInfo>>=1;

  }

   cout<<"该机器共有"<<DiskCount<<"个逻辑驱动器\n";

  DriveStringLength=GetLogicalDriveStrings(0,NULL);

  //求整个驱动器的字符串信息的长度,每个驱动器字符串的长度为4

  DriverStr=newchar[DriveStringLength+1];

  GetLogicalDriveStrings(DriveStringLength,(LPTSTR)DriverStr);

  //求整个驱动器的字符串信息于DriverStr

    for(short i=0;i<(int)(DriveStringLength/4);i++)

  {

  type=GetDriveType(DriverStr+i*4);

  //取驱动器的类型是软盘、硬盘、光盘、可移动U

  if(type==DRIVE_CDROM)  //如果是光驱的话

     cout<<"驱动器"<<DriverStr+i*4<<"是光驱\n";

  }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值