Привет! Извиняюсь за повтор (сначала в WIN API написал, но может здесь кто поможет).
Иногда сабжевая функция возвращает ошибку 5 (типа "блок еще используется"). Хотя делаю я это в обработчике WIM_DATA, т.е. очередной блок явно отдан мне "на растерзание" и не используется. Из-за чего такое может быть?
И еще вопрос — как правильно завершать запись? Перед waveInReset явно устанавливать некий флажок, чтобы в обработчике WIM_DATA не делать очередной waveInAddBuffer? А то иначе у меня обламывается waveInClose (типа очередь буферов непуста и закрыть девайс нельзя).
Здравствуйте Vladik, Вы писали:
V>Привет! Извиняюсь за повтор (сначала в WIN API написал, но может здесь кто поможет).
V>Иногда сабжевая функция возвращает ошибку 5 (типа "блок еще используется"). Хотя делаю я это в обработчике WIM_DATA, т.е. очередной блок явно отдан мне "на растерзание" и не используется. Из-за чего такое может быть?
V>И еще вопрос — как правильно завершать запись? Перед waveInReset явно устанавливать некий флажок, чтобы в обработчике WIM_DATA не делать очередной waveInAddBuffer? А то иначе у меня обламывается waveInClose (типа очередь буферов непуста и закрыть девайс нельзя).
Ответить на Ваш вопрос без кода трудно. Приведите код, попробуем разобраться. Я делал компоненты для работы со звуком, если оставите свой эл-ый адрес, я Вам их вышлю. Кстати, я завершал запис так как Вы говорили, перед WaveInReset ставил флаг, который опрашивался в обработчике WIM_DATA
Здравствуйте Satrap, Вы писали:
S>Ответить на Ваш вопрос без кода трудно. Приведите код, попробуем разобраться.
Я этот же вопрос изначально в "WIN API" задавал, там же и код есть.
S>Я делал компоненты для работы со звуком, если оставите свой эл-ый адрес, я Вам их вышлю.
Буду очень благодарен. Если не нравится vladislav_foltz@mail.ru, то можно на vlad@pres.ru
S>Кстати, я завершал запис так как Вы говорили, перед WaveInReset ставил флаг, который опрашивался в обработчике WIM_DATA
Я еще подумал и сделал на критических секциях с последующей проверкой хэндла девайса на валидность (если хэндл уже закрыт, то никаких Add/Prepare/Unprepare не делаем).