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

UptoLike

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

/* открытие файла для чтения */
hmmio = mmioOpen( lpszFileName, NULL, MMIO_ALLOCBUF |
MMIO_READ );
if (hmmio == NULL)
{
ReportError( hWnd, IDS_CANTOPEHFILE ) ;
return( FALSE ) ;
}
Команда mmioOpen принимает три входных параметра: имя файла,
структуру с дополнительными параметрами и флаги для обозначения операций.
Дополнительные параметры нужны только для изменения размера буфера, для
открытия файла в памяти и для указания пользовательской процедуры чтения
файла. Поскольку функция ReadWaveData не выполняет ни одну из этих
операций, второй параметр равен NULL.
Флаг MMIO_ALLOCBUF
включает буферизацию ввода/вывода. Другой
флаг, MMIO_READ,
задает открытие файла только для чтения. Функция
mmioWrite вернет сообщение об ошибке при записи в файл, открытый с
установленным флагом MMIO_READ.
/* выделяет из файла блок WAVE */
mmckinfoWave.fccType = mmioFOURCC('W,'А','V,'Е');
if
(mmioDescend(hmmio,&mmckinfoWave,NULL,MMIO_FINDRIFF)!=0)
{
ReportError( hWnd, IDS_NOTWAVEFILE );
mmioClose ( hmmio, 0 ) ;
return( FALSE ) ;
}
/* поиск вложенного блока формата */
mmckinfoFmt.ckid = mmioFOURCC('f,'m','t',' ');
if( mmioDescend( hmmio, &mmckinfoFmt, &mmckinfoWave,
MMIO_FINDCHUNK ) != 0)
{
ReportError( hWnd, IDS_CORRUPTEDFILE );
mmioClose ( hmmio, 0 );
return( FALSE ) ;
}
После открытия файла нам необходимо найти нужные данные и
проверить их правильность. Первая команда mmioDescend ищет метку RIFF,
за
которой следует код WAVE.
При успешном выполнении поиска вторая команда
ищет вложенный блок формата звукозаписи.
78
          /* открытие файла для чтения */
     hmmio = mmioOpen( lpszFileName, NULL, MMIO_ALLOCBUF |
                               MMIO_READ );
     if (hmmio == NULL)
     {
             ReportError( hWnd, IDS_CANTOPEHFILE ) ;
             return( FALSE ) ;
     }

     Команда mmioOpen принимает три входных параметра: имя файла,
структуру с дополнительными параметрами и флаги для обозначения операций.
Дополнительные параметры нужны только для изменения размера буфера, для
открытия файла в памяти и для указания пользовательской процедуры чтения
файла. Поскольку функция ReadWaveData не выполняет ни одну из этих
операций, второй параметр равен NULL.
     Флаг MMIO_ALLOCBUF включает буферизацию ввода/вывода. Другой
флаг, MMIO_READ, задает открытие файла только для чтения. Функция
mmioWrite вернет сообщение об ошибке при записи в файл, открытый с
установленным флагом MMIO_READ.

            /* выделяет из файла блок WAVE */
     mmckinfoWave.fccType = mmioFOURCC('W,'А','V,'Е');
     if
(mmioDescend(hmmio,&mmckinfoWave,NULL,MMIO_FINDRIFF)!=0)
     {
            ReportError( hWnd, IDS_NOTWAVEFILE );
            mmioClose ( hmmio, 0 ) ;
            return( FALSE ) ;
     }
         /* поиск вложенного блока формата */
     mmckinfoFmt.ckid = mmioFOURCC('f,'m','t',' ');
     if( mmioDescend( hmmio, &mmckinfoFmt, &mmckinfoWave,
                        MMIO_FINDCHUNK ) != 0)
     {
            ReportError( hWnd, IDS_CORRUPTEDFILE );
            mmioClose ( hmmio, 0 );
            return( FALSE ) ;
     }

     После открытия файла нам необходимо найти нужные данные и
проверить их правильность. Первая команда mmioDescend ищет метку RIFF, за
которой следует код WAVE. При успешном выполнении поиска вторая команда
ищет вложенный блок формата звукозаписи.


                                   78