• 大小: 4.89MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-16
  • 语言: C/C++
  • 标签: U盘  VID  PID  盘符  

资源简介

获取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个文件信息

评论

共有 条评论