共用方式為


IAudioEndpointVolume::RegisterControlChangeNotify 方法 (endpointvolume.h)

RegisterControlChangeNotify 方法會註冊用戶端的通知回呼介面。

語法

HRESULT RegisterControlChangeNotify(
  [in] IAudioEndpointVolumeCallback *pNotify
);

參數

[in] pNotify

用戶端註冊通知回呼的 IAudioEndpointVolumeCallback 介面指標。 如果 RegisterControlChangeNotify 方法成功,它會在用戶端的 IAudioEndpointVolumeCallback 介面上呼叫 AddRef 方法。

傳回值

如果方法成功,它會傳回 S_OK。 如果失敗,可能的傳回碼包括,但不限於下表所示的值。

傳回碼 Description
E_POINTER
參數 pNotifyNULL

備註

這個方法會在端點的磁碟區層級或靜音狀態變更時,註冊系統所要呼叫的 IAudioEndpointVolumeCallback 介面。 呼叫端會實作 IAudioEndpointVolumeCallback 介面。

不再需要通知時,用戶端可以呼叫 IAudioEndpointVolume::UnregisterControlChangeNotify 方法來終止通知。

在客戶端釋放 IAudioEndpointVolumeCallback 介面的最終參考之前,它應該呼叫 UnregisterControlChangeNotify 來取消註冊介面。 否則,應用程式會洩漏 IAudioEndpointVolumeCallbackIAudioEndpointVolume 物件所持有的資源。 請注意, RegisterControlChangeNotify 會呼叫用戶端的 IAudioEndpointVolumeCallback::AddRef 方法,而 UnregisterControlChangeNotify 會呼叫 IAudioEndpointVolumeCallback::Release 方法。 如果用戶端在呼叫 UnregisterControlChangeNotify 之前釋放其 IAudioEndpointVolumeCallback 介面的參考,則 IAudioEndpointVolume 對象永遠不會釋放對 IAudioEndpointVolumeCallback 介面的參考。 例如,設計不佳的 IAudioEndpointVolumeCallback 實作可能會從 IAudioEndpointVolumeCallback 對象的解構函式呼叫 UnregisterControlChangeNotify。 在此情況下,用戶端不會呼叫 UnregisterControlChangeNotify ,直到 IAudioEndpointVolume 物件釋放其 IAudioEndpointVolumeCallback 介面的參考,而 IAudioEndpointVolume 物件將不會釋放其對 IAudioEndpointVolumeCallback 介面的參考,直到用戶端呼叫 UnregisterControlChangeNotify 為止。 如需 AddRefRelease 方法的詳細資訊,請參閱 Windows SDK 檔中的 IUnknown 介面討論。

此外,客戶端應該先呼叫 UnregisterControlChangeNotify ,再釋放 IAudioEndpointVolume 對象的最終參考。 否則,物件會洩漏其配置來保存註冊資訊的記憶體。 註冊通知介面之後,只要 IAudioEndpointVolume 物件存在,用戶端才會繼續接收通知。

如需呼叫 RegisterControlChangeNotify 的程式碼範例,請參閱 端點磁碟區控件

規格需求

需求
最低支援的用戶端 Windows Vista [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器 Windows Server 2008 [傳統型應用程式 |UWP 應用程式]
目標平台 Windows
標頭 endpointvolume.h

另請參閱

IAudioEndpointVolume 介面

IAudioEndpointVolume::UnregisterControlChangeNotify

IAudioEndpointVolumeCallback 介面