收录日期:2019/04/20 16:44:59 时间:2016/08/13 21:07:45 标签:基础类
#define   DFP_GET_VERSION   0x00074080
#define   DFP_SEND_DRIVE_COMMAND   0x0007c084
#define   DFP_RECEIVE_DRIVE_DATA   0x0007c088

小弟百度了好几天。。都没有找到以上代码的解释。。麻烦大哥们了。。。
表示无语。。。。。。

你学C语言时没学过宏定义吗
宏定义
我觉得我们是不是误解楼主的意思了。。。。
小弟在网上找到了段提取硬盘序列号的代码,经测试,不支持U盘。。小弟认为
#define DFP_GET_VERSION 0x00074080
只是固定硬盘的控制码
那USB的控制码在哪里呢?
bool HD_IDE_NT()
{
 cout<<"**********************************************************"<<endl;
 cout<<"IDE测试"<<endl;
 bool IDEFlag=false;
 char hd[80];
 PIDSECTOR   phdinfo;
 char s[61];
 
 ZeroMemory(&vers,sizeof(vers)); 
 
 
 for (j = 0; j < 10; j++)
 {
 sprintf(hd,"\\\\.\\PhysicalDrive%d",j);
 h = CreateFile(hd,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0);
 
 
 //  Windows NT/2000/XP下创建文件需要管理员权限
 if (!h) continue;
 /*
 if (!DeviceIoControl(h,DFP_GET_VERSION,0,0,&vers,sizeof(vers),&i,0))
 // 得到驱动器的IO控制器版本
 {
 CloseHandle(h);
 continue;
 }
 */
     BOOL zxc=DeviceIoControl(h,DFP_GET_VERSION,0,0,&vers,sizeof(vers),&i,0);
 if (!zxc)
 // 得到驱动器的IO控制器版本
 {
 CloseHandle(h);
 continue;
 }


 if (!(vers.fCapabilities&1)){
 CloseHandle(h);
 return false;
 }
 
 
 ZeroMemory(&in,sizeof(in));
 ZeroMemory(&out,sizeof(out));
 
 if (j&1){
 in.irDriveRegs.bDriveHeadReg=0xb0;
 }
 else
  {
   in.irDriveRegs.bDriveHeadReg=0xa0;
  }
  if (vers.fCapabilities&(16>>j))    continue;
  else
  {
   in.irDriveRegs.bCommandReg=0xec;
  }
  in.bDriveNumber=j;
  in.irDriveRegs.bSectorCountReg=1;
  in.irDriveRegs.bSectorNumberReg=1;
  in.cBufferSize=512;
  
  if (!DeviceIoControl(h,DFP_RECEIVE_DRIVE_DATA,&in,sizeof(in),&out,sizeof(out),&i,0))
  {
   CloseHandle(h);
   return IDEFlag;
  }
  
  phdinfo=(PIDSECTOR)out.bBuffer;
  
  memcpy(s,phdinfo->sModelNumber,sizeof(phdinfo->sModelNumber));     
  s[sizeof(phdinfo->sModelNumber)]=0;
  ChangeByteOrder(s,sizeof(phdinfo->sModelNumber));
  cout<<endl<<"硬盘名称:"<<s<<endl;  
  
  memcpy(s,phdinfo->sSerialNumber,sizeof(phdinfo->sSerialNumber));
  s[sizeof(phdinfo->sSerialNumber)]=0;
  ChangeByteOrder(s,sizeof(phdinfo->sSerialNumber)); 
  cout<<"硬盘序列号:"<<DeleteHeadSpace(s)<<endl;
  
  strcpy(HardDiskNO, DeleteHeadSpace(s)); 
  IDEFlag=true;
  CloseHandle(h);
 }
 
 return  IDEFlag; 
}
#define DFP_GET_VERSION 0x00074080         //得到DEP的版本号
#define DFP_SEND_DRIVE_COMMAND 0x0007c084  //DEP发送驱动命令
#define DFP_RECEIVE_DRIVE_DATA 0x0007c088  //DEP接收驱动数据

这是方便程序执行,而预先定义的几个初始化常数,这些数值只是临时性的,为方便程序程序而随便定义的,没有什么意义
 
你还没 Google 好几天,怎么能放弃?
MSDN 上也有一些,你这个参数或许是这些其中一个或几个的组合:
http://msdn.microsoft.com/en-us/library/aa363979.aspx
我晕了,不知道楼主提到的这些是哪个开源源码里找到的,我手中的获取硬盘序列号 源码也是如此。
经过分析,原来是 winioctl.h里的(可能是新版才有) 

SMART_GET_VERSION
SMART_SEND_DRIVE_COMMAND
SMART_RCV_DRIVE_DATA

不过呢, SMART_GET_VERSION 用到的 是 GETVERSIONINPARAMS 结构体,在 ntdddisk.h 中,
晕!

请教一个关于onclick在目标窗口打开网页的问题 请教,怎样取得两个时间的差异? 哪位大侠帮我看一下,我想画个圆出来,可程序运行不到OnDraw(),请指教!附程序! android 中怎么用openmax? 关于SQL2005数据库镜像 语句顺序的疑惑 请各位大虾帮忙啊!c# 实现计算器 求助一适合单片机的加密算法? 在sql里抽书xml 数据问题 新手求指导,谢谢! 在winform中怎么实现一次上传任意张图片? 关于在linux下驱动全局变量赋值问题!!! 下面这个类型是数组吗,怎么把数据库的内容读写成这样了。asp语言的。谢谢了 继承panel问题 一段简单的代码 Oracle认证视频学习资料~~~ 求SQL每隔一个时间间隔的第一条数据 请问怎么在php中设置系统代理? oracle中union出现字符集不匹配错误 继续昨天的“高手进进进” C#水晶报表问题 从Office里COPY过来控件的界面错误 BAT查看文件夹内日志文件的总大小 JAVA的学习方向 刮风研究 找不到可安装的ISAM? 141条你不得不知的健康常识 对话框销毁问题,在线等 求一个mssql2000上的sql语句 mysql如何做触器定时更新?