定义了哪个库 GUID_DEVINTERFACE_USB_HUB

Enr*_*H73 2 usb winapi visual-studio-2015

此问题涉及:如何使用 Windows API 重置 USB 设备? 我使用的是 Visual Studio 2015,项目目标平台是Win10.0.14393.0.

我正在尝试使用用户空间解决方案通过调用CM_Reenumerate_DevInst().

我遇到的问题是打电话时
SetupDiGetClassDevs(&GUID_DEVINTERFACE_USB_HUB, NULL, NULL, DIGCF_DEVICEINTERFACE);

我收到此编译错误。

1>UsbDevices.obj : error LNK2001: unresolved external symbol GUID_DEVINTERFACE_USB_HUB
1>C:\DEV\Experiment\MFCApplication1\x64\Debug\MFCApplication1.exe : fatal error LNK1120: 1 unresolved externals
Run Code Online (Sandbox Code Playgroud)

我找不到定义此 GUID 的库。

RbM*_*bMm 8

这未在任何库中实现。您需要的一切:

#include <initguid.h>
#include <usbiodef.h>
Run Code Online (Sandbox Code Playgroud)

所以包括在之前initguid.h usbiodef.h

GUID_DEVINTERFACE_USB_HUBDEFINE_GUID宏定义的变量。这个宏guiddef.h以不同的方式定义- 取决于INITGUID定义。最后寻找initguid.h- 这个小文件做了什么。

  • @BenVoigt - 这取决于编译器。使用“DECLSPEC_SELECTANY”声明的 GUID。如果 `_MSC_VER &gt;= 1100` 扩展为 `__declspec(selectany)` - 因此我们可以在多个编译单元中使用它。所以如果我们使用`CL.exe`这不是问题。如果我们使用其他编译器 - 是的,你是对的 - 我们需要在使用“GUID_DEVINTERFACE_USB_HUB”的每个地方包含“usbiodef.h”,并且仅在一个选定的位置在“usbiodef.h”之前包含“initguid.h” (2认同)