資源簡介
獲取U盤VID,PID,盤符,物理序列號(源碼)可運行:
在論壇上只是看到了獲取邏輯序列號等信息的資料
:eek::eek:
后來參考了些大俠的資料和講解:終于搞出來了!
(當(dāng)然源碼對于U盤,移動硬盤,手機(jī)卡,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標(biāo)識判斷是否為USB存儲設(shè)備,排除兼容移動硬盤情況下的系統(tǒng)硬盤
const?int?nBas?=?lstrlen(ABC_ID);
_strupr(chID); //?看看還需要不,轉(zhuǎn)換為大寫
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?轉(zhuǎn)換數(shù)值
CString?sDrives[26]={““}; //設(shè)備盤符路徑集
HANDLE?hDeviceHandle[26]; //設(shè)備句柄集
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:\\“)
{
// 這里有個詳細(xì)操作?即字符串的轉(zhuǎn)換!!!
sDrives[nIndex]=temp_Driver+sDrives[nIndex].Left(2); //CString?類型的方法??“LEFT“?截取!!
sDrives[nIndex]=sDrives[nIndex];
/*??調(diào)試信息?【1】??*/
// printf(“%s\n“sDrives[nIndex]);
/* 2. 獲得設(shè)備句柄集 ?*/
hDeviceHandle[hDevice_Num]?=?CreateFile?(sDrives[nIndex]
GENERIC_READ?|?GENERIC_WRITE //U盤式共享設(shè)備
FILE_SHARE_READ?|?FILE_SHARE_WRITE
NULL
OPEN_EXISTING //打開現(xiàn)有設(shè)備
0
NULL);
if?(hDeviceHandle[hDevice_Num]?==?INVALID_HANDLE_VALUE)?
{break;?}
Pfad_Num[hDevice_Num]=“PFAD_“+sDrives[nIndex].Mid(41);
/*??調(diào)試信息?【2】??*/
// printf(“%s\n“Pfad_Num[hDevice_Num]);
hDevice_Num++;
}
}
}
delete[]?lpDrives;
/*??3.?DeviceIoControl?【IOCTL_STORAGE_GET_DEVICE_NUMBER】?盤符對應(yīng)的設(shè)備號??*/
STORAGE_DEVICE_NUMBER?sdn;
DWORD?dwBytesReturned?=?0;
//用IOCTL_STORAGE_GET_DEVICE_NUMBER?取設(shè)備號??
for(DWORD?hDeivce_Num_temp?=?0;?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 入門
評論
共有 條評論