Windows API 逐个逐个学MessageBox(5) 遍历驱动器并获取驱动器属性 GetLogicalDriveStrings、GetDriveTypeA...

      首先还是贴代码

      VC++ Code:

/* *************************************《精通Windows API》 * 示例代码* GetVolumeInfo.c* 4.2.1    遍历驱动器并获取驱动器属性**************************************//* 头文件 */
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include<string.h>
/* 预定义 */
#define BUFSIZE 1024
/* 函数申明 */
BOOL GetDirverInfo(LPSTR szDrive);/* ************************************* 功能    应用程序主函数,遍历驱动器并调用*            GetDirverInfo 获取驱动器属性**************************************/
void main(void)
{CHAR szLogicalDriveStrings[BUFSIZE];PCHAR szDrive;CHAR lStr;int i ;ZeroMemory(szLogicalDriveStrings,BUFSIZE);// 获取逻辑驱动器卷标名GetLogicalDriveStrings(BUFSIZE - 1,szLogicalDriveStrings);    //strcpy(lStr,szLogicalDriveStrings,sizeof(szLogicalDriveStrings)/sizeof(CHAR));szDrive = (PCHAR)szLogicalDriveStrings;// 循环处理每个卷do{if(!GetDirverInfo(szDrive)){printf("\nGet Volume Information Error: %d", GetLastError());}szDrive += (lstrlen(szDrive)+1);//szDrive = szDrive +lstrlen(szDrive);
    }while(*szDrive!='\x00');scanf("%d",&i);
}/* ************************************* BOOL GetDirverInfo(LPSTR szDrive)* 功能    获取驱动器的属性* 参数    LPSTR szDrive*     指明要获取属性的驱动器的根路径 如 C:\* 返回值 BOOL 是否成功**************************************/
BOOL GetDirverInfo(LPSTR szDrive)
{UINT uDriveType;DWORD dwVolumeSerialNumber;DWORD dwMaximumComponentLength;DWORD dwFileSystemFlags;TCHAR szFileSystemNameBuffer[BUFSIZE];printf("\n%s\n",szDrive);uDriveType = GetDriveType(szDrive);// 判断类型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, NULL, 0,&dwVolumeSerialNumber,&dwMaximumComponentLength,&dwFileSystemFlags,szFileSystemNameBuffer,BUFSIZE)){return FALSE;}printf ("\nVolume Serial Number is %u",dwVolumeSerialNumber);printf ("\nMaximum Component Length is %u",dwMaximumComponentLength);printf ("\nSystem Type is %s\n",szFileSystemNameBuffer);if(dwFileSystemFlags & FILE_SUPPORTS_REPARSE_POINTS){printf ("The file system does not support volume mount points.\n");}if(dwFileSystemFlags & FILE_VOLUME_QUOTAS){printf ("The file system supports disk quotas.\n");}if(dwFileSystemFlags & FILE_CASE_SENSITIVE_SEARCH){printf ("The file system supports case-sensitive file names.\n");}//you can use these value to get more informaion////FILE_CASE_PRESERVED_NAMES//FILE_CASE_SENSITIVE_SEARCH//FILE_FILE_COMPRESSION//FILE_NAMED_STREAMS//FILE_PERSISTENT_ACLS//FILE_READ_ONLY_VOLUME//FILE_SUPPORTS_ENCRYPTION//FILE_SUPPORTS_OBJECT_IDS//FILE_SUPPORTS_REPARSE_POINTS//FILE_SUPPORTS_SPARSE_FILES//FILE_UNICODE_ON_DISK//FILE_VOLUME_IS_COMPRESSED//FILE_VOLUME_QUOTASprintf("...\n");return TRUE;
}

 

 

     编译后运行:

  

vb6 Code(转自网上):

        1).类模块中:

Option Explicit'============= 类模块里,名称:GetDiskDrive ===========
'local variable(s) to hold property value(s)
Private mvarDriveCount As Integer 'local copy'Value   Name                  Meaning
'------------------------------------------------------------
'0       DRIVE_UNKNOWN         The drive type cannot be determined.
'1       DRIVE_NO_ROOT_DIR     The root directory does not exist.
'2       DRIVE_REMOVABLE       The disk can be removed from the drive.
'3       DRIVE_FIXED           The disk cannot be removed from the drive.
'4       DRIVE_REMOTE          The drive is a remote (network) drive.
'5       DRIVE_CDROM           The drive is a CD-ROM drive.
'6       DRIVE_RAMDISK         The drive is a RAM disk.
'-------------------------------------------------------------
Public Enum DriveTypeDRIVE_UNKNOWN = 0DRIVE_NO_ROOT_DIR = 1DRIVE_REMOVABLE = 2DRIVE_FIXED = 3DRIVE_REMOTE = 4DRIVE_CDROM = 5DRIVE_RAMDISK = 6
End EnumPrivate drvType(26) As Integer
Private drvName(26) As String
'Attribute drvName.VB_VarDescription = "DriveName"Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function GetDriveTypeA Lib "kernel32" (ByVal nDrive As String) As LongPublic Function GetDriveType(ByVal n As Integer) As Integer
'Attribute GetDriveType.VB_Description = "获得驱动器类型"GetDriveType = drvType(n)
End FunctionPublic Function GetDriveName(ByVal n As Integer) As String
'Attribute GetDriveName.VB_Description = "获得驱动器名称"GetDriveName = drvName(n)
End FunctionPublic Function GetDriveTypeName(ByVal n As Integer) As StringDim sTypeName As StringSelect Case nCase DRIVE_NO_ROOT_DIRsTypeName = "根目录不存在"Case DRIVE_REMOVABLEsTypeName = "可移动磁盘,如软盘"Case DRIVE_FIXEDsTypeName = "磁盘"Case DRIVE_REMOTEsTypeName = "磁盘映射"Case DRIVE_CDROMsTypeName = "CD-ROM"Case DRIVE_RAMDISKsTypeName = "U盘"Case ElsesTypeName = "未知类型"End SelectGetDriveTypeName = sTypeName
End FunctionPublic Property Let DriveCount(ByVal vData As Integer)
'Attribute DriveCount.VB_Description = "驱动器个数"
'used when assigning a value to the property, on the left side of an assignment.
'Syntax: X.DriveCount = 5mvarDriveCount = vData
End PropertyPublic Property Get DriveCount() As Integer
'used when retrieving value of a property, on the right side of an assignment.
'Syntax: Debug.Print X.DriveCountDriveCount = mvarDriveCount
End Property'With this class you can get the systme disk Drive Name and its type
Private Sub Class_Initialize()Dim PathStr As String * 200Dim DriveStr As StringDim L, i As IntegermvarDriveCount = 0If GetLogicalDriveStrings(200, PathStr) <> 0 ThenDriveStr = Mid(PathStr, 1, InStr(1, PathStr, Chr$(0) & Chr$(0)))L = Len(DriveStr)For i = 1 To L Step 4mvarDriveCount = mvarDriveCount + 1drvName(mvarDriveCount) = Mid(DriveStr, i, 3)drvType(mvarDriveCount) = GetDriveTypeA(drvName(mvarDriveCount))Next iEnd If
End Sub

 

       2):窗体中:

Private Sub Command4_Click()Dim i As IntegerDim drv As clsFileSystemAPIDim sResult As StringSet drv = New clsFileSystemAPIsResult = "驱动器总数为:" + CStr(drv.DriveCount) + vbCrLfFor i = 1 To drv.DriveCountsResult = sResult + drv.GetDriveName(i) + vbTab + drv.GetDriveTypeName(drv.GetDriveType(i)) + vbCrLfNext iLabel1.Caption = sResult
End Sub

 

        运行:

 

  

转载于:https://www.cnblogs.com/xiaoguanqiu/archive/2013/02/26/2933451.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576088.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apache如何在虚拟主机中实现用户验证

虚拟主机配置文件中&#xff0c;需要加入<Directory /data/web/test>AllowOverride AuthConfig</Directory>然后在虚拟主机的主目录&#xff0c;即DocumentRoot 目录下vi /data/web/test/.htaccess加入AuthName "frank share web" AuthType Basic Aut…

linux 内核编译安装及卸载

编译安装&#xff1a; 下载需要的包 apt-get install kernel-package libncurses5-dev fakeroot wget bzip2 cp linux-3.x.x /usr/src cd /usr/src/linux-3.x.x make menuconfig make modules make modules_install make make install sudo mkinitramfs -o /boot/initrd.img-3.…

Linux服务器安全之用户密钥认证登录(基于CentOS 7.0系统)

一、 密钥简介在Linux下&#xff0c;远程登录系统有两种认证方式&#xff1a;密码认证和密钥认证。密码认证方式是一种传统的安全策略。设置一个相对复杂的密码&#xff0c;对系统安全能起到一定的防护作用&#xff0c;但是也面临一些其他问题&#xff0c;例如密码暴力破解、密…

Servlet 3.0 新特性详解

简介 Servlet 是 Java EE 规范体系的重要组成部分&#xff0c;也是 Java 开发人员必须具备的基础技能&#xff0c;Servlet 3.0 是 Servlet 规范的最新版本。本文主要介绍了 Servlet 3.0 引入的若干重要新特性&#xff0c;包括异步处理、新增的注解支持、可插性支持等等&#xf…

LAMP环境下配置虚拟主机和域名的跳转

一、配置虚拟主机 vim /usr/local/apache2/conf/extra/httpd-vhost.conf <VirtualHost *:80> ServerAdmin webmasterdummy-host.example.com root邮箱 DocumentRoot "/data/123"虚拟主机存在的目录 ServerName 123.com 配置的虚拟主机域名 …

linux下搭建nagios监控

一、什么是nagios 1.nagios 简介 Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务&#xff0c;同时提供异常通知功能等。Nagios可运行在Linux/Unix平台之上&#xff0c;同时提供一个可选的基于浏览器的WEB界面以方便系统管理人…

Coursera NLP 笔记02

找到一个很好的英语笔记&#xff0c;等有空了再整理第二章http://files.asimihsan.com/courses/nlp-coursera-2013/notes/nlp.html#the-trigram-estimation-problem转载于:https://www.cnblogs.com/bertrandwdx/archive/2013/03/04/2943437.html

zabbix yum安装

zabbix的单个Server节点可以支持上万台设备&#xff0c;每秒可以处理1.5万次请求&#xff0c;理论上可以支持5万台设备.zabbix 的使用可以分为三类用户&#xff1a;入门用户&#xff08;熟悉Zabbix的安装跟配置&#xff09;&#xff0c;中级用户&#xff08;熟悉LAMP和LNMP环境…

Oracle 索引概述

Oracle 提供了多种不同类型的索引以供使用。简单地说&#xff0c;Oracle 中包括如下索引&#xff1a;B*树索引&#xff1a;这些是我所说的“传统“索引。到目前为止&#xff0c;这是 Oracle 和大多数其他数据库中最常用的索引。B*树的构造类似于二叉树&#xff0c;能根据键提供…

zabbix的安装

zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix由2部分构成&#xff0c;zabbixserver与可选组件zabbix agent。 一、Zabbix简介 1.1Zabbix简介   Zabbix是一个企业级的开源分布式监控解决方案&…

LinuxMySQL主从配置

mysql 主从配置-2主从 mysql 启动以后&#xff0c;我们来做一些配置。假设 3306 为主&#xff0c;3307 为从登陆 mysql 命令和参数/usr/local/mysql/bin/mysql登陆不同的 mysql 参数&#xff0c;可以 IP 也可以是 sockmysql -S /tmp/mysql.sock sock 登陆主mysql -h127.0.0.1 -…

通过udp及vlc传递视频流

可以通过两个host进行测试&#xff0c;如果是使用笔记本的摄像头进行测试&#xff0c;首先需要将当前用户添加到video组&#xff1a; sudo usermod -G video $user 发送方&#xff1a; vlc v4l2:// :v4l2-dev/dev/video0 :v4l2-width640 :v4l2-height480 --sout "#transco…

Linux主从复制

mysql主从复制 &#xff08;超简单&#xff09; 怎么安装mysql数据库&#xff0c;这里不说了&#xff0c;只说它的主从复制&#xff0c;步骤如下&#xff1a; 1、主从服务器分别作以下操作&#xff1a; 1.1、版本一致 1.2、初始化表&#xff0c;并在后台启动mysql 1.3、修…

对fgets的理解1

摘自《linux程序设计 中文第四版》第94页。 转载于:https://www.cnblogs.com/pengdonglin137/archive/2013/03/10/2952421.html

Linux 中mysql常用命令

测试环境&#xff1a; mysql5.0.45【注&#xff1a;可以在mysql中通过mysql> SELECT VERSION();来查看数据库版本】一、连接MYSQL。格式&#xff1a; mysql -h主机地址 -u用户名 &#xff0d;p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口&#xff0c;然后进入目录mysq…

java就业培训教程 第一章读书笔记

1.1 JVM和java的跨平台java的跨平台&#xff1a; java源程序经过编译->java字节码文件->由JVM执行其实对于java的跨平台的这个特性&#xff0c;刚开始不是很能理解&#xff0c;直到有一次&#xff0c;我把在ubuntu的java源文件弄到windows平台下&#xff0c;发觉好像不是…

mysql 查询某个字段SQL语句【mysql语句】

#查询某个字段为空的语句 SELECT * FROM passport WHERE passNickname IS NULL; 使用方法&#xff1a;SELECT * FROM 表名 WHERE 字段名 IS NULL; #查询某个字段不为空的语句 SELECT * FROM passport WHERE passNickname IS NOT NULL; 使用方法&#xff1a;SELECT * FROM…

NFS服务的搭建

服务器端1.安装依赖&#xff1a;1&#xff09;NFS的安装是非常简单的&#xff0c;只需要两个软件包即可&#xff0c;而且在通常情况下&#xff0c;是作为系统的默认包安装的。nfs -utils-* &#xff1a;包括基本的NFS命令与监控程序 portmap-* &#xff1a;支持安全NFS RPC服务…

qml学习文档-转载

importQtQuick1.0 /* 3.基本元素的介绍 基本可视化项 Item基本的项元素在QML中所有可视化的向都继承他 Rectangle基本的可视化矩形元素 Gradient定义一个两种颜色的渐变过程 GradientStop定义个颜色&#xff0c;被Gradient使用 Image在场景中使用位图 BorderImage(特殊的项)定义…

vsftpd的虚拟账户配置

1). yum -y install vsftpd db4-utils 2). 建立系统账号 useradd virftp -s /sbin/nologin 3). 建立虚拟账户 vim /etc/vsftpd/vsftpd_login test 1234567 4). 更改权限 chmod 600 /etc/vsftpd/vsftpd_login 5). 生成库文件密码 db_load -T -t h…