__uuidof в C Мастер громкости 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);
Я только нашел, что: Альтернатива __uuidof в C
1 ответ
Решение
CLSID_MMDeviceEnumerator
а также IID_IMMDeviceEnumerator
определены в заголовочном файле вашего API, т.е. <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
);
(*)
Обратите внимание, что я использовал &
(address-of), так как в C++ у вас есть ссылки, но в коде C вам нужно явно указывать с помощью указателей.