waveOutOpen 関数 (mmeapi.h)
waveOutOpen 関数は、指定された波形オーディオ出力デバイスを再生用に開きます。
構文
MMRESULT waveOutOpen(
LPHWAVEOUT phwo,
UINT uDeviceID,
LPCWAVEFORMATEX pwfx,
DWORD_PTR dwCallback,
DWORD_PTR dwInstance,
DWORD fdwOpen
);
パラメーター
phwo
開いている波形オーディオ出力デバイスを識別するハンドルを受け取るバッファーへのポインター。 ハンドルを使用して、他の波形オーディオ出力関数を呼び出すときにデバイスを識別します。 fdwOpen にWAVE_FORMAT_QUERY フラグが指定されている場合、このパラメーターは NULL になる可能性があります。
uDeviceID
開く波形オーディオ出力デバイスの識別子。 これは、デバイス識別子または開いている波形オーディオ入力デバイスのハンドルのいずれかです。 デバイス識別子の代わりに、次のフラグを使用することもできます。
値 | 説明 |
---|---|
WAVE_MAPPER | この機能は、指定されたフォーマットを再生できる波形オーディオ出力デバイスを選択します。 |
pwfx
デバイスに送信される波形オーディオ データの形式を識別する WAVEFORMATEX 構造体へのポインター。 この構造体は、 waveOutOpen に渡した直後に解放できます。
dwCallback
コールバック メカニズムを指定します。 値は、次のいずれかである必要があります。
- コールバック関数へのポインター。 関数シグネチャについては、「 waveOutProc」を参照してください。
- ウィンドウのハンドル。
- スレッド識別子。
- イベントへのハンドル。
- 値 NULL。
dwInstance
コールバック メカニズムに渡されるユーザー インスタンス データ。 このパラメーターは、ウィンドウ コールバック メカニズムでは使用されません。
fdwOpen
デバイスを開くフラグ。 次の値が定義されています。
値 | 説明 |
---|---|
CALLBACK_EVENT | dwCallback パラメーターはイベント ハンドルです。 |
CALLBACK_FUNCTION | dwCallback パラメーターはコールバック プロシージャ アドレスです。 |
CALLBACK_NULL | コールバック メカニズムはありません。 これが既定の設定です。 |
CALLBACK_THREAD | dwCallback パラメーターはスレッド識別子です。 |
CALLBACK_WINDOW | dwCallback パラメーターはウィンドウ ハンドルです。 |
WAVE_ALLOWSYNC | このフラグを指定すると、同期波形オーディオデバイスを開くことができます。 同期ドライバーを開くときにこのフラグが指定されていない場合、デバイスは開けなくなります。 |
WAVE_MAPPED_DEFAULT_COMMUNICATION_DEVICE |
このフラグを指定し、 uDeviceID パラメーターを WAVE_MAPPERすると、関数は既定の通信デバイスを開きます。
このフラグは、 uDeviceID が WAVE_MAPPERと等しい場合にのみ適用されます。 メモ Windows 7 が必要
|
WAVE_FORMAT_DIRECT | このフラグを指定した場合、ACM ドライバーはオーディオ データに対して変換を実行しません。 |
WAVE_FORMAT_QUERY | このフラグが指定されている場合、 waveOutOpen はデバイスに対してクエリを実行して、指定された形式をサポートしているかどうかを判断しますが、デバイスは実際には開かれていません。 |
WAVE_MAPPED | このフラグが指定されている場合、 uDeviceID パラメーターは、ウェーブ マッパーによってマップされる波形オーディオ デバイスを指定します。 |
戻り値
成功した場合 はMMSYSERR_NOERROR を返し、それ以外の場合はエラーを返します。 考えられるエラー値は次のとおりです。
リターン コード | 説明 |
---|---|
|
指定されたリソースは既に割り当てられています。 |
|
指定されたデバイス識別子が範囲外です。 |
|
デバイス ドライバーが存在しません。 |
|
メモリを割り当てまたはロックできません。 |
|
サポートされていない波形オーディオ形式で開こうとしました。 |
|
デバイスは同期ですが、WAVE_ALLOWSYNC フラグを使用せずに waveOutOpen が呼び出されました。 |
解説
waveOutGetNumDevs 関数を使用して、システムに存在する波形オーディオ出力デバイスの数を決定します。 uDeviceID パラメーターで指定された値がデバイス識別子の場合、0 から存在するデバイス数より 1 小さい値に変更できます。 WAVE_MAPPER定数は、デバイス識別子としても使用できます。
pwfx が指す構造体を拡張して、特定のデータ形式の型固有の情報を含めることができます。 たとえば、PCM データの場合、サンプルあたりのビット数を指定するために追加の UINT が追加されます。 この場合は PCMWAVEFORMAT 構造体を使用します。 その他の波形オーディオ形式の場合は、 WAVEFORMATEX 構造体を使用して、追加データの長さを指定します。
ウィンドウまたはスレッドでコールバック情報を受信するように選択した場合は、波形オーディオ出力の進行状況を示す次のメッセージがウィンドウ プロシージャ関数に送信されます: MM_WOM_OPEN、 MM_WOM_CLOSE、 およびMM_WOM_DONE。
コールバック メカニズム
dwCallback パラメーターと fdwOpen パラメーターは、波形オーディオ出力の進行状況についてアプリケーションに通知する方法を指定します。fdwOpen に CALLBACK_FUNCTION フラグが含まれている場合、dwCallback はコールバック関数へのポインターです。 関数シグネチャについては、「 waveOutProc」を参照してください。 コールバックの uMsg パラメーターは、オーディオ出力の進行状況を示します。
fdwOpen に CALLBACK_WINDOW フラグが含まれている場合、dwCallback はウィンドウへのハンドルです。ウィンドウには、進行状況を示す次のメッセージが表示されます。 fdwOpen に CALLBACK_THREAD フラグが含まれている場合、dwCallback はスレッド識別子です。 スレッドは、CALLBACK_WINDOWの前に一覧表示された メッセージを受信します。fdwOpen に CALLBACK_EVENT フラグが含まれている場合、dwCallback はイベントのハンドルです。 イベントは、波形バッファーの状態が変化するたびに通知されます。 アプリケーションでは 、WaitForSingleObject または WaitForMultipleObjects を使用してイベントを待機できます。 イベントがシグナル通知されると、WAVEHDR 構造体の dwFlags メンバーを調べることで、波形バッファーの現在の状態を取得できます。 ( 「waveOutPrepareHeader」を参照してください)。
fdwOpen に CALLBACK_NULL フラグが含まれている場合、dwCallback は NULL である必要があります。 その場合、コールバック メカニズムは使用されません。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | mmeapi.h (Windows.h を含む) |
Library | Winmm.lib |
[DLL] | Winmm.dll |
関連項目
ウィンドウまたはスレッドを使用したドライバー メッセージの処理