共用方式為


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)

另請參閱

MODM_OPEN