3

我正在 Visual Studio 中构建 UMDF 智能卡读卡器驱动程序。我收到这样的奇怪错误:

error C2374: 'GUID_DEVINTERFACE_DISK' : redefinition; multiple initialization C:\Program Files (x86)\Windows Kits\8.0\Include\UM\winioctl.h 43 1 BixVReader

文件 winioctl.h 包含不同设备的 DEFINE_GUIDs (实际上我在这里的每个设备都有 1 个错误):

DEFINE_GUID(GUID_DEVINTERFACE_DISK, 0x53f56307L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);

我怀疑我在 Internal.h 中写的那行:

DEFINE_GUID(SmartCardReaderGuid, 0x50DD5230, 0xBA8A, 0x11D1, 0xBF,0x5D,0x00,0x00,0xF8,0x05,0xF5,0x30);

但是怎么了?

4

2 回答 2

4

当我交换#include "winioctl.h"#include时,这些错误就消失了:

//
// Windows IOCTL definitions.
//
#include "winioctl.h"

//
// GUID include
//
#include <initguid.h>

//
// Device Interface GUID
// 0x50DD5230, 0xBA8A, 0x11D1, 0xBF,0x5D,0x00,0x00,0xF8,0x05,0xF5,0x30
//
DEFINE_GUID(GUID_DEVINTERFACE_BixVReader,
    0x50DD5230, 0xBA8A, 0x11D1, 0xBF,0x5D,0x00,0x00,0xF8,0x05,0xF5,0x30);

我不是 C++ 专家,这对我来说似乎很奇怪,但仍然如此。欢迎对这个问题提出任何意见。

于 2013-01-10T15:19:11.220 回答
0

显然,解决这个问题的正确方法是#include <windows.h>winioctl.hand之前initguid.h。这样做为我解决了这个问题,而无需交换标题。

于 2021-09-01T21:33:53.090 回答