posts - 319, comments - 22, trackbacks - 0, articles - 11
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

API太多(C++版) -- GetDriveType GetVolumeInformation 讲解

Posted on 2011-08-09 07:29 RTY 阅读(2510) 评论(0)  编辑 收藏 引用 所属分类: C/C++Windows
API太多(C++版) -- GetDriveType GetVolumeInformation 讲解

GetDriveType 函数

头文件在“winbase.hGetDriveType Kernel32.dll中的一个函数,   

UINT GetDriveType (   LPCTSTR lpRootPathName    // root directory  );  

 

函数功能  判断磁盘类型  

参数说明  lpRootPathName包含了根目录路径的字符串指针  

返回值 (返回到EAX中为0 1 2 3 4 5 6) 

0     DRIVE_UNKNOWN未知的磁盘类型  

1     DRIVE_NO_ROOT_DIR说明lpRootPathName是无效的  

2     DRIVE_REMOVABLE可移动磁盘  

3     DRIVE_FIXED固定磁盘  

4     DRIVE_REMOTE网络磁盘  

5     DRIVE_CDROM光驱  

6     DRIVE_RAMDISKRAM

应用小例

#include <windows.h>

int main()

{

       if(GetDriveType("C:\\") = = DRIVE_FIXED)  (DRIVE_FIXED或者是3 )

       {

           MessageBox(NULL,"固定磁盘","",MB_OK);

       }

       system("pause");

       return 0;

}

GetVolumeInformation函数

GetVolumeInformation函数返回有关文件系统和其根目录调用中指定的卷的信息。在存在几个常见的文件系统(如NTFSFATCDFS新的文件系统可能会影响存储要求为应用程序,等,以便调用GetVolumeInformation可能会提供有价值的信息,您可以在您的应用程序中使用的开发中。若要计算磁盘空间和文件大小),也可以使用的某些信息此调用返回。

函数功能  获取与一个磁盘卷有关的信息  

返回值    Long,非零表示成功,零表示失败。会设置GetLastError

GetVolumeInformation(

  PChar  lpRootPathName:;       {磁盘驱动器代码字符串}

  PChar  lpVolumeNameBuffer:;          {磁盘驱动器卷标名称}

  DWORD  nVolumeNameSize:;         {磁盘驱动器卷标名称长度}

  PDWORD  lpVolumeSerialNumber:;       {磁盘驱动器卷标序列号}

  DWORD  var lpMaximumComponentLength:;  {系统允许的最大文件名长度}

   DWORD var lpFileSystemFlags:;         {文件系统标识}

  PChar  lpFileSystemNameBuffer:;          {文件操作系统名称 FATNTFS}

  DWORD nFileSystemNameSize:            {文件操作系统名称长度}

)

lpFileSystemFlags Long,用于装载一个或多个二进制位标志的变量。

对这些标志位的解释如下:  

FS_CASE_IS_PRESERVED文件名的大小写记录于文件系统  

FS_CASE_SENSITIVE文件名要区分大小写

FS_UNICODE_STORED_ON_DISK文件名保存为Unicode格式  FS_PERSISTANT_ACLS文件系统支持文件的访问控制列表(ACL)安全机制  FS_FILE_COMPRESSION文件系统支持逐文件的进行文件压缩  FS_VOL_IS_COMPRESSED整个磁盘卷都是压缩的  

应用小例:

#include <stdio.h>

#include <windows.h>

int main()

{

       char Root[] = "C:\\";

       char Volumelabel[20];

       DWORD SerialNumber;

       DWORD MaxCLength;

       DWORD FileSysFlag;

       char FileSysName[10];

       GetVolumeInformation( "C:\\",Volumelabel,255,&SerialNumber,&MaxCLength,&FileSysFlag,FileSysName,255);

       printf("卷标名称(Volumelabel) = %s\n",Volumelabel);

       printf("卷标序列号(SerialNumber) = 0x%x\n",*(&SerialNumber));

       printf("系统允许最大文件名长度(MaxCLength) = 0x%x\n",*(&MaxCLength));

       printf("文件系统标识(FileSysFlag) = 0x%x\n",*(&FileSysFlag));

       printf("文件系统名称(FileSysName) = %s\n",FileSysName);

       system("pause");

       return 0;

}


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理