mixerMessage 函式 (mmeapi.h)
混合器Message函式會將自訂混音器驅動程式訊息直接傳送至混音器驅動程式。
語法
DWORD mixerMessage(
HMIXER hmx,
UINT uMsg,
DWORD_PTR dwParam1,
DWORD_PTR dwParam2
);
參數
hmx
接收訊息之混音器的識別碼。 您必須將裝置識別碼轉換成 HMIXER 控制碼類型。 如果您提供控制碼而非裝置識別碼,函式會失敗並傳回MMSYSERR_NOSUPPORT錯誤碼。
uMsg
要傳送至混音器驅動程式的自訂混音器驅動程式訊息。 此訊息必須高於或等於MXDM_USER常數。
dwParam1
與所傳送訊息相關聯的參數。
dwParam2
與所傳送訊息相關聯的參數。
傳回值
傳回自訂混音器驅動程式訊息特有的值。 可能的錯誤值包括下列專案。
傳回碼 | 描述 |
---|---|
|
指定的裝置控制碼無效。 |
|
MXDM_USER訊息中指定的 uMsg 參數無效。 |
|
deviceID參數必須是有效的裝置識別碼。 |
|
混音器裝置未處理訊息。 |
備註
使用者定義訊息只能傳送至支援訊息的混音器驅動程式。 應用程式應該藉由擷取混合器功能並檢查混合器、wPid、vDriverVersion和szPname成員,來確認混音器驅動程式是否為支援訊息的驅動程式。
訊息 DRV_QUERYDEVICEINTERFACE
會查詢waveIn、waveOut、midiIn、midiOut或混合器裝置的裝置介面名稱。
針對 DRV_QUERYDEVICEINTERFACE
, dwParam1 是呼叫端配置的緩衝區指標,函式會將包含裝置介面名稱的 Null 終止 Unicode 字串寫入其中。 如果裝置沒有裝置介面,則字串長度為零。
針對 DRV_QUERYDEVICEINTERFACE
, dwParam2 會以位元組為單位指定緩衝區大小。 這是函式的輸入參數。 呼叫端應該指定大於或等於 DRV_QUERYDEVICEINTERFACESIZE 訊息所擷取的緩衝區大小。
Windows Me 和 Windows 2000 和更新版本中支援DRV_QUERYDEVICEINTERFACE訊息。 此訊息僅適用于 waveInMessage、 waveOutMessage、 midiInMessage、 midiOutMessage和 混合器Message 函式。 系統會攔截此訊息,並傳回適當的值,而不會將訊息傳送至設備磁碟機。 如需系統攔截 xxxMessage 函式的一般資訊,請參閱 系統攔截的裝置訊息。
下列兩個訊息常數會一起使用,以便取得裝置介面名稱:
- DRV_QUERYDEVICEINTERFACESIZE
- DRV_QUERYDEVICEINTERFACE
如需詳細資訊,請參閱 取得裝置介面名稱。
訊息 DRV_QUERYDEVICEINTERFACESIZE
會查詢保存裝置介面名稱所需的緩衝區大小。
針對 DRV_QUERYDEVICEINTERFACESIZE
, dwParam1 是緩衝區大小的指標。 此參數指向 ULONG 變數,函式會將所需的緩衝區大小寫入位元組。 大小包含名稱字串終止 Null 的儲存空間。 如果裝置識別碼識別沒有裝置介面的裝置,則大小為零。
針對 DRV_QUERYDEVICEINTERFACESIZE
, 未使用 dwParam2 。 將此參數設定為零。
此訊息僅適用于 waveInMessage、 waveOutMessage、 midiInMessage、 midiOutMessage和 混合器Message 函式。 系統會攔截此訊息,並傳回適當的值,而不會將訊息傳送至設備磁碟機。 如需系統攔截 xxxMessage 函式的一般資訊,請參閱 系統攔截的裝置訊息。
此訊息所擷取的緩衝區大小會以位元組計數表示。 它會指定保存包含裝置介面名稱之 Null 終止 Unicode 字串所需的緩衝區大小。 呼叫端會配置指定大小的緩衝區,並使用 DRV_QUERYDEVICEINTERFACE 訊息來擷取裝置介面名稱字串。
如需詳細資訊,請參閱 取得裝置介面名稱。
訊息 DRV_QUERYDEVNODE
會查詢隨插即用管理員指派給裝置的 devnode 號碼。
針對 DRV_QUERYDEVNODE
, dwParam1 是呼叫端配置的 DWORD 變數指標,函式會將 devnode 編號寫入其中。 如果未將 devnode 指派給裝置,函式會將此變數設定為零。
針對 DRV_QUERYDEVNODE
, 未使用 dwParam2 。 將此參數設定為零。
在 Windows 2000 和更新版本中,訊息一律會傳回MMSYSERR_NOTSUPPORTED。 此訊息僅適用于 waveInMessage、 waveOutMessage、 midiInMessage、 midiOutMessage和 混合器Message 函式。 系統會攔截此訊息,並傳回適當的值,而不會將訊息傳送至設備磁碟機。 如需系統攔截 xxxMessage 函式的一般資訊,請參閱 系統攔截的裝置訊息。
訊息 DRV_QUERYMAPPABLE
會查詢對應程式是否可以使用指定的裝置。
針對 DRV_QUERYMAPPABLE
, 未使用 dwParam1 。 將此參數設定為零。
針對 DRV_QUERYMAPPABLE
, 未使用 dwParam2 。 將此參數設定為零。
此訊息僅適用于 waveInMessage、 waveOutMessage、 midiInMessage、 midiOutMessage、 混合器Message 和 auxOutMessage 函式。 系統會攔截此訊息,並傳回適當的值,而不會將訊息傳送至設備磁碟機。 如需系統攔截 xxxMessage 函式的一般資訊,請參閱 系統攔截的裝置訊息。
當應用程式程式開啟對應程式而非特定音訊裝置時,系統會在應用程式和可用的裝置之間插入對應程式。 對應程式會將應用程式的需求對應至其中一個可用的裝置,以選取適當的裝置。 如需對應程式的詳細資訊,請參閱Microsoft Windows SDK檔。
訊息 DRVM_MAPPER_CONSOLEVOICECOM_GET
會擷取慣用語音通訊裝置的裝置識別碼。
針對 DRVM_MAPPER_CONSOLEVOICECOM_GET
, dwParam1 是裝置識別碼的指標。 此參數指向 DWORD 變數,函式會將目前慣用語音通訊裝置的裝置識別碼寫入其中。 函式會寫入值 (-1) 如果沒有符合慣用語音通訊裝置資格的裝置。
針對 DRVM_MAPPER_CONSOLEVOICECOM_GET
, dwParam2 是狀態旗標的指標。 此參數指向函式寫入裝置狀態旗標的 DWORD 變數。 目前只定義一個旗標位:DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY。
此訊息僅適用于 waveInMessage 和 waveOutMessage 函式。 當呼叫端使用DRVM_MAPPER_CONSOLEVOICECOM_GET訊息呼叫這兩個函式時,呼叫端必須將裝置識別碼指定為WAVE_MAPPER,然後將此值轉換為適當的控制碼類型。 針對 waveInMessage、 waveOutMessage、 midiInMessage、 midiOutMessage或 mixsage 函式,呼叫端必須將裝置識別碼分別轉換成 HWAVEIN、HWAVEOUT、HMIDIIN、HMIDIOUT 或 HMIXER 類型的控制碼。 請注意,如果呼叫端提供有效的控制碼,而不是此參數的裝置識別碼,函式會失敗並傳回錯誤碼MMSYSERR_NOSUPPORT。
系統會攔截此訊息,並傳回適當的值,而不會將訊息傳送至設備磁碟機。 如需系統攔截 xxxMessage 函式的一般資訊,請參閱 系統攔截的裝置訊息。
此訊息提供一種方式來判斷哪些裝置特別適用于語音通訊,與 DRVM_MAPPER_PREFERRED_GET 訊息相反,這會決定其他所有音訊功能偏好哪一個裝置。
例如,語音通訊慣用 的 waveOut 裝置可能是頭戴式裝置中的耳機,但所有其他音訊功能的慣用 waveOut 裝置可能是一組身歷聲喇叭。
當 dwParam2指向的 DWORD 位置中設定DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY旗標位時, waveIn 和 waveOut API 只會使用目前的慣用語音通訊裝置,而且如果慣用的裝置無法使用,則不會搜尋其他可用的裝置。 waveInMessage或waveOutMessage呼叫所輸出的旗標適用于waveIn和waveOut API 的慣用語音通訊裝置,不論呼叫waveInMessage還是waveOutMessage。 如需詳細資訊,請參閱 慣用 Voice-Communications 裝置識別碼。
訊息 DRVM_MAPPER_PREFERRED_GET
會擷取慣用音訊裝置的裝置識別碼。
針對 DRVM_MAPPER_PREFERRED_GET
, dwParam1 是裝置識別碼的指標。 此參數指向 DWORD 變數,函式會將目前慣用裝置的裝置識別碼寫入其中。 函式會將值寫入 (-1) ,如果沒有符合慣用裝置資格的裝置。
針對 DRVM_MAPPER_PREFERRED_GET
, dwParam2 是狀態旗標的指標。 此參數指向函式寫入裝置狀態旗標的 DWORD 變數。 目前只有一個旗標位是針對 waveInMessage 和 waveOutMessage 呼叫定義 () :DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY。
此訊息僅適用于 waveInMessage、 waveOutMessage 和 midiOutMessage 函式。 當呼叫端使用DRVM_MAPPER_PREFERRED_GET訊息呼叫這些函式時,呼叫端必須先將裝置識別碼指定為 waveInMessage 或 waveOutMessage) WAVE_MAPPER (或 midiOutMessage) MIDI_MAPPER (,然後將此值轉換成適當的控制碼類型。 針對 waveInMessage、 waveOutMessage或 midiOutMessage 函式,呼叫端必須將裝置識別碼分別轉換成控制碼類型 HWAVEIN、HWAVEOUT 或 HMIDIOUT。 請注意,如果呼叫端提供有效的控制碼,而不是此參數的裝置識別碼,函式會失敗並傳回錯誤碼MMSYSERR_NOSUPPORT。
系統會攔截此訊息,並傳回適當的值,而不會將訊息傳送至設備磁碟機。 如需系統攔截 xxxMessage 函式的一般資訊,請參閱 系統攔截的裝置訊息。
相較于 DRVM_MAPPER_CONSOLEVOICECOM_GET 訊息,此訊息提供一種方式來判斷一般音訊功能偏好哪一個裝置,這可決定哪些裝置特別適合用於語音通訊。
當 DRVM_MAPPER_PREFERRED_FLAGS_PREFERREDONLY 旗標位設定在 dwParam2指向的 DWORD 位置時, waveIn 和 waveOut API 只會使用目前的慣用裝置,而且如果慣用裝置無法使用,則不會搜尋其他可用的裝置。 請注意, midiOutMessage 函式不會輸出此旗標-- midiOut API 一律只會使用慣用的裝置。 waveInMessage或waveOutMessage呼叫所輸出的旗標適用于waveIn和waveOut API 的慣用裝置,不論呼叫waveInMessage還是waveOutMessage。
xxx訊息函式會接受此值來取代有效的裝置控制碼,以便讓應用程式判斷預設裝置識別碼,而不需要先開啟裝置。 如需詳細資訊,請參閱 存取慣用裝置識別碼。
需求
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | mmeapi.h (包含 Windows.h) |
程式庫 | Winmm.lib |
Dll | Winmm.dll |