【问题标题】:GUID error while building Windows driver via Visual Studio通过 Visual Studio 构建 Windows 驱动程序时出现 GUID 错误
【发布时间】:2013-01-10 11:18:52
【问题描述】:

我正在 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_GUID(实际上我这里每个设备都有 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);

但是怎么了?

【问题讨论】:

    标签: driver guid umdf


    【解决方案1】:

    当我交换 #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++ 方面的专家,这对我来说似乎很奇怪,但仍然如此。欢迎任何关于这个问题的cmet。

    【讨论】:

    • 当我交换 #include "winioctl.h" 和 #include 时这些错误消失了
    【解决方案2】:

    显然,解决此问题的正确方法是在 winioctl.hinitguid.h 之前先使用 #include &lt;windows.h&gt;。这样做为我解决了这个问题,而无需交换标题。

    【讨论】:

      猜你喜欢
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      相关资源
      最近更新 更多