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

UptoLike

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

Поле lpstrElementName назначает источник данных для
комбинированного устройства. Windows различает простые и
комбинированные устройства. Для простого устройства не нужно указывать
имя файла, а для комбинированного устройства - нужно. Например, программа
не может самостоятельно выбрать компакт-диск, а воспроизводит всегда тот
диск, который находится в дисководе. Таким образом, проигрыватель компакт-
дисков является простым устройством. С другой стороны, проигрыватель
аудиофайлов может воспроизводить любой указанный ему файл. Поэтому
устройство waveaudio является комбинированным.
Элемент устройства представляет собой входную или выходную среду,
которую программа связывает с устройством. Чаще всего это файл, поэтому в
поле lpstrElementName обычно содержится имя файла.
Последнее поле, lpstrAlias, позволяет задать псевдоним для имени
открытого устройства. Псевдонимы можно применять только в командных
строках MCI.
Все поля блока параметров заполнять не обязательно. Так, можно задать
только имя элемента и позволить системе самостоятельно выбрать
соответствующее устройство по расширению имени файла - скажем,
проигрыватель WAV-файлов или синтезатор для MID-файлов. Если вы хотите
получить информацию о любом устройстве, можно открыть его, указав его тип
без задания элемента. Флаги функции mciSendCommand сообщают системе,
какие поля следует прочитать. Например:
/*-------------------------------------------------------------
OPEN DEVICE
Открытие устройства воспроизведения аудиофайлов
--------------------------------------------------------------*/
BOOL OpenDevice( HWND hWnd, LPSTR lpszFileName,
MCIDEVICEID *lpmciDevice )
{
DWORD dwRet;
MCI_OPEN_PARMS mciOpenParms;
/* открытие комбинированного устройства */
mciOpenParms.lpstrDeviceType = "waveaudio";
mciOpenParms.lpstrElementName = lpszFileName;
dwRet = mciSendCommand( 0, // идентификатор устройства
MCI_OPEN, // команда
MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, // флаги
(DWORD)(LPVOID) &mciOpenParms ); // блок параметров
if( dwRet != 0 )
{
ReportMCIError( hWnd, dwRet );
return( FALSE );
}
69
      Поле     lpstrElementName    назначает    источник     данных     для
комбинированного       устройства.   Windows     различает     простые    и
комбинированные устройства. Для простого устройства не нужно указывать
имя файла, а для комбинированного устройства - нужно. Например, программа
не может самостоятельно выбрать компакт-диск, а воспроизводит всегда тот
диск, который находится в дисководе. Таким образом, проигрыватель компакт-
дисков является простым устройством. С другой стороны, проигрыватель
аудиофайлов может воспроизводить любой указанный ему файл. Поэтому
устройство waveaudio является комбинированным.
      Элемент устройства представляет собой входную или выходную среду,
которую программа связывает с устройством. Чаще всего это файл, поэтому в
поле lpstrElementName обычно содержится имя файла.
      Последнее поле, lpstrAlias, позволяет задать псевдоним для имени
открытого устройства. Псевдонимы можно применять только в командных
строках MCI.
      Все поля блока параметров заполнять не обязательно. Так, можно задать
только имя элемента и позволить системе самостоятельно выбрать
соответствующее устройство по расширению имени файла - скажем,
проигрыватель WAV-файлов или синтезатор для MID-файлов. Если вы хотите
получить информацию о любом устройстве, можно открыть его, указав его тип
без задания элемента. Флаги функции mciSendCommand сообщают системе,
какие поля следует прочитать. Например:

/*-------------------------------------------------------------
OPEN DEVICE
Открытие устройства воспроизведения аудиофайлов
--------------------------------------------------------------*/
BOOL OpenDevice( HWND hWnd, LPSTR lpszFileName,
                 MCIDEVICEID *lpmciDevice )
{
        DWORD dwRet;
        MCI_OPEN_PARMS mciOpenParms;
               /* открытие комбинированного устройства */
        mciOpenParms.lpstrDeviceType = "waveaudio";
        mciOpenParms.lpstrElementName = lpszFileName;
        dwRet = mciSendCommand( 0,                          // идентификатор устройства
                       MCI_OPEN,                         // команда
                       MCI_OPEN_TYPE | MCI_OPEN_ELEMENT, // флаги
                       (DWORD)(LPVOID) &mciOpenParms ); // блок параметров
        if( dwRet != 0 )
        {
               ReportMCIError( hWnd, dwRet );
               return( FALSE );
        }

                                           69