资源简介
获取U盘VID,PID,盘符,物理序列号(源码)可运行:
在论坛上只是看到了获取逻辑序列号等信息的资料
:eek::eek:
后来参考了些大侠的资料和讲解:终于搞出来了!
(当然源码对于U盘,移动硬盘,手机卡,MP3/4都OK )
不只大虾名讳,只能在此感谢....
【vc6 绝对OK ....有问题空间留言谢谢】
最后获得的类似:
PFAD_G\VID_0951&PID_1623\001CC0EC32CDEA10969B011D
PFAD:盘符
中间 VID PID
最后的是 物理序列号
代码片段和文件信息
// My_USB_ONE.cpp : Defines the entry point for the console application.
//
#include “stdafx.h“
int GetDevicePath(LPGUID lpGuid CString* pszDevicePath );
DEFINE_GUID(DiskClassGuid 0x53f56307L 0xb6bf 0x11d0 0x94 0xf2 0x00 0xa0 0xc9 0x1e 0xfb 0x8b);
//DEFINE_GUID(UsbClassGuid 0xa5dcbf10L 0x6530 0x11d2 0x90 0x1f 0x00 0xc0 0x4f 0xb9 0x51 0xed);
BOOL GetAbcPid(char *chID)
{
const char *ABC_ID = “USB\\VID“; // 固定ID标识判断是否为USB存储设备,排除兼容移动硬盘情况下的系统硬盘
const int nBas = lstrlen(ABC_ID);
_strupr(chID); // 看看还需要不,转换为大写
if(memcmp(chID ABC_ID nBas) != 0)
return (FALSE);
return (TRUE);
}
BOOL GetDevNum(PSP_DEVICE_INTERFACE_DETAIL_DATA pDetail)
{
HANDLE hDrive = CreateFile(pDetail->DevicePath 0 FILE_SHARE_READ | FILE_SHARE_WRITE NULL OPEN_EXISTING NULL NULL);
if ( hDrive != INVALID_HANDLE_VALUE )
{
// printf(“%d\n“hDrive);
STORAGE_DEVICE_NUMBER sdn;
DWORD dwBytesReturned = 0;
BOOL res = DeviceIoControl(hDrive IOCTL_STORAGE_GET_DEVICE_NUMBER
NULL 0 &sdn sizeof(sdn)
&dwBytesReturned NULL);
// printf(“%s\n“spdd.DevInst);
}
return 0;
}
int GetDevPfad_Num(CString *Pfad_Num)
{
/* 1. 获得路径盘符【有一点这里为了检测到移动硬盘 ,同时也检测到了硬盘 ,后期抛掉!】*/
LPTSTR lpDrives = new TCHAR[MAX_PATH];
DWORD dwLen = ::GetLogicalDriveStrings(MAX_PATH lpDrives);
BOOL bResult = FALSE;
CString temp_DeviceNumber; //用于临时保存DeviceNumber 转换数值
CString sDrives[26]={““}; //设备盘符路径集
HANDLE hDeviceHandle[26]; //设备句柄集
for(DWORD nIndex = 0hDevice_Num = 0; nIndex {
if(::GetDriveType(lpDrives + nIndex*4)==DRIVE_REMOVABLE||GetDriveType(lpDrives + nIndex*4)==DRIVE_FIXED) //nIndex*4 ???? (need resolve)
{
CString temp_Driver = “\\\\?\\“;
sDrives[nIndex]+=(CString)(lpDrives + nIndex*4) ; //nIndex*4 ???? (need resolve)
if(sDrives[nIndex]!=“A:\\“&&sDrives[nIndex]!=“B:\\“)
{
// 这里有个详细操作 即字符串的转换!!!
sDrives[nIndex]=temp_Driver+sDrives[nIndex].Left(2); //CString 类型的方法 “LEFT“ 截取!!
sDrives[nIndex]=sDrives[nIndex];
/* 调试信息 【1】 */
// printf(“%s\n“sDrives[nIndex]);
/* 2. 获得设备句柄集 */
hDeviceHandle[hDevice_Num] = CreateFile (sDrives[nIndex]
GENERIC_READ | GENERIC_WRITE //U盘式共享设备
FILE_SHARE_READ | FILE_SHARE_WRITE
NULL
OPEN_EXISTING //打开现有设备
0
NULL);
if (hDeviceHandle[hDevice_Num] == INVALID_HANDLE_VALUE)
{break; }
Pfad_Num[hDevice_Num]=“PFAD_“+sDrives[nIndex].Mid(41);
/* 调试信息 【2】 */
// printf(“%s\n“Pfad_Num[hDevice_Num]);
hDevice_Num++;
}
}
}
delete[] lpDrives;
/* 3. DeviceIoControl 【IOCTL_STORAGE_GET_DEVICE_NUMBER】 盘符对应的设备号 */
STORAGE_DEVICE_NUMBER sdn;
DWORD dwBytesReturned = 0;
//用IOCTL_STORAGE_GET_DEVICE_NUMBER 取设备号
for(DWORD hDeivce_Num_temp = 0; hDeivce_Num_temp < hDevice_Num; hDeivce_Num_temp++)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 122236 2011-01-27 17:22 My_USB_ONE(3.0)\cfgmgr32.h
文件 52938 2001-07-21 18:46 My_USB_ONE(3.0)\cfgmgr32.lib
文件 2393088 2011-01-28 15:12 My_USB_ONE(3.0)\Debug\My_USB_ONE.bsc
文件 1327189 2011-01-28 15:12 My_USB_ONE(3.0)\Debug\My_USB_ONE.exe
文件 1712300 2011-01-28 15:12 My_USB_ONE(3.0)\Debug\My_USB_ONE.ilk
文件 21821 2011-01-28 15:12 My_USB_ONE(3.0)\Debug\My_USB_ONE.obj
文件 5603796 2011-01-28 15:11 My_USB_ONE(3.0)\Debug\My_USB_ONE.pch
文件 2737152 2011-01-28 15:12 My_USB_ONE(3.0)\Debug\My_USB_ONE.pdb
文件 0 2011-01-28 15:12 My_USB_ONE(3.0)\Debug\My_USB_ONE.sbr
文件 98045 2011-01-28 15:11 My_USB_ONE(3.0)\Debug\StdAfx.obj
文件 1031319 2011-01-28 15:11 My_USB_ONE(3.0)\Debug\StdAfx.sbr
文件 246784 2011-01-28 15:21 My_USB_ONE(3.0)\Debug\vc60.idb
文件 471040 2011-01-28 15:12 My_USB_ONE(3.0)\Debug\vc60.pdb
文件 5197 2001-08-17 14:12 My_USB_ONE(3.0)\devioctl.h
文件 4109 2011-01-26 15:04 My_USB_ONE(3.0)\devioctl.h.txt
文件 8344 2011-01-28 16:49 My_USB_ONE(3.0)\My_USB_ONE.cpp
文件 2976 2011-01-28 15:27 My_USB_ONE(3.0)\My_USB_ONE.dsp
文件 528 2011-01-25 14:23 My_USB_ONE(3.0)\My_USB_ONE.dsw
文件 50176 2011-01-28 16:49 My_USB_ONE(3.0)\My_USB_ONE.ncb
文件 55808 2011-01-28 16:49 My_USB_ONE(3.0)\My_USB_ONE.opt
文件 1866 2011-01-28 16:49 My_USB_ONE(3.0)\My_USB_ONE.plg
文件 25512 2011-01-26 14:54 My_USB_ONE(3.0)\Ntddstor.h
文件 1232 2011-01-25 14:23 My_USB_ONE(3.0)\ReadMe.txt
文件 102400 2011-01-28 16:49 My_USB_ONE(3.0)\Release\My_USB_ONE.exe
文件 11953 2011-01-28 16:49 My_USB_ONE(3.0)\Release\My_USB_ONE.obj
文件 4018132 2011-01-28 16:32 My_USB_ONE(3.0)\Release\My_USB_ONE.pch
文件 603 2011-01-28 16:32 My_USB_ONE(3.0)\Release\StdAfx.obj
文件 50176 2011-01-28 16:49 My_USB_ONE(3.0)\Release\vc60.idb
文件 151818 2006-09-13 08:55 My_USB_ONE(3.0)\setupapi.lib
文件 297 2011-01-25 14:23 My_USB_ONE(3.0)\StdAfx.cpp
............此处省略7个文件信息
- 上一篇:遗传算法c++源程序
- 下一篇:VC MFC 入门
相关资源
- NVIDIA_CUDA_C_ProgrammingGuideCUDA 编程指南
- C语言实现的U盘 防火墙
- video超适合自学的C++基础视频_深入浅
- MFC中调用CUDA及配置等
- PID调节电机转速 配合MPU6050
- 积分分离型PID控制 匿名四轴波形输出
- PID参数整定一本通
- rapid Scada组态软件
- PID学习资料 各种PID解释和应用
- 自适应PID,C语言源码
- C语言C++实战之——U盘偷猎者
- DSP的PID控制程序
- U盘小偷程序包括C++源码
- SuperPid修改进程PID工具驱动级.别名.
- MFCJunior U盘SD卡寿命测试工具
- C语言实现PID控制直流电机调速含pro
- mfc + d3d实现的视频播放器
- NCDDE服务连接DDE封装的APIddehelper
- 数字PID控制器 Proteus软件仿真
- OpenCV视频的保存以及显示
- 模糊PID控制C语言程序.doc
- Project1.rar
- 模糊PID的C语言程序
- 自适应模糊PID代码 C++实现
- VFW(Video for Windows) for Delphi
- 控制方法的C语言实现
- VS2010版c++PID控制算法详尽注释
- U盘专杀文件夹EXE和快捷方式病毒,恢
- PID算法Matlab仿真程序和C程序
- 模糊pid算法c语言
评论
共有 条评论