IMMDevice::Activate 方法 (mmdeviceapi.h)
Activate 方法會建立具有指定介面的 COM 物件。
語法
HRESULT Activate(
[in] REFIID iid,
[in] DWORD dwClsCtx,
[in] PROPVARIANT *pActivationParams,
[out] void **ppInterface
);
參數
[in] iid
介面識別碼。 此參數是 GUID 的參考,可識別呼叫端要求啟動的介面。 呼叫端會使用此介面來與 COM 物件通訊。 將此參數設定為下列其中一個介面識別碼:
IID_IAudioClient
IID_IAudioEndpointVolume
IID_IAudioMeterInformation
IID_IAudioSessionManager
IID_IAudioSessionManager2
IID_IBaseFilter
IID_IDeviceTopology
IID_IDirectSound
IID_IDirectSound8
IID_IDirectSoundCapture
IID_IDirectSoundCapture8
IID_IMFTrustedOutput
IID_ISpatialAudioClient
IID_ISpatialAudioMetadataClient
如需詳細資訊,請參閱。
[in] dwClsCtx
管理新建立之物件的程式代碼執行所在的執行內容。 呼叫端可以將此參數設定為一或多個 CLSCTX 列舉值的位 OR,來限制內容。 或者,用戶端可以藉由指定CLSCTX_ALL來避免強加任何內容限制。 如需 CLSCTX的詳細資訊,請參閱 Windows SDK 檔。
[in] pActivationParams
設定為 NULL,以在音頻端點裝置上啟動 IAudioEndpointVolume、IAudioMeterInformation、IAudioSessionManager或 IDeviceTopology 介面。 從 Windows 10 組建 20348 開始,啟動 IAudioClient 的呼叫端可以設定 pActivationParamsAUDIOCLIENT_ACTIVATION_PARAMS 指標,以使用行程篩選器在回送模式中設定音頻用戶端。
啟用 IBaseFilter、IDirectSound、IDirectSound8、IDirectSoundCapture或 IDirectSoundCapture8 介面時,呼叫者可以指定包含數據流初始化資訊的 PROPVARIANT 結構的指標。 如需詳細資訊,請參閱。
[out] ppInterface
指標變數的指標,方法會將 參數所指定之介面的位址寫入 iid。 透過這個方法,呼叫端會取得介面的計數參考。 呼叫端負責藉由呼叫介面的 Release 方法,在不再需要介面時釋放介面。 如果啟動 呼叫
傳回值
如果方法成功,則會傳回S_OK。 如果失敗,可能的傳回碼會包含,但不限於下表中顯示的值。
傳回碼 | 描述 |
---|---|
|
物件不支援要求的介面類型。 |
|
參數 ppInterfaceNULL。 |
|
pActivationParams 參數必須針對指定的介面 NULL;或 pActivationParams 指向無效的數據。 |
|
記憶體不足。 |
|
使用者已移除音訊端點裝置或端點裝置所連線的配接器裝置。 |
言論
這個方法會使用 iid 參數所指定的介面,建立 COM 物件。 方法類似於 Windows CoCreateInstance 函式,不同之處在於呼叫端不提供 CLSID 做為參數。 如需 CoCreateInstance的詳細資訊,請參閱 Windows SDK 檔。
用戶端可以呼叫特定音訊端點裝置 IMMDevice 介面的 Activate 方法,以取得該裝置上介面的計數參考。 方法可以啟動下列介面:
- IAudioClient
- IAudioEndpointVolume
- IAudioMeterInformation
- IAudioSessionManager
- IAudioSessionManager2
- IBaseFilter
- IDeviceTopology
- IDirectSound
- IDirectSound8
- IDirectSoundCapture
- IDirectSoundCapture8
- IMFTrustedOutput
const IID IID_IAudioClient __uuidof(IAudioCaptureClient)
如需 __uuidof 運算符的相關信息,請參閱 Windows SDK 檔。 如需 IBaseFilter、IDirectSound、IDirectSound8、IDirectSoundCapture、IDirectSoundCapture8和 IMFTrustedOutput 請參閱 Windows SDK 檔。
pActivationParams 參數應該 NULL,Activate 呼叫來建立 IAudioEndpointVolume, IAudioMeterInformation、IAudioSessionManager或音頻端點裝置 IDeviceTopology 接口。 從 Windows 10 組建 20348 開始,啟動 IAudioClient 的呼叫端可以設定 pActivationParamsAUDIOCLIENT_ACTIVATION_PARAMS 指標,以使用行程篩選器在回送模式中設定音頻用戶端。
針對 Activate 呼叫來建立 IBaseFilter、IDirectSound、IDirectSound8、IDirectSoundCapture或 IDirectSoundCapture8 介面, 呼叫端可以選擇指定非NULL 值,pActivationParams。 在此情況下,pActivationParams 指向包含數據流初始化資訊的 PROPVARIANT 結構。 將結構的 vt 成員設定為 VT_BLOB。 將 blob.pBlobData 成員設定為指向包含音訊會話 GUID 和數據流初始化旗標的 DIRECTX_AUDIO_ACTIVATION_PARAMS 結構。 將 blob.cbSize 成員設定為 sizeof(DIRECTX_AUDIO_ACTIVATION_PARAMS)。 如需程式代碼範例,請參閱 DirectShow 應用程式的裝置角色。 如需 PROPVARIANT的詳細資訊,請參閱 Windows SDK 檔。
IBaseFilter、IDirectSound、IDirectSound8、IDirectSoundCapture或 IDirectSoundCapture8 介面實例,Activate 方法會在音頻端點裝置上封裝數據流。 在 Activate 呼叫期間,DirectSound 系統模組會呼叫 IAudioClient::Initialize 方法來建立數據流。 如果 pActivationParams 為非NULL,DirectSound 會提供來自 DIRECTX_AUDIO_ACTIVATION_PARAMS 結構的音頻會話 GUID 和數據流初始化旗標作為 Initialize 呼叫的輸入參數。 如果 pActivationParamsNULL,DirectSound 會將 Initialize 方法 的 audioSessionGuid 和 StreamFlags 參數設定為各自的預設值,NULL 和 0。 這些值會指示 方法將數據流指派給會話 GUID 值所識別的進程特定會話GUID_NULL。
Activate 只能在轉譯端點裝置上啟動 IDirectSound 或 IDirectSound8 介面。 它只能在擷取端點裝置上啟動 IDirectSoundCapture 或 IDirectSoundCapture8 介面。 啟動 啟動 呼叫,以在轉譯裝置上啟動 IDirectSound 或 IDirectSoundCapture8 介面,或 IDirectSoundCapture 或 IDirectSoundCapture8 介面失敗,並傳回錯誤碼E_NOINTERFACE。
在 Windows 7 中,用戶端可以呼叫 IMMDevice::Activate 並 IID_IMFTrustedOutput指定輸出信任授權單位 (OTA) 物件,並擷取物件的 IMFTrustedOutput 介面指標。 OTA 可以在媒體基礎的受保護媒體路徑 (PMP) 內部或外部運作,並在 Media Foundation 管線外部傳送內容。 如果呼叫端位於 PMP 外部,則 OTA 可能無法在 PMP 中運作,且保護設定較不健全。 如需針對音訊和範例程式代碼使用受保護物件的相關信息,請參閱 受保護的使用者模式音訊 (PUMA)。
如需受保護物件和 IMFTrustedOutput的一般資訊,請參閱媒體基礎檔中的。
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
支援的最低伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平臺 | 窗戶 |
標頭 | mmdeviceapi.h |