modMessage 函式
modMessage 函式是音樂檢測數位介面的進入點函式, (MIDI) 輸出驅動程式和內部合成器驅動程式。 如需與MIDI相關的音訊裝置訊息詳細資訊,請參閱 MIDI的音訊裝置訊息。
語法
DWORD modMessage(
UINT uDeviceID,
UINT uMsg,
DWORD_PTR dwUser,
DWORD_PTR dwParam1,
DWORD_PTR dwParam2
);
參數
uDeviceID
指定目標裝置的識別碼。 裝置標識碼是循序的,且初始值為零,最終值等於驅動程式支援的裝置數目。uMsg
指定 WINMM 傳送至驅動程式以回應用戶端應用程式呼叫的訊息。dwUser
針對 MODM_OPEN 訊息,驅動程式應該會填入此位置及其實例數據。 對於任何其他訊息,實例數據會傳回至驅動程式。 支援多個客戶端的驅動程式可以使用這個實例數據來追蹤與訊息相關聯的用戶端。dwParam1
指定訊息相依參數。dwParam2
指定訊息相依參數。 如果有旗標提供其他資訊給與 modMessage搭配運作的驅動程式,WINMM 會使用此參數來傳遞旗標。
傳回值
modMessage 函式會傳回MMSYSERR_NOERROR如果函式可以順利處理從 MMSYSTEM 接收的訊息。 否則,它會傳回下列其中一個錯誤訊息。
傳回碼 | Description |
---|---|
MMSYSERR_ERROR | 未指定的錯誤。 |
MMSYSERR_BADDEVICEID | 指定的裝置識別碼超出範圍。 |
MMSYSERR_NOTENABLED | 驅動程式無法載入或初始化。 |
MMSYSERR_ALLOCATED | 指定的裝置已配置。 |
MMSYSERR_INVALHANDLE | 指定裝置的句柄無效。 |
MMSYSERR_NODRIVER | 沒有設備驅動器存在。 |
MMSYSERR_NOMEM | 記憶體配置錯誤。 |
MMSYSERR_NOTSUPPORTED | 不支援訊息所要求的函式。 |
MMSYSERR_BADERRNUM | 錯誤值超出範圍。 如需詳細資訊,請參閱一節。 |
MMSYSERR_INVALFLAG | 無效的旗標是使用 dwParam2) 傳遞至 modMessage (。 |
MMSYSERR_INVALPARAM | 傳遞無效的參數至 modMessage。 |
MMSYSERR_HANDLEBUSY | 指定的句柄正由另一個線程同時使用 (,例如回呼線程) 。 |
MMSYSERR_INVALIDALIAS | 找不到指定的別名。 |
MMSYSERR_BADDB | 登錄資料庫不正確。 |
MMSYSERR_KEYNOTFOUND | 找不到指定的登錄機碼。 |
MMSYSERR_READERROR | 登錄讀取錯誤。 |
MMSYSERR_WRITEERROR | 登錄寫入錯誤。 |
MMSYSERR_DELETEERROR | 登錄刪除錯誤。 |
MMSYSERR_VALNOTFOUND | 找不到指定的登錄值。 |
MMSYSERR_NODRIVERCB | 與 modMessage 搭配運作的驅動程式不會呼叫 DriverCallback。 |
MMSYSERR_MOREDATA | modMessage 有更多要傳回的數據。 |
MMSYSERR_LASTERROR | 表示這是錯誤值範圍中的最後一個錯誤。 如需詳細資訊,請參閱<備註>一節。 |
備註
音訊裝置訊息是系統定義的常數。 因此, 當modMessage 收到音訊裝置訊息時,它會使用 switch 語句,根據訊息的值來判斷要執行的動作。
modMessage 可以傳回的錯誤訊息範圍取決於錯誤發生時所處理的訊息。 MMSYSERR_錯誤訊息的數值開頭為零 (MMSYSERR_NOERROR) ,然後繼續MMSYSERR_BASE + n,其中 n 是介於 1 到 21 之間的整數。 MMSYSERR_BASE的值是定義的常數。 如需MSYSERR_BASE和MMSYSERR_錯誤訊息的詳細資訊,請參閱 WDK 中 Windows SDK 中的 Mmsystem.h 和 Mmddk.h。
規格需求
目標平台 |
桌面 |
版本 |
適用於 Windows XP 和更新版本的 Windows 作業系統。 |
標頭 |
Mmddk.h (包括 Mmddk.h、Mmsystem.h 或 Windows.h) |