阅读:1027回复:1
driver中如何获得instance ID?
我想唯一的标示一个设备,貌似只有instance ID可以。有什么函数可以用么?kernel里面的
|
|
沙发#
发布于: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? |
|