Ошибка GUID при сборке драйвера Windows через Visual Studio

Я создаю драйвер устройства чтения смарт-карт UMDF в Visual Studio. Я получаю такие странные ошибки:

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);

Но что не так?


person Zharro    schedule 10.01.2013    source источник


Ответы (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++ и мне это кажется странным, но все же. Любые комментарии по этому вопросу приветствуются.

person Zharro    schedule 10.01.2013
comment
Эти ошибки исчезли, когда я поменял местами #include winioctl.h и #include ‹initguid.h› - person hfmanson; 16.03.2019