У меня есть следующая функция Я звоню, чтобы распечатать конечную точку и дружественное имя перечисляемых аудио конечных точек:Core Audio для Windows Error
void EPPrint(void)
{
HRESULT hr;
IMMDeviceEnumerator *pEnumerator = NULL;
IMMDeviceCollection *pCollection = NULL;
IMMDevice *pEp = NULL;
IPropertyStore *pProps =NULL;
UINT count;
PWSTR strID;
PROPVARIANT pv;
hr = CoCreateInstance(CLSID_MMDeviceEnumerator ,NULL, CLSCTX_ALL, IID_IMMDeviceEnumerator, (void **)&pEnumerator);
hr = pEnumerator -> EnumAudioEndpoints(eRender,DEVICE_STATE_ACTIVE,&pCollection);
hr = pCollection ->GetCount(&count);
if(count==0)
{
}
for (ULONG i =0; i<count; ++i)
{
hr= pCollection->Item(i,&pEp);
hr = pEp ->GetId(&strID);
hr = pEp ->OpenPropertyStore(STGM_READ,&pProps);
PropVariantInit(&pv);
hr = pProps ->GetValue(PKEY_Device_FriendlyName, &pv);
printf("Enpoint %d: \"%S\" (%S)\n",i,pv.pwszVal, strID);
}
}
Однако я получаю ошибку Unhandled exception at 0x008e104a in EPAudioControl.exe: 0xC0000005: Access violation reading location 0x00000000.
выполнения, нарушающую программу на линии hr = pEnumeartor -> ...
.
Нужна ли программе необходимость каких-либо специальных разрешений на окна для правильной работы?