当前位置:首页 > 代码 > 正文

关于c中用mfc检测u盘盘符的代码的信息

admin 发布:2022-12-19 03:54 132


今天给各位分享c中用mfc检测u盘盘符的代码的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何用C语言读取U盘容量

char strdir[10];

for(char cc='A';cc='Z';cc++)

{

  sprintf(strdir,"%c",cc);

  if(GetDriveType((LPCTSTR)strdir)==DRIVE_REMOVABLE)//移动盘

  {

      return strdir;  //获取到U盘盘符

  }

}

//在有外设安装的时候,一般都会向所有窗口广播 WM_DEVICECHANGE 消息,

处理这个消息,安装时候在 DBT_DEVICEARRIVAL 中

处理 DEV_BROADCAST_HDR, DEV_BROADCAST_VOLUME 就可以得到 U 盘的盘符。

VC 中获得U盘的盘符

你的基本功不算太扎实呀。

-是C里面最重要的指针的概念。pDevVolume是指向DEV_BROADCAST_VOLUME结构的一个指针,该结构可以参见MSDN的描述,可以见参考资料。

该结构的dbcv_unitmask为DWORD类型,当然是数字了,它是用位来描述盘符的数字,第0位为1,表示是A盘,第1位为1表示为B盘,依此类推,你需要熟悉位操作。

decv_glags是对设备类型的判断,DBTF_MEDIA应该表示是光盘,所以上段代码中对光盘类型的进行了忽略

我想实现点击 一个 button 就可以弹出U盘,求MFC代码实现呀

你用classwizard生成一个对话框的工程,把如下在代码参考main函数的调用加到button的onclick就好了:

#include windows.h

#include dbt.h

#include stdio.h

#include math.h

#define LOCK_TIMEOUT 10000 // 10 Seconds

#define LOCK_RETRIES 20

/***************

Function: UninstallUsb

Description: 根据盘符将usb设备弹出

Parameters:

discId 要弹出的盘符

Returns:

-1 失败

0 成功

***************/

static int UninstallUsb(char *discId)

{

DWORD accessMode = GENERIC_WRITE | GENERIC_READ;

DWORD shareMode = FILE_SHARE_READ | FILE_SHARE_WRITE;

HANDLE hDevice;

long bResult = 0;

DWORD retu = 0;

DWORD dwError;

DWORD dwBytesReturned;

DWORD dwSleepAmount;

int nTryCount;

char szDriv[10];

if(discId == NULL){

return 0;

}

dwSleepAmount = LOCK_TIMEOUT/LOCK_RETRIES;

sprintf(szDriv,"\\\\.\\%s:",discId);

hDevice = CreateFile(szDriv,accessMode,shareMode,NULL,OPEN_EXISTING,0,NULL);

if(hDevice == INVALID_HANDLE_VALUE){

printf("uninstallusb createfile failed error:%d\n",GetLastError());

return -1;

}

#if 0

//此循环是用于锁定要弹出的U盘设备,如果U盘在使用,则循环等待

// Do this in a loop until a timeout period has expired

for(nTryCount = 0;nTryCount LOCK_RETRIES;nTryCount++){

if(DeviceIoControl(hDevice,FSCTL_LOCK_VOLUME,NULL,0,NULL,0,dwBytesReturned,NULL)){

break;

}

}

//卸载U盘卷,不论是否在使用

dwBytesReturned = 0;

if(!DeviceIoControl(hDevice,FSCTL_DISMOUNT_VOLUME,NULL,0,NULL,0,dwBytesReturned,NULL)){

printf("deviceIoConrol FSCTL_DISMOUNT_VOLUME failed\n");

}

#endif

dwBytesReturned = 0;

PREVENT_MEDIA_REMOVAL PMRBuffer;

PMRBuffer.PreventMediaRemoval = FALSE;

if(!DeviceIoControl(hDevice,IOCTL_STORAGE_MEDIA_REMOVAL,PMRBuffer,sizeof(PREVENT_MEDIA_REMOVAL),NULL,0,dwBytesReturned,NULL)){

printf("DeviceIoControl IOCTL_STORAGE_MEDIA_REMOVAL failed:%d\n",GetLastError());

}

bResult = DeviceIoControl(hDevice,IOCTL_STORAGE_EJECT_MEDIA,NULL,0,NULL,0,retu,NULL);

if(!bResult){

CloseHandle(hDevice);

printf("uninstallusb DeviceIoControl failed error:%d\n",GetLastError());

return -1;

}

CloseHandle(hDevice);

return 0;

}

int main()

{

UninstallUsb("H");

return 0;

}

MFC 中 关于获取U盘信息的方法,详情见描述。

关于1:U盘对病毒的传播要借助autorun.inf文件的帮助,病毒首先把自身复制到u盘,然后创建一个autorun.inf,在你双击u盘时,会根据autorun.inf中的设置去运行u盘中的病毒,我们只要可以阻止autorun.inf文件的创建,那么U盘上就算有病毒也只能躺着睡大觉了,大家可能也想到这个,但是不管给autorun.inf设置了什么属性,病毒都会更改它,我提到的方法就是,在根目录下,删除autorun.inf文件,然后,根目下建立一个文件夹,名字就叫autorun.inf,这样一来,因为在同一目录下,同名的文件和文件夹不能共存的原理,病毒就无能为力,创建不了autorun.inf文件了,以后会不会出新病毒,自动去删文件夹,然后再建立文件就不知道了,但至少现阶段,这种方法是非常有效的。

应对策略

1、在插入U盘时按住键盘 shift 键直到系统提示“设备可以使用”,然后打开U盘时不要双击打开,也不要用右键菜单的打开选项打开,而要使用资源管理器(打开我的电脑,按下上面的“文件夹”按钮,或者开始-所有程序-附件-windows资源管理器)将其打开,或者使用快捷键winkey+E打开资源管理器后,一定通过左侧栏的树形目录打开可移动设备!(要养成这样的良好习惯)

2、如果盘内有来路不明的文件,尤其是文件名比较诱惑人的文件,必须多加小心;需要特别提示的是,不要看到图标是文件夹就理所当然是文件夹,不要看到图标是记事本就理所当然是记事本,伪装图标是病毒惯用伎俩。

3、要有显示文件扩展名的习惯 。方法:打开“我的电脑”,工具--文件夹选项--查看,去掉“隐藏已知文件类型的扩展名”的勾,建议选择显示扩展名同时选上“显示隐藏文件”,去掉“不显示系统文件”的勾,这样可以对病毒看得更清楚。有图标的诱人的病毒文件基本都是可执行文件,显示文件扩展名之后,通过文件名后的".exe"即可判断出一个文件可执行文件,从而不会把伪装的病毒可执行文件误认为是正常文件或文件夹。

4、最后不管你用什么办法,或者用什么软件,插入U盘然后用这个方法检验你有没有中Autorun.inf型病毒的风险。

关于2:这个基本没什么问题,打开ie时杀毒软件会占用大量内存,如果你的系统cpu和内存不是特别强大的话就会卡。杀毒软件一般都会占用大量内存。卡巴斯基最为突出。

关于3:agentsvr.exe是一个ActiveX插件,用于多媒体程序。这不是纯粹的系统程序,但是如果终止它,可能会导致不可知的问题。

eouwiz.exe :Intel无线网络相关程序。

RSTray.exe是瑞星卡卡上网安全助手6.0的实时监控程序。

dot1xcfg.exe :Intel802.1x无线网络适配器设置程序。

zcfgsvc.exe是Intel零配置MFC程序,与网络相关设备安装。

iFrmewrk.exe是Intel无线网卡相关软件。

RavTasK.exe(瑞星任务计划程序)

taskmgr.exe用于Windows任务管理器。

syntpenh.exe是笔记本电脑触摸板相关程序。

wcourier.exe 这是一个华硕的无线网络的相关程序

hcontrol.exe是华硕键盘相关配置程序。

ras.exe 瑞星卡卡安全助手程序。

rfwmain.exe 瑞星防火墙主程序

daemon.exe是一个后台程序,用于打开例如iso之类的镜像文件,做成虚拟光驱文件。

atkosd.exe是华硕笔记本电脑驱动程序的文件。

ctfmon.exe是Microsoft Office产品套装的一部分。它可以选择用户文字输入程序,和微软Office XP语言条。这不是纯粹的系统程序,但是如果终止它,可能会导致不可知的问题。

knownsvr.exe是瑞星卡卡上网安全助手6.0的相关进程,每次启动卡卡时即出现。

notepad.exe是Windows自带的记事本程序svchost.exe是一个属于微软Windows操作系统的系统程

alg.exe是微软Windows操作系统自带的程序。它用于处理微软Windows网络连接共享和网络连接防火墙。

wdfmgr.exe是微软microsoftwindowsmedi

c中用mfc检测u盘盘符的代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、c中用mfc检测u盘盘符的代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/1988.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载