共用方式為


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,以在音頻端點裝置上啟動 IAudioEndpointVolumeIAudioMeterInformationIAudioSessionManagerIDeviceTopology 介面。 從 Windows 10 組建 20348 開始,啟動 IAudioClient 的呼叫端可以設定 pActivationParamsAUDIOCLIENT_ACTIVATION_PARAMS 指標,以使用行程篩選器在回送模式中設定音頻用戶端。

啟用 IBaseFilterIDirectSoundIDirectSound8IDirectSoundCaptureIDirectSoundCapture8 介面時,呼叫者可以指定包含數據流初始化資訊的 PROPVARIANT 結構的指標。 如需詳細資訊,請參閱。

[out] ppInterface

指標變數的指標,方法會將 參數所指定之介面的位址寫入 iid。 透過這個方法,呼叫端會取得介面的計數參考。 呼叫端負責藉由呼叫介面的 Release 方法,在不再需要介面時釋放介面。 如果啟動 呼叫 失敗,*ppInterface NULL

傳回值

如果方法成功,則會傳回S_OK。 如果失敗,可能的傳回碼會包含,但不限於下表中顯示的值。

傳回碼 描述
E_NOINTERFACE
物件不支援要求的介面類型。
E_POINTER
參數 ppInterfaceNULL
E_INVALIDARG
pActivationParams 參數必須針對指定的介面 NULL;或 pActivationParams 指向無效的數據。
E_OUTOFMEMORY
記憶體不足。
AUDCLNT_E_DEVICE_INVALIDATED
使用者已移除音訊端點裝置或端點裝置所連線的配接器裝置。

言論

這個方法會使用 iid 參數所指定的介面,建立 COM 物件。 方法類似於 Windows CoCreateInstance 函式,不同之處在於呼叫端不提供 CLSID 做為參數。 如需 CoCreateInstance的詳細資訊,請參閱 Windows SDK 檔。

用戶端可以呼叫特定音訊端點裝置 IMMDevice 介面的 Activate 方法,以取得該裝置上介面的計數參考。 方法可以啟動下列介面:

若要取得介面的介面標識碼,請使用 __uuidof 運算符。 例如,IAudioCaptureClient 的介面標識符定義如下:

const IID IID_IAudioClient  __uuidof(IAudioCaptureClient)

如需 __uuidof 運算符的相關信息,請參閱 Windows SDK 檔。 如需 IBaseFilterIDirectSoundIDirectSound8IDirectSoundCaptureIDirectSoundCapture8IMFTrustedOutput 請參閱 Windows SDK 檔。

pActivationParams 參數應該 NULLActivate 呼叫來建立 IAudioEndpointVolumeIAudioMeterInformationIAudioSessionManager或音頻端點裝置 IDeviceTopology 接口。 從 Windows 10 組建 20348 開始,啟動 IAudioClient 的呼叫端可以設定 pActivationParamsAUDIOCLIENT_ACTIVATION_PARAMS 指標,以使用行程篩選器在回送模式中設定音頻用戶端。

針對 Activate 呼叫來建立 IBaseFilterIDirectSoundIDirectSound8IDirectSoundCaptureIDirectSoundCapture8 介面, 呼叫端可以選擇指定非NULL 值,pActivationParams。 在此情況下,pActivationParams 指向包含數據流初始化資訊的 PROPVARIANT 結構。 將結構的 vt 成員設定為 VT_BLOB。 將 blob.pBlobData 成員設定為指向包含音訊會話 GUID 和數據流初始化旗標的 DIRECTX_AUDIO_ACTIVATION_PARAMS 結構。 將 blob.cbSize 成員設定為 sizeofDIRECTX_AUDIO_ACTIVATION_PARAMS)。 如需程式代碼範例,請參閱 DirectShow 應用程式的裝置角色。 如需 PROPVARIANT的詳細資訊,請參閱 Windows SDK 檔。

IBaseFilterIDirectSoundIDirectSound8IDirectSoundCaptureIDirectSoundCapture8 介面實例,Activate 方法會在音頻端點裝置上封裝數據流。 在 Activate 呼叫期間,DirectSound 系統模組會呼叫 IAudioClient::Initialize 方法來建立數據流。 如果 pActivationParams 為非NULL,DirectSound 會提供來自 DIRECTX_AUDIO_ACTIVATION_PARAMS 結構的音頻會話 GUID 和數據流初始化旗標作為 Initialize 呼叫的輸入參數。 如果 pActivationParamsNULL,DirectSound 會將 Initialize 方法 的 audioSessionGuidStreamFlags 參數設定為各自的預設值,NULL 和 0。 這些值會指示 方法將數據流指派給會話 GUID 值所識別的進程特定會話GUID_NULL。

Activate 只能在轉譯端點裝置上啟動 IDirectSoundIDirectSound8 介面。 它只能在擷取端點裝置上啟動 IDirectSoundCaptureIDirectSoundCapture8 介面。 啟動 啟動 呼叫,以在轉譯裝置上啟動 IDirectSoundIDirectSoundCapture8 介面,或 IDirectSoundCaptureIDirectSoundCapture8 介面失敗,並傳回錯誤碼E_NOINTERFACE。

在 Windows 7 中,用戶端可以呼叫 IMMDevice::ActivateIID_IMFTrustedOutput指定輸出信任授權單位 (OTA) 物件,並擷取物件的 IMFTrustedOutput 介面指標。 OTA 可以在媒體基礎的受保護媒體路徑 (PMP) 內部或外部運作,並在 Media Foundation 管線外部傳送內容。 如果呼叫端位於 PMP 外部,則 OTA 可能無法在 PMP 中運作,且保護設定較不健全。 如需針對音訊和範例程式代碼使用受保護物件的相關信息,請參閱 受保護的使用者模式音訊 (PUMA)

如需受保護物件和 IMFTrustedOutput的一般資訊,請參閱媒體基礎檔中的。

在 Xbox One 開發工具包 (XDK) 標題上使用 ISpatialAudioClient 介面時,請注意 您必須先呼叫 enableSpatialAudio,才能呼叫 IMMDeviceEnumerator::EnumAudioEndpointsIMMDeviceEnumerator::GetDefaultAudioEndpoint。 若無法這麼做,會導致從呼叫 Activate 傳回E_NOINTERFACE錯誤。 EnableSpatialAudio 僅適用於 XDK 標題,不需要針對在 Xbox One 上執行的通用 Windows 平台應用程式呼叫,也不需要針對任何非 Xbox One 裝置呼叫。
 
如需呼叫 Activate 方法的程式代碼範例,請參閱下列主題:

要求

要求 價值
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
支援的最低伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平臺 窗戶
標頭 mmdeviceapi.h

另請參閱

IAudioClient 介面

IAudioEndpointVolume 介面

IAudioMeterInformation 介面

IAudioSessionManager 介面

IDeviceTopology 介面

IMMDevice 介面