我想用C更改主卷,但__uuidof
仅适用于C ++;我可以用什么而不是那个?
const CLSID CLSID_MMDeviceEnumerator = __uuidof(MMDeviceEnumerator);
const IID IID_IMMDeviceEnumerator = __uuidof(IMMDeviceEnumerator);
hr = CoCreateInstance(
CLSID_MMDeviceEnumerator, NULL,
CLSCTX_ALL, IID_IMMDeviceEnumerator,
(void**)&deviceEnumerator);
答案 0 :(得分:1)
CLSID_MMDeviceEnumerator
和IID_IMMDeviceEnumerator
定义为in your API's header file,即<mmdeviceapi.h>
。
您必须在C代码中使用这些定义,而不是__uuidof
,因为这仅适用于C ++代码。
请注意,您需要在<initguid.h>
之前加入<mmdeviceapi.h>
:
#include <initguid.h>
#include <mmdeviceapi.h>
然后这段代码应该有效:
hr = CoCreateInstance(
&CLSID_MMDeviceEnumerator, (*)
NULL,
CLSCTX_ALL,
&IID_IMMDeviceEnumerator, (*)
(void**)&deviceEnumerator
);
(*)
请注意,我使用了&
(地址),因为在C ++中你有引用,但在C代码中你需要使用指针显式。