Exemple #1
0
            private static Win7ComInterface.IAudioMeterInformation GetAudioMeterInformation()
            {
                Win7ComInterface.IAudioMeterInformation result = null;
                InvokeTryCatch("Win7VolumeOperate.GetAudioMeterInformation", () =>
                {
                    Win7ComInterface.IMMDevice device = Device;
                    if (device == null)
                    {
                        return;
                    }

                    const uint CLSCTX_ALL = 23u;

                    object comMeterInfo;
                    Guid IID_IAudioMeterInformation = typeof(Win7ComInterface.IAudioMeterInformation).GUID;
                    Marshal.ThrowExceptionForHR(device.Activate(ref IID_IAudioMeterInformation, CLSCTX_ALL, IntPtr.Zero, out comMeterInfo));
                    Win7ComInterface.IAudioMeterInformation meterInfo = comMeterInfo as Win7ComInterface.IAudioMeterInformation;

                    if (meterInfo == null)
                    {
                        throw new Exception("初始化 Win7以上操作系统的 音频Com IAudioMeterInformation 组件失败!");
                    }

                    int HardwareSupp;
                    Marshal.ThrowExceptionForHR(meterInfo.QueryHardwareSupport(out HardwareSupp));
                    result = meterInfo;
                });
                return(result);
            }
Exemple #2
0
            private static Win7ComInterface.IAudioEndpointVolume GetAudioEndPointVolume()
            {
                Win7ComInterface.IAudioEndpointVolume result = null;
                InvokeTryCatch("Win7VolumeOperate.GetAudioEndPointVolume", () =>
                {
                    Win7ComInterface.IMMDevice device = Device;
                    if (device == null)
                    {
                        return;
                    }

                    const uint CLSCTX_ALL = 23u;

                    object comEndPointVol;
                    Guid IID_IAudioEndpointVolume = typeof(Win7ComInterface.IAudioEndpointVolume).GUID;
                    Marshal.ThrowExceptionForHR(device.Activate(ref IID_IAudioEndpointVolume, CLSCTX_ALL, IntPtr.Zero, out comEndPointVol));
                    Win7ComInterface.IAudioEndpointVolume endPointVol = comEndPointVol as Win7ComInterface.IAudioEndpointVolume;

                    if (endPointVol == null)
                    {
                        throw new Exception("初始化 Win7以上操作系统的 音频Com IAudioEndpointVolume 组件失败!");
                    }

                    uint HardwareSupp;
                    Marshal.ThrowExceptionForHR(endPointVol.QueryHardwareSupport(out HardwareSupp));

                    result = endPointVol;
                });
                return(result);
            }
Exemple #3
0
            private static Win7ComInterface.IMMDevice GetDefaultAudioEndpoint(int dataFlow, int role)
            {
                Win7ComInterface.IMMDevice result = null;
                InvokeTryCatch("Win7VolumeOperate.GetDefaultAudioEndpoint", () =>
                {
                    Win7ComInterface.IMMDeviceEnumerator _realEnumerator = new Win7ComInterface._MMDeviceEnumerator() as Win7ComInterface.IMMDeviceEnumerator;
                    if (_realEnumerator == null)
                    {
                        throw new Exception("初始化 Win7以上操作系统的 音频Com MMDeviceEnumerator 组件失败!");
                    }

                    Win7ComInterface.IMMDevice device = null;
                    int errorCode = _realEnumerator.GetDefaultAudioEndpoint((int)dataFlow, (int)role, out device);
                    Marshal.ThrowExceptionForHR(errorCode);
                    result = device;
                });
                return(result);
            }