收录日期:2019/06/26 10:32:37 时间: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 中,
晕!

java初学者问题,关于jdk的使用。谢谢帮助。 怎样把我的菜单项加入到资源管理器的右键菜单中? 这条socket语句是怎么出错的呢? 请问谁有NDIS hook的例子 windowsNT与linux谁安全啊? GRUB 怎样做一个可以更改工作流程控件 在2000下做的透明窗体为什么在98下不好使? ◆◆◆晕,DELPHI的Undo功能极为不爽◆◆◆谁知道TRW(著名的调试跟踪软件)作者朱南灏开发的那个叫Clip什么来着,是剪贴板工具软件!!!\0 图像处理&特征提取的源码 需要一个中断程序吗? 怎么在一个project中删除一个文件? ◆◆◆谁知道TRW作者朱南灏开发的那个叫Clip什么来着,是剪贴板工具软件◆◆◆ 如何关掉键盘上的休眠键(How to disable the SLEEP key,not using VkD),而不写驱动? 怎样在QuickReport的GroupHeader中显示每个分组中的记录数,急 请问谁有用ASP编写的论坛,高分求购! 有关PB7.0的几个问题,解决给100分 关于共享上网的问题~~~~ 急!在虚拟服务器上如何卸载SQL-SERVER2000企业版,添加删除程序里面没有这一项? 帮我看看,这是什么? 如何在Windows下使用TC++或C语言来进行网络编程 按键盘delete键,如何响应程序中的“删除”事件? Media player8 ~~~~谢谢了先!!再现等待 如何将一个文本文件中的所有字符读到一个CString对象中去?急用,马上结帐! 有谁知道这个公司的,请大家帮忙 如何把客户填写的form表单的内容以网页的形式发到指定的信箱里? 用户权限的问题。 我的个人主页,欢迎大家pp! http://home.cqsky.net/dyj27/ 关于建立一个classid对象 怎么样能使检索速度加快??高分求教!!!