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,一经查实,立即删除!

相关文章

linux下搭建nagios监控

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

zabbix的安装

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

对fgets的理解1

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

普通用户的sudo权限,禁止root用户登录

假如增加用户zhangsan的sudo权限。 修改/etc/sudoers文件&#xff0c;在root下增加如下一行。 增加用户名zhangsan&#xff1a; 禁止root用户登录&#xff1a; 修改/etc/ssh/sshd_config文件&#xff0c; 将 PermitRootLogin前的#号去掉&#xff0c;yes改为no&#xff0c;重启n…

什么是 MVC ?

ylbtech-Architecture: MVCASP.NET中 MVC。 1.A,概念 MVC是一种目前广泛流行的软件设计模式&#xff0c;MVC英文即Model-View-Controller&#xff0c;即把一个应用的输入、处理、输出 流程按照Model、View、Controller的方式进行分离&#xff0c;这样一个应用被分成三 个层——…

zabbix邮件报警

原文出自http://www.iyunv.com/thread-22904-1-1.html 首先web端的配置顺序如下&#xff1a; 创建用户媒介-->创建用户组和用户-->针对trigger&#xff08;触发器&#xff09;添加报警动作&#xff0c;设置邮件发送用户及媒介1. 创建用户媒介创建用户媒介-->创建用户…

zabbix的入门到精通之zabbix的触发器Trigger

第1章 Trigger 1.1 创建一个trigger选择&#xff1a;ConfigurationHost双击: Trigger双击:Create Trigger(位置在右上角)后图下图所示NameTrigger的名字Expression添加Trigger表达式&#xff0c;双击add后添加Multiple PROBLEM events generationDescription对trigger的描述URL…

Zabbix 探索主机 “Discovery” 自动发现主机 详细图文教程

Zabbix 自动发现&#xff08;Discovery&#xff09;功能使用随着 监控 主机不断增多&#xff0c;有的时候需要添加一批机器&#xff0c;特别是刚用zabbix的童鞋 需要将公司的所有服务器添加到zabbix&#xff0c;如果使用传统办法去单个添加设备、分组、项目、图像…..结果应该是…

图解如何制作苹果OS X系统ISO光盘

当我们从网上下载的原版苹果系统是DMG格式的&#xff0c;要做系统引导必须做成ISO才能做系统盘&#xff0c;所以本文介绍在Windows7下如何来制作苹果系统光盘&#xff0c;各位黑苹果的童鞋要注意了。 准备以下三个东西。 1、苹果OS10.8种子下载 OS X 10.8 正式版种子.torrent 2…

zabbix的b编译安装

原文出自&#xff1a;http://www.ttlsa.com/zabbix/install-zabbix-on-linux-5-ttlsa/ 在了解《zabbix硬件、软件需求》之后&#xff0c;在你心里应该有备选的机器。今天开始安装zabbix。zabbix需要LNMP或者LAMP环境。环境的搭建不在本章范围内。 LNMP环境配置 Linux安装&#…

rsync+inotify实现服务器之间文件实时同步

原文转自http://dl528888.blog.51cto.com/2382721/771533/ 之前做了“ssh信任与scp自动传输脚本”的技术文档&#xff0c;此方案是作为公司里备份的方法&#xff0c;但在实际的运行中&#xff0c;由于主服务器在给备份服务器传输的时候&#xff0c;我们的主服务器需要备份的文件…

zabbix监控特定进程

原文出自http://www.2cto.com/os/201405/302249.html 由于一些服务器上跑着一些重要程序&#xff0c;需要对它们进行监控&#xff0c;公司用的是zabbix监控&#xff0c;之前都是在zabbix中添加自定义脚本对特定程序进行监控&#xff0c;最近看了zabbix的官方文档&#xff0c;发…

OMA 设备管理的通知发起的会话OMA Device Management Notification Initiated Session

介绍 一些设备不能持续侦听是否有需要连接的服务器。有的设备基于安全考虑不希望“开放一个端口”&#xff08;比如主动接受连接&#xff09;。无论如何&#xff0c;大多数设备可以接受未经请求的信息&#xff0c;有时也叫做“通知”。比如一些手持设备可以接收SMS文本短信息。…

【zabbix个性化监控之一】TCP连接数

一、在被监控端上设置 主要命令&#xff1a; netstat -an | awk /^tcp/ {S[$NF]} END {for(a in S) print a, S[a]}1netstat -an | awk /^tcp/ {S[$NF]} END {for(a in S) print a, S[a]}输出内容&#xff1a; TIME_WAIT 100 CLOSE_WAIT 5 FIN_WAIT1 6 ESTABLISHED 161 S…

CentOS 6.4下PXE+Kickstart无人值守安装操作系统

原文出自http://http://www.cnblogs.com/mchina/p/centos-pxe-kickstart-auto-install-os.html 一、简介 1.1 什么是PXE PXE(Pre-boot Execution Environment&#xff0c;预启动执行环境)是由Intel公司开发的最新技术&#xff0c;工作于Client/Server的网络模式&#xff0c;支持…

CSS3属性box-shadow使用教程

CSS3的box-shadow属性可以让我们轻松实现图层阴影效果。我们来实战详解一下这个属性。 1. box-shadow属性的浏览器兼容性 先来看一个这个属性的浏览器兼容性: Opera: 不知道是从哪个版本开始支持的&#xff0c;我在发这篇文章测试的时候&#xff0c;正好更新了Opera到最新的10.…

mysql 5.7.13 安装配置方法图文教程(linux)

原文出自&#xff1a;http://www.jb51.net/article/87160.htm 1系统约定 安装文件下载目录&#xff1a;/data/software Mysql目录安装位置&#xff1a;/usr/local/mysql 数据库保存位置&#xff1a;/data/mysql 日志保存位置&#xff1a;/data/log/mysql 2下载mysql 在官网&am…

Linux LVM硬盘管理及LVM扩容

原文出自http://www.cnblogs.com/gaojun/archive/2012/08/22/2650229.html 一、LVM简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写&#xff0c;它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合&#xff0c;相当于一个大硬盘来使用&…

android系统框架()

Android系统框架介绍: 1.大体框架: -src目录: 主要是完成java代码的编写 -assets目录: 资源目录 -res目录: 存储图片,布局文件和字符串,菜单等文件 -bin目录: 输出文件夹,如生成的APK文件 -project.properties: 工程属性文件配置 -gen目录: 系统自动生成的源代码目录 R.java默认…

Linux(CentOS6.5)下编译安装Nginx1.10.1

原文出自&#xff1a;http://www.cnblogs.com/comexchan/p/5815753.html Linux(CentOS6.5)下编译安装Nginx1.10.1 首先在特权账号&#xff08;root&#xff09;下安装编译时依赖项&#xff1a; yum install gcc gcc-c perl -y 首先以非特权账号&#xff08;本文以账号comex为例…