我正在研究调用WinAPI的代码,特别是调用DeviceIoControl。它需要一个IoControlCode,对于以下控制代码如下:
IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX = 0x220448
然而,能够准确检索USB协议(即Usb11,Usb20或Usb30)对我来说很重要,为此我需要调用IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2。我无法找出应该传递给DeviceIoControl的常量值是什么。我在constants部分下查看了pinvoke.net,他们没有关于这个新的调用和附带结构的文档。
有人可以告诉我哪里可以找到这个const值吗?
谢谢!
答案 0 :(得分:1)
如果您不想深入了解标题,并解码CTL_CODE
宏开放的Visual Studio,请创建一个C ++控制台应用程序并执行以下操作:
#include <Windows.h>
#include <iostream>
#include <usbioctl.h>
using namespace std;
int main()
{
cout << "0x" << hex << IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 << endl;
// Output: 0x22045c
return 0;
}
懒惰。让编译器告诉你这个值是什么。
答案 1 :(得分:0)
来自Windows套件的usbioctl.h和usbiodef.h包括\ shared文件夹:
#define IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 \
CTL_CODE(FILE_DEVICE_USB, \
USB_GET_NODE_CONNECTION_INFORMATION_EX_V2, \
METHOD_BUFFERED, \
FILE_ANY_ACCESS)
#define USB_GET_NODE_CONNECTION_INFORMATION_EX_V2 279
#define FILE_DEVICE_USBEX 0x00000049