__uuidof 在 C 主卷中 Windows

__uuidof in C Master Volume Windows

我想用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);

我只发现:Alternative to __uuidof in C

CLSID_MMDeviceEnumeratorIID_IMMDeviceEnumerator 定义为 in your API's header file,即 <mmdeviceapi.h>.

您必须在 C 代码中使用这些定义,而不是 __uuidof,因为这仅适用于 C++ 代码。

注意在<mmdeviceapi.h>之前需要加上<initguid.h>:

#include <initguid.h>
#include <mmdeviceapi.h>

那么这段代码应该可以工作:

hr = CoCreateInstance(
    &CLSID_MMDeviceEnumerator, (*)
    NULL,
    CLSCTX_ALL, 
    &IID_IMMDeviceEnumerator,  (*)
    (void**)&deviceEnumerator
);

(*) 请注意,我使用了 &(地址),因为在 C++ 中你有引用,但在 C 代码中你需要明确使用指针。