3

我正在尝试GUID_DEVINTERFACE_DISK在 function 中使用(或 _FLOPPY... 等)SetupDiGetClassDevs,但由于未定义的引用,g++ 仍然无法构建。

我已链接到 SetupAPI 并根据需要包含 nstddstor.h ( http://msdn.microsoft.com/en-us/library/windows/hardware/ff545824%28v=vs.85%29.aspx )。

我看到包含 initguid.h 可能会解决问题,但它不适合我。

此外,当我尝试影响 GUID 变量时 GUID g = GUID_DEVINTERFACE_DISK; ,如果我将鼠标放在 GUID_DEVINTERFACE_DISK 上,eclipse 会显示它在哪里定义(nstddstor.h),但在编译后,它仍然不起作用。

有什么解决办法吗?

4

1 回答 1

3

我手边没有 Windows DDK,因此无法验证它,但另一个论坛上的用户报告说它可以通过包含initguid.hbeforentddstor.h来工作,因此以下可能会起作用:

#include <initguid.h>
#include <ntddstor.h>
#include <Setupapi.h>

// Code copied from:
// http://msdn.microsoft.com/en-us/library/windows/hardware/ff551069.aspx
int main(void) {
    HDEVINFO hDevInfo;
    hDevInfo = SetupDiGetClassDevs(&GUID_DEVINTERFACE_VOLUME,
        NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);
}

cl /nologo /W4 /EHsc /MD guid.cpp Setupapi.lib
于 2012-05-16T13:48:41.780 回答