检测u盘的插入并返回盘符

diaoyaning163 2008-07-18 06:06:20
以下是主程序:

#include <windows.h>
#pragma comment(linker,"/subsystem:windows ")
#include "stdafx.h"
#include "resource.h"
#include <Dbt.h>
#include <stdio.h>
int WINAPI Winmain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdshow ) ;
//int main(void);

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);//

TCHAR FirstDriveFromMask (ULONG unitmask);

LRESULT CALLBACK WndProc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{

case WM_CREATE:/*初始化*/

MessageBox(hWnd, "go!", "405 Studio", MB_OK);

break;

case WM_DEVICECHANGE:

if(wParam == DBT_DEVICEARRIVAL)//设备激活
{
PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;

PDEV_BROADCAST_VOLUME lpdbv = (PDEV_BROADCAST_VOLUME)lpdb;

char szMsg[80];
wsprintf (szMsg, "Drive %c: Media has arrived.\n",
FirstDriveFromMask(lpdbv ->dbcv_unitmask));

MessageBox (hWnd, szMsg, "WM_DEVICECHANGE", MB_OK);

}

break;

default:
return DefWindowProc (hWnd, message, wParam, lParam) ;
}

return 0;
}

//FirstDriveFromMask是一个用返回盘符(A,B,C ....)的简单函数
char FirstDriveFromMask (ULONG unitmask)
{
char i;

for (i = 0; i < 26; ++i)
{
if (unitmask & 0x1)
break;
unitmask = unitmask >> 1;
}

return (i + 'A');
}
调试时出现的错误是:
Linking...
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/源1.exe : fatal error LNK1120: 1 unresolved externals
执行 link.exe 时出错.
请各位大虾看一下那里有错误,帮忙指点,小弟新手,在此拜谢啦!!
...全文
148 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
diaoyaning163 2008-07-18
  • 打赏
  • 举报
回复
我加上拉...怎么还不对啊?其他的属性用设置吗?
Daixiu 2008-07-18
  • 打赏
  • 举报
回复
支持楼上
jingzhongrong 2008-07-18
  • 打赏
  • 举报
回复
你在上面有声明,随便哪个地方写
diaoyaning163 2008-07-18
  • 打赏
  • 举报
回复
请您说具体点好吗? 在哪里写呢?
「已注销」 2008-07-18
  • 打赏
  • 举报
回复
没写WINMAIN吧?
首先关于 [评价可免费] 的严重声明: 一、评价=评论加评价(评星星); 二、评价必须是下载完了该资源后的评价,没下载就评论无效; 三、如果正确评价了,返还积分可能需要等等,系统需要反应下。呵呵 评论时记得要评分。然后会返回给你花费的分再加1分.理论上有十分就可以下载完所有的资源了。一般人我不告诉他。 第一款真正意义上的U盘扩容检测工具 集5大功能于一身:扩容检测、坏块扫描、速度测试、老化测试、坏块屏蔽 MyDiskTest是一款U盘/SD卡/CF卡等移动存储产品扩容识别工具。可以方便的检测出存储产品是否经过扩充容量,以次充好。 还可以检测FLASH闪存是否有坏块,是否采用黑片,不破坏磁盘原有数据。 并可以测试U盘的读取和写入速度,对存储产品进行老化试验。是你挑选U盘和存储卡必备的工具。 MyDiskTest在手,U盘无忧 第一款真正意义上的U盘扩容检测工具。 集5大功能于一身:扩容检测、坏块扫描、速度测试、老化测试、坏块屏蔽。 MyDiskTest是一款U盘/SD卡/CF卡等移动存储产品扩容识别工具。可以方便的检测出存储产品是否经过扩充容量,以次充好。还可以检测FLASH闪存是否有坏块,是否采用黑片,不破坏磁盘原有数据。 并可以测试U盘的读取和写入速度,对存储产品进行老化试验。是你挑选U盘和存储卡必备的工具。 ★MyDiskTest主界面,此时未插入存储设备,软件提示:请插入要测试的设备。 ★MyDiskTest会自行侦测出所有插入的可移动磁盘,选择你要检测的磁盘。 ★点击“立即开始测试此驱动器”,稍等片刻,结果马上知晓。没错,就是这么简单! ★选中“同时检测是否采用黑片”,从结果中可以看出,实际容量比未选中时略小一些,结果更为严谨。 “坏块检测”与“同时检测是否采用黑片”的区别: 两者检测的算法不同,前者速度快,适合要大批量检测扩容使用,但无法得知是否采用了黑片FLASH。 后者检测速度慢一些,结果更为严格,并且可以得知是否采用黑片,建议普通消费者使用。 如果没有检测到扩容,那么就恭喜啦。当然还可以选择“全面扫描”进一步测试。 ★如果检测到坏块,就会弹出一个提示框,可以选择进入坏块屏蔽功能。 PS:不过建议大家还是用ChipGenius检测后,用相应的量产工具进行量产。 ★坏块软屏蔽窗口,左下方自动显示要操作的磁盘名称。 ★点击“立即执行”,如果磁盘存有文件,就会弹出一个提示框,询问是否进行格式化, 为了能够完全屏蔽坏块,我们当然选择“是”了。 ★点击开始进行格式化。 ★开始屏蔽坏块操作,显示为“0”的表示是好的块,显示为“X”的表示为坏块。右边是坏块列表,看来坏块还真不少。 下方提示“坏块空间已被隔离,可以放心使用”。这时就可以关闭窗口了。(如下图) 全面扫描及检测坏块功能: 如果在上一步的测试中没有发现问题,我们还可以再进行更为严格的全面扫描。 选择“全面扫描及检测坏块功能”,注意这个方式扫描速度较慢,但可以检测出移动盘坏块的数量和U盘实际可用空间。并可测试U盘的读写速度(如下图) U盘/存储卡是现代人交换数据,存储文件的重要途径和载体,所以安全问题显得尤其重要,如何挑选一款好U盘就成了首当其冲的问题。 ★使用MyDiskTest的“稳定性测试(老化测试)”功能就可以帮助你挑选到一款稳定品质的U盘/卡。 我们先勾选“全面扫描”,再勾选“稳定性测试”,在后面会有一个数字框让我们输入老化测试的次数。一般使用默认的5次即可,也可以输入更高的次数,当然测试的时间会更长,在中途可以按停止测试来中止,也可以查看结果。(如下图) ★点击“立即开始”,结果出来了,我的劣质U盘连2次测试都未通过! 速度测试: MyDiskTest集成了功能完善的速度测试模块,模拟我们正常读写文件,使测试的结果更加真实可靠。完全可以满足大家测试移动磁盘的需求,帮助大家挑选到一款高速U盘/卡。 ★选择“速度测试”,点击“立即开始”,稍等一会,测试结果就出来了:平均读写速度、峰值读写速度。 ★如果你觉得这个结果太简洁了一些,那就选中“文件操作速度测试”,这时会弹出高级速度测试窗口。 ★呵呵,看起来一目了然吧,最上面一栏显示待测磁盘的盘符和磁盘名称,第二栏左边是将要测试的项目,中间一栏在测试时会显示测试的结果。其它的就看图吧,点击“开始测试”let’s go ★速度测试结果,赶紧抓图帖到网站上让大家伙评评。就我这自已“生产”的扩容U盘,有这个速度算是不错了。不过想要逃出MyDiskTest的慧眼还是不可能的。它早就看穿我的扩容真面目啦。 ★关闭MyDiskBenchmark窗口,刚才速度检测的结果文本就保存到主程序窗口中了。 ----------------------------------- 历史更新: V2.10 增加一种坏块检测算法(未选检测黑片时为快速测扩容),可满足大量检测的需求 增加文件操作速度测试模块,检测出的结果更帖近实际操作 V2.00 1、增加英文语言界面,并可根据操作系统自动识别 2、增加屏蔽FLASH坏块功能,使数据存储更安全 注意:使用此功能后格式化磁盘会使屏蔽功能失效 V1.80 1、加强了速度测试功能,在选购存储产品时更加实用 2、修正了当U盘没有一个好区块时显示为1M的bug V1.70 1、增加了对量产成本地磁盘的U盘的支持 2、增加对量产为USB HDD的U盘的识别能力 3、修正了一个可能造成非法操作的问题 4、排除了对USB光驱的检测,因为不可写 V1.60 1、修正了测试出错的处理,当测试是可能导致数据损坏的情况给出提示。 2、加入了进行稳定性(老化)测试时可以选择测试的次数。 V1.50 1、增加了稳定性(老化)测试功能,助你挑选质量上乘的U盘/存储卡 2、增加了显示设备名称功能 3、修正了一个可能导致内存溢出非法操作的bug 4、优化了程序代码 V1.45 1.改进了快速扫描方式的算法,扫描结果更准确(代价是比原来稍慢) 2.增加了自动感应USB设备插拔,不必每次换设备都手动刷新(注意!测试中一定不要插拔被测设备,以免数据丢失!且测试过程中不响应其他设备的插拔动作。) V1.40 优化了磁盘坏块扫描算法 V1.30 改进了无法检测大于2G容量问题,改进检测算法 ----------------------------------- 问题反馈: http://www.mydigit.net/read.php?tid=22095 ----------------------------------- 使用声明: 在检测前请自行备份U盘/SD卡内的文件资料,以防数据丢失。
软件介绍: chipgenius4.0新修改了USB设备枚举算法,欢迎大家测试!特别是之前使用v3.02版本在Win7上检测失败或者结果错乱的xdjm们,期待你们的测试结果哦!!!如果测试ok的话,不久新版就会出炉版本更新:V4.001、全面支持Win7、Win8、WinXP、Win2000系统(含32Bit/64Bit)2、全面支持USB3.0、USB2.0、USB1.1接口检测3、增加USB设备电流检测、设备版本号检测功能4、增加一键截图功能,方便提交检测信息版本历史:Ver3.00Alpha 0 - 问题多多,不细说了^_^Alpha 1 - 增加了错误信息的显示,以便收集出错情况Alpha 2 - ①修正了一处可能造成闪退的代码;②支持USB3.0控制器的检测(试验);③修正了设备连接关系显示Beta 1 - ①解决关于USB3.0控制器下挂非USB3.0 HUB的一些小bug;②准确获取U盘、移动硬盘、USB光驱的盘符;③可以显示选定设备除芯片信息外的其他信息(设备未返回信息的字段自动隐藏);④提供摘要和详细信息两种视图;⑤自动选中列表中出现的第一个USB存储设备Beta 2 - ①修改了界面;②改善了在接有慧荣U盘的时候反应迟钝的问题;③自动插拔检测;④芯片数据库查询;⑤因为此版本改动巨大,故直接修改主版本号为4.00 ^_^Beta 3 - ①修改了一处下标越界的错误处理;②将盘符合并到摘要视图,去掉了详细接口显示;③支持查询USB HUB的TT数量;④支持更详细的USB设备类型检测Beta 4 - ①增加设备支持的USB总线协议版本检测,可以区分工作在低速状态下的高速设备;②支持量产成光驱 移动盘的U盘设备;③对于根集线器不返回端口数信息的主板,隐藏根集线器的端口数量信息Beta 5 - ①支持自动更新数据库;②增加一键截图功能(试验);③检测插入动作时,自动选中新插入的盘;④修正了大字体环境下运行背景图错位的问题Beta 6 - ①修正某些情况加载数据库出现“Out of memory”错误;②修正从没有数据库或者数据库损坏的情况下在线更新到新数据库后界面不自动刷新的问题;③微调了检测结果的显示方式,突出芯片相关的信息

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧