共用方式為


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)

另請參閱

modMessage

MIDIOPENDESC

DriverCallback

MOM_OPEN