C++ 我们可以从设备句柄获取设备对象详细信息/名称吗
我正在编写一个DeviceIoControl API钩子应用程序,它将跟踪目标应用程序进行的所有DeviceIoControl()调用。以下是DeviceIoControl的签名,以便于参考:C++ 我们可以从设备句柄获取设备对象详细信息/名称吗,c++,winapi,native,C++,Winapi,Native,我正在编写一个DeviceIoControl API钩子应用程序,它将跟踪目标应用程序进行的所有DeviceIoControl()调用。以下是DeviceIoControl的签名,以便于参考: BOOL WINAPI设备控制( 在HANDLE hDevice中, 在DWORD dwIoControlCode中, _在_opt LPVOID lpInBuffer中, 以德沃德为单位, _出其不意的出其不意的出其不意的出其不意的出其不意的出其不意的出其不意的出其不意的出其不意的出其不意的出其不意,
BOOL WINAPI设备控制(
在HANDLE hDevice中,
在DWORD dwIoControlCode中,
_在_opt LPVOID lpInBuffer中,
以德沃德为单位,
_出其不意的出其不意的出其不意的出其不意的出其不意的出其不意的出其不意的出其不意的出其不意的出其不意的出其不意,
用德沃德·努特布弗斯的话来说,
_Out_opt_LPDWORD lpbytes返回,
_Inout_opt_LPOVERLAPPED LPOVERLAPPED
);
我这里的问题是,如何确定此Ioctl的目标设备,即如何反转hDevice句柄并找到实际设备。使用NtQueryObject()
确定句柄表示的对象的类型和名称。您可能还需要使用QueryDosDevice()
将硬件设备名称解析为本地文件系统路径。请参阅本文以开始:
如何:枚举句柄
一旦你知道了设备类型,你就可以
然后使用特定于类型的API,如GetVolumeInformationByHandle()
,GetFileInformationByHandleEx()
,等等来获取更详细的信息