chalino
驱动牛犊
驱动牛犊
  • 注册日期2005-05-10
  • 最后登录2007-06-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1018回复:1

driver中如何获得instance ID?

楼主#
更多 发布于:2005-05-27 16:26
我想唯一的标示一个设备,貌似只有instance ID可以。有什么函数可以用么?kernel里面的
chalino
驱动牛犊
驱动牛犊
  • 注册日期2005-05-10
  • 最后登录2007-06-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-06-02 11:12
这是我现在的做法,是跟踪IoOpenDeviceRegistryKey弄出来的
int GetIntValueAtAddr(PVOID addr)
{
return *(int*)addr;
}

WCHAR* GetPDOInstanceID(PDEVICE_OBJECT pdo)
{
PUCHAR pTmp = NULL;
PUNICODE_STRING pID = NULL;
ULONG major, minor, build;

//
// Check the version of the windows
//
PsGetVersion(
&major,
&minor,
&build,
NULL
);

if (major != 5)
return NULL;
if (minor != 0 && minor != 1)
return NULL;

pTmp = (PUCHAR)(pdo->DeviceObjectExtension);
pTmp = (PUCHAR)GetIntValueAtAddr(pTmp + 0x14);
if (minor == 1)  //XP
pID  = (PUNICODE_STRING)(pTmp + 0x94);
else
pID  = (PUNICODE_STRING)(pTmp + 0x40);
return pID->Buffer;
}

微软有没有公开的方法可以用来根据PDO找到其instance id?
游客

返回顶部