почему MCI_OPEN завершается с ошибкой и возвращает недопустимый идентификатор устройства?

StackOverflow https://stackoverflow.com/questions/2200740

  •  18-09-2019
  •  | 
  •  

Вопрос

dwReturn = mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_OPEN_TYPE
                         , (DWORD_PTR)(LPVOID) &mciOpenParms);

сообщение об ошибке: "Имя устройства уже используется этим приложением в качестве псевдонима.Используйте уникальный псевдоним".

Почему он выдает ошибку?

Это было полезно?

Решение 2

Это может произойти при попытке повторно открыть уже открытое устройство mci.

Если флаг MCI_OPEN_SHAREABLE не указан при первоначальном открытии устройства или файла, все последующие команды MCI_OPEN для устройства или файла завершатся ошибкой.

Другие советы

Хотя технически этот ответ был правильным, он мне не очень помог.

"Если флаг MCI_OPEN_SHAREABLE не указан при первоначальном открытии устройства или файла, все последующие команды MCI_OPEN для устройства или файла завершатся ошибкой".

Я обнаружил, что мне нужно сделать MCI_CLOSE перед любым MCI_OPEN , вот так:

MciClose(void)
{
 int Result;
 MCI_GENERIC_PARMS mciGenericParams;
 DWORD dwFlags;

 mciGenericParams.dwCallback = (long)TestSoundForm->Handle;

 dwFlags = MCI_NOTIFY | MCI_WAIT;
 Result = mciSendCommand(MciDeviceID, MCI_CLOSE, dwFlags, (long)&mciGenericParams);

 // MCIERR_INVALID_DEVICE_ID occurs if the device is already closed.
 if(Result == 0 || Result == MCIERR_INVALID_DEVICE_ID)return;
 else MciError(Result, "MCI_CLOSE  Error"); // display the error
}

Кроме того, вот очень хорошая статья о программировании этих аудиоустройств.

http://www.c-sharpcorner.com/uploadfile/GemingLeader/creating-a-sound-recorder-in-c-and-C-Sharp/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top