MODM_OPEN函式
WINMM 會將 MODM_OPEN
訊息傳送至 MIDI 輸出驅動程式的 modMessage 函式,以設定用戶端應用程式可以使用的指定裝置。
語法
DWORD modMessage(
UINT uDeviceID,
UINT uMsg,
DWORD_PTR dwUser,
DWORD_PTR dwParam1,
DWORD_PTR dwParam2
);
參數
uDeviceID
指定目標裝置的識別碼。 裝置標識碼是循序的,且初始值為零,而最終值等於一個小於驅動程式支援的裝置數目。uMsg
WINMM 會在呼叫 modMessage 來處理此訊息時,將此參數設定為MODM_OPEN。dwUser
MIDI 輸出驅動程式必須填入此位置及其實例資料,但只會回應MODM_OPEN
。dwParam1
此參數指定 MIDIOPENDESC 結構的遠指標。 此結構包含驅動程式的其他資訊,例如來自用戶端的實例數據,以及用戶端的回呼函式。dwParam2
此參數會指定選項旗標,以決定裝置的開啟方式。 旗標可以是下表中的任何值。旗標 意義 CALLBACK_EVENT
如果指定此旗標,則MIDIOPENDESC結構中的 dwCallback 會假設為事件句柄。
CALLBACK_FUNCTION
如果指定此旗標,則MIDIOPENDESC結構中的 dwCallback 會假設為回呼函式的位址。
CALLBACK_THREAD
如果指定此旗標,則會假設MIDIOPENDESC結構中的 dwCallback是線程的句柄。
CALLBACK_WINDOW
如果指定此旗標,則MIDIOPENDESC結構中的 dwCallback 會假設為視窗句柄。
MIDI_IO_COOKED
如果指定此旗標,則會以數據流模式開啟裝置,而驅動程式會接收串流訊息。 驅動程式必須能夠處理任何發生的應變。 例如,驅動程式必須能夠以異步方式對數據流播放簡短訊息和系統獨佔訊息。
傳回值
如果作業成功, modMessage 函式會傳回MMSYSERR_NOERROR。 否則會傳回下表中的其中一個錯誤訊息。
傳回碼 | Description |
---|---|
MMSYSERR_NOTENABLED | 驅動程式無法載入或初始化。 |
MMSYSERR_ALLOCATED | MIDI 裝置已由驅動程式支援的用戶端數目上限所配置,或因為記憶體以外的系統資源限制而無法開啟裝置。 |
MMSYSERR_NOMEM | 無法開啟裝置,因為無法配置或鎖定記憶體。 |
備註
驅動程式必須能夠判斷它允許使用特定裝置的用戶端數目。 針對驅動程式所支援的用戶端數目上限開啟裝置之後,驅動程式會傳回MMSYSERR_ALLOCATED,以開啟裝置的任何其他要求。 如果開啟作業成功,驅動程式會使用 DriverCallback 函式將 MOM_OPEN 訊息傳送給用戶端。
規格需求
目標平台 |
桌面 |
版本 |
可在 Windows XP 和更新版本的 Windows 作業系統中使用。 |
標頭 |
Mmddk.h (包括 Mmddk.h、Mmsystem.h 或 Windows.h) |