3

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

しかし、何が問題なのですか?

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.hinitguid.h

于 2021-09-01T21:33:53.090 に答える