关于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站长 原创,转载请注明出处和附带本文链接;
- 上一篇:包含织梦去除文章中的代码的词条
- 下一篇:js简单的计算器代码下载(JS计算器)
相关推荐
- 05-17广州seo招聘信息,广州seo招聘信息网
- 05-17seo信息是什么,seo内容是什么意思
- 05-15关于黄山seo公司的信息
- 05-09网页代码,网页代码快捷键
- 05-09舆情信息在哪里找,舆情通
- 05-06单页网站的代码(完整的网页代码)[20240506更新]
- 05-06个人主页图片代码(个人主页图片代码怎么弄)[20240506更新]
- 05-06提取微信名片代码(微信名片信息提取)[20240506更新]
- 05-06php后台权限管理代码(php管理员权限)[20240506更新]
- 05-06付费观看代码php(付费观看代码)[20240506更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接