IOCTL_USB_GET_NODE_CONNECTION_INFORMATION_EX_V2常数值

时间:2016-06-02 19:17:56

标签: c# c++ c winapi

我正在研究调用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值吗?

谢谢!

2 个答案:

答案 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