这段6的取U盘序列号的谁能改成XE的100分
//存为iUsbKey.h
/*
#include "iUsbKey.h"//用SetupAPI结合注册表获取USB优盘序列号
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text=iUsbKey();
}
*/
#include <setupapi.h>
#include <stdio.h>
#include <objbase.h>
//#ifndef __BORLANDC__
//#pragma comment(lib, "setupapi.lib")
//#endif
//---------------------------------------------------------------------------
void CrnReplaceString(LPSTR lpBuf, char c1, char c2){
int nLen = strlen(lpBuf);
LPSTR lpTemp = new char[nLen];
memset(lpTemp, 0, nLen);
int j=0;
for(int i=0; i < nLen; i++){
if(lpBuf[i] == c1){
if(c2 != 0x00){
lpTemp[j] = c2;
j++;
}
}else{
lpTemp[j] = lpBuf[i];
j++;
}
}
//
memset(lpBuf, 0, nLen);
strncpy(lpBuf, lpTemp, nLen);
delete []lpTemp;
}
//---------------------------------------------------------------------------
// 获取指定盘符的序列号(针对USB优盘有效)
// char cDiskID: 指定盘符,如 'L'
// LPSTR lpPID : 序列号存放的缓冲,如char szPID[32]
//---------------------------------------------------------------------------
//#include <setupapi.h>
//#include <stdio.h>
//#include <objbase.h>
bool CrnGetUSBDiskID(char cDiskID, LPSTR lpPID){
char szDrv[4];
sprintf(szDrv, "%c:\\", cDiskID);
if(GetDriveType(szDrv) != DRIVE_REMOVABLE){
//MessageBox(0, "指定的盘不是有效的优盘.","错误", MB_OK | MB_ICONWARNING);
return false;
}
char lpRegPath[512] = { 0 };
char lpRegValue[256] = { 0 };
sprintf(lpRegPath, "SYSTEM\\MountedDevices");
sprintf(lpRegValue, "\\DosDevices\\%c:", cDiskID);
//
DWORD dwDataSize(0);
DWORD dwRegType(REG_BINARY);
LPBYTE lpRegBinData(NULL);
LPSTR lpUSBKeyData(NULL);
// 查询注册表中映射驱动器的设备信息
HKEY hKey;
long lRet = ::RegOpenKeyEx(
HKEY_LOCAL_MACHINE, // root key
lpRegPath, // 要访问的键的位置
0, //
KEY_READ, // 以查询的方式访问注册表
&hKey); // hKEY保存此函数所打开的键的句柄
if(lRet != ERROR_SUCCESS)return false;
else{
lRet = ::RegQueryValueEx(hKey, // 所打开的键的句柄
lpRegValue, // 要查询的键值名
NULL,
&dwRegType, // 查询数据的类型
lpRegBinData, // 保存所查询的数据
&dwDataSize); // 预设置的数据长度
if(lRet != ERROR_SUCCESS){
::RegCloseKey(hKey);
return false;
}else{
lpRegBinData = new BYTE[dwDataSize];
lpUSBKeyData = new char[dwDataSize];
memset(lpUSBKeyData, 0, dwDataSize);
lRet = ::RegQueryValueEx(hKey,
lpRegValue,
NULL,
&dwRegType,
lpRegBinData,
&dwDataSize);
if(lRet != ERROR_SUCCESS){
delete []lpRegBinData;
delete []lpUSBKeyData;
::RegCloseKey(hKey);
return false;
}
}
}
::RegCloseKey(hKey);
// 过滤二进制串中的无用信息(将0x0字符去除)
int j = 0;
for(DWORD i=0; i<dwDataSize; i++){
if(lpRegBinData[i] != 0x0){
lpUSBKeyData[j] = lpRegBinData[i];
j++;
}
}
delete []lpRegBinData;
// I'm sorry: You can remove under line in your Code.
//MessageBox(0, g_strCrnVerify, "CrnGetUSBDiskID", 0);
// I'm sorry: Only for [Zhuan Tie Bu Liu Ming]. - -#
// 截取lpUSBKeyData中的有用信息, 例: 7&100a16f&0
// \??\STORAGE#RemovableMedia#7&100a16f&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
// 63 63 72 75 6E 2E 63 6F 6D
LPSTR lpPos1 = strstr(lpUSBKeyData, "#RemovableMedia#") + 16;
LPSTR lpPos2 = strstr(lpUSBKeyData, "RM");
strncpy(lpUSBKeyData, lpPos1, int(lpPos2) - int(lpPos1));
lpUSBKeyData[int(lpPos2) - int(lpPos1) - 1] = 0x0;
strcpy(lpUSBKeyData, strupr(lpUSBKeyData));
// Disk Device(磁盘设备)的GUID
GUID guidUSB;
CLSIDFromString(L"{53f56307-b6bf-11d0-94f2-00a0c91efb8b}", &guidUSB);
//
HDEVINFO hUSB = SetupDiGetClassDevs(
&guidUSB, NULL, 0, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
if(hUSB == INVALID_HANDLE_VALUE){
delete []lpUSBKeyData;
return false;
}
//
int nDevIndex = 0;
bool bSuccess;
SP_DEVINFO_DATA DevData;
SP_DEVICE_INTERFACE_DATA DevIntData;
PSP_DEVICE_INTERFACE_DETAIL_DATA lpDevIntDetailData;
DWORD dwBytesReturned;
/*
#include "iUsbKey.h"//用SetupAPI结合注册表获取USB优盘序列号
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text=iUsbKey();
}
*/
#include <setupapi.h>
#include <stdio.h>
#include <objbase.h>
//#ifndef __BORLANDC__
//#pragma comment(lib, "setupapi.lib")
//#endif
//---------------------------------------------------------------------------
void CrnReplaceString(LPSTR lpBuf, char c1, char c2){
int nLen = strlen(lpBuf);
LPSTR lpTemp = new char[nLen];
memset(lpTemp, 0, nLen);
int j=0;
for(int i=0; i < nLen; i++){
if(lpBuf[i] == c1){
if(c2 != 0x00){
lpTemp[j] = c2;
j++;
}
}else{
lpTemp[j] = lpBuf[i];
j++;
}
}
//
memset(lpBuf, 0, nLen);
strncpy(lpBuf, lpTemp, nLen);
delete []lpTemp;
}
//---------------------------------------------------------------------------
// 获取指定盘符的序列号(针对USB优盘有效)
// char cDiskID: 指定盘符,如 'L'
// LPSTR lpPID : 序列号存放的缓冲,如char szPID[32]
//---------------------------------------------------------------------------
//#include <setupapi.h>
//#include <stdio.h>
//#include <objbase.h>
bool CrnGetUSBDiskID(char cDiskID, LPSTR lpPID){
char szDrv[4];
sprintf(szDrv, "%c:\\", cDiskID);
if(GetDriveType(szDrv) != DRIVE_REMOVABLE){
//MessageBox(0, "指定的盘不是有效的优盘.","错误", MB_OK | MB_ICONWARNING);
return false;
}
char lpRegPath[512] = { 0 };
char lpRegValue[256] = { 0 };
sprintf(lpRegPath, "SYSTEM\\MountedDevices");
sprintf(lpRegValue, "\\DosDevices\\%c:", cDiskID);
//
DWORD dwDataSize(0);
DWORD dwRegType(REG_BINARY);
LPBYTE lpRegBinData(NULL);
LPSTR lpUSBKeyData(NULL);
// 查询注册表中映射驱动器的设备信息
HKEY hKey;
long lRet = ::RegOpenKeyEx(
HKEY_LOCAL_MACHINE, // root key
lpRegPath, // 要访问的键的位置
0, //
KEY_READ, // 以查询的方式访问注册表
&hKey); // hKEY保存此函数所打开的键的句柄
if(lRet != ERROR_SUCCESS)return false;
else{
lRet = ::RegQueryValueEx(hKey, // 所打开的键的句柄
lpRegValue, // 要查询的键值名
NULL,
&dwRegType, // 查询数据的类型
lpRegBinData, // 保存所查询的数据
&dwDataSize); // 预设置的数据长度
if(lRet != ERROR_SUCCESS){
::RegCloseKey(hKey);
return false;
}else{
lpRegBinData = new BYTE[dwDataSize];
lpUSBKeyData = new char[dwDataSize];
memset(lpUSBKeyData, 0, dwDataSize);
lRet = ::RegQueryValueEx(hKey,
lpRegValue,
NULL,
&dwRegType,
lpRegBinData,
&dwDataSize);
if(lRet != ERROR_SUCCESS){
delete []lpRegBinData;
delete []lpUSBKeyData;
::RegCloseKey(hKey);
return false;
}
}
}
::RegCloseKey(hKey);
// 过滤二进制串中的无用信息(将0x0字符去除)
int j = 0;
for(DWORD i=0; i<dwDataSize; i++){
if(lpRegBinData[i] != 0x0){
lpUSBKeyData[j] = lpRegBinData[i];
j++;
}
}
delete []lpRegBinData;
// I'm sorry: You can remove under line in your Code.
//MessageBox(0, g_strCrnVerify, "CrnGetUSBDiskID", 0);
// I'm sorry: Only for [Zhuan Tie Bu Liu Ming]. - -#
// 截取lpUSBKeyData中的有用信息, 例: 7&100a16f&0
// \??\STORAGE#RemovableMedia#7&100a16f&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}
// 63 63 72 75 6E 2E 63 6F 6D
LPSTR lpPos1 = strstr(lpUSBKeyData, "#RemovableMedia#") + 16;
LPSTR lpPos2 = strstr(lpUSBKeyData, "RM");
strncpy(lpUSBKeyData, lpPos1, int(lpPos2) - int(lpPos1));
lpUSBKeyData[int(lpPos2) - int(lpPos1) - 1] = 0x0;
strcpy(lpUSBKeyData, strupr(lpUSBKeyData));
// Disk Device(磁盘设备)的GUID
GUID guidUSB;
CLSIDFromString(L"{53f56307-b6bf-11d0-94f2-00a0c91efb8b}", &guidUSB);
//
HDEVINFO hUSB = SetupDiGetClassDevs(
&guidUSB, NULL, 0, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
if(hUSB == INVALID_HANDLE_VALUE){
delete []lpUSBKeyData;
return false;
}
//
int nDevIndex = 0;
bool bSuccess;
SP_DEVINFO_DATA DevData;
SP_DEVICE_INTERFACE_DATA DevIntData;
PSP_DEVICE_INTERFACE_DETAIL_DATA lpDevIntDetailData;
DWORD dwBytesReturned;
...全文
相关推荐
基于s5pc100 的u-boot.bin ,引导程序
这是一个基于 s5pc100开发板的,u-boot启动文件,引导地址是0xE7200000
nefo10序列号
nefo10序列号绝对的正版 啊 可以用nefo10软件验证啊
使用delphi XE创建ActiveForm成功经历
本文描述了最新的delphi开发工具delphiXE中开发ActiveForm的经历,与以前在delphi7中有明显的不同,希望大家能通过此文章得到启发共勉。
xapi-xe:xapi命令行界面
e 命令行界面。 简单用法: xe -s <host> -u root -pw <password> <command> [key0=val0] [key1=val1] 建议创建一个文件$ {HOME} /。xe,其中包含 server=192.168.100.12 username=root password=password 而不是在命令行上传递凭据。 示例命令(假设已填充的$ {HOME} /。xe): xe vm-list VM=$(xe vm-install template-name=<name> new-name-label=myvm) xe vm-start vm=$VM 实施说明 这是一个简单的工具,可将命令行远程控制到xapi服务器,该服务器返回诸如“打印此文本”或“上传此文件”之类的简单命令。 该工具不直接使用XenAPI。
s5pv210 u-boot-2010.03移植详细教程
s5pv210 u-boot-2010.03移植详细教程


