Операционные системы. Марапулец Ю.В. - 81 стр.

UptoLike

Составители: 

}
/* чтение блока данных */
if( mmioRead( hmmio, (LPSTR)lpData, IDataSize ) != lDataSize )
{
ReportError( hWnd, IDS_CANTREADDATA );
GlobalFreePtr( lpData );
mmioClose( hmmio, 0 ) ;
return( FALSE ) ;
}
Поиск блока data осуществляется аналогично поиску блока fmt. Функция
mmioDescend записывает в переменную mmckinfoData информацию о размере
блока данных. Параметр lDataSize сообщает, какой объем памяти должен быть
выделен и сколько байтов необходимо прочитать из файла.
Для завершения процедуры ReadWaveData нужно закрыть файл и вернуть
три значения: указатель нового объекта в памяти, количество байтов данных в
этом объекте, а также частоту оцифровки:
/* закрыть файл */
mmioClose( hmmio, 0 );
/* задание возвращаемых значений */
*lplpWaveData = lpData;
*lpdwWaveDataSize = (DWORD)lDataSize;
*lpdwSamplesPerSec = pcmWaveFormat.wf.nSamplesPerSec;
return( TRUE ) ;
}
Запись WAV-файла. Функция WriteWaveData переносит звукозапись из
буфера в памяти в файл на диске. Когда пользователь изменяет существующие
аудиоданные или записывает новые, функция WriteWaveData сохраняет
результат. Она выполняет следующие операции:
открывает файл;
создает блок RIFF
формата WAVE;
создает вложенный блок format и заполняет его поля размера и данных;
создает вложенный блок data и заполняет его поля размера и данных;
перемещает указатель текущей позиции в конец файла/что приводит к
записи полного размера старшего блока;
закрывает файл.
/*------------------------------------------------
WRITE WAVE DATA
Запись аудиоданных из буфера в памяти в файл на диске
--------------------------------------------------------------------------*/
BOOL WriteWaveData( HWND
hWnd, // основное окно
LPSTR lpszFileName, // файл назначения
81
     }
           /* чтение блока данных */
     if( mmioRead( hmmio, (LPSTR)lpData, IDataSize ) != lDataSize )
     {
           ReportError( hWnd, IDS_CANTREADDATA );
           GlobalFreePtr( lpData );
           mmioClose( hmmio, 0 ) ;
           return( FALSE ) ;
     }

      Поиск блока data осуществляется аналогично поиску блока fmt. Функция
mmioDescend записывает в переменную mmckinfoData информацию о размере
блока данных. Параметр lDataSize сообщает, какой объем памяти должен быть
выделен и сколько байтов необходимо прочитать из файла.
      Для завершения процедуры ReadWaveData нужно закрыть файл и вернуть
три значения: указатель нового объекта в памяти, количество байтов данных в
этом объекте, а также частоту оцифровки:

           /* закрыть файл */
     mmioClose( hmmio, 0 );
           /* задание возвращаемых значений */
     *lplpWaveData = lpData;
     *lpdwWaveDataSize = (DWORD)lDataSize;
     *lpdwSamplesPerSec = pcmWaveFormat.wf.nSamplesPerSec;
     return( TRUE ) ;
}

        Запись WAV-файла. Функция WriteWaveData переносит звукозапись из
буфера в памяти в файл на диске. Когда пользователь изменяет существующие
аудиоданные или записывает новые, функция WriteWaveData сохраняет
результат. Она выполняет следующие операции:
• открывает файл;
• создает блок RIFF формата WAVE;
• создает вложенный блок format и заполняет его поля размера и данных;
• создает вложенный блок data и заполняет его поля размера и данных;
• перемещает указатель текущей позиции в конец файла/что приводит к
     записи полного размера старшего блока;
• закрывает файл.
/*------------------------------------------------
  WRITE WAVE DATA
   Запись аудиоданных из буфера в памяти в файл на диске
--------------------------------------------------------------------------*/
BOOL WriteWaveData( HWND hWnd,                            // основное окно
                       LPSTR lpszFileName, // файл назначения
                                     81