コード例 #1
0
        private object GetPropertyValue(IPropertyStore propertyStore, PROPERTYKEY propertyKey)
        {
            object returnObj = null;
            PROPVARIANT propVariant;
            var result = propertyStore.GetValue(ref propertyKey, out propVariant);
            AssertCoreAudio.IsHResultOk(result);

            var vType = (VarEnum)propVariant.vt;
            if (vType == VarEnum.VT_EMPTY)
                return null;

            switch (vType)
            {
                case VarEnum.VT_BOOL:
                    returnObj = propVariant.Data.AsBoolean;
                    break;
                case VarEnum.VT_UI4:
                    returnObj = propVariant.Data.AsUInt32;
                    break;
                case VarEnum.VT_LPWSTR:
                case VarEnum.VT_CLSID:
                    returnObj = Marshal.PtrToStringUni(propVariant.Data.AsStringPtr);
                    break;
                case VarEnum.VT_BLOB:
                    returnObj = propVariant.Data.AsFormatPtr;
                    break;
            }

            if (propertyKey.fmtid == PropertyKeys.PKEY_AudioEngine_DeviceFormat ||
                propertyKey.fmtid == PropertyKeys.PKEY_AudioEngine_OEMFormat)
            {
                Assert.AreEqual(VarEnum.VT_BLOB, vType, "The device format property was not of varient type VT_BLOB.");
                var format = (WAVEFORMATEX)Marshal.PtrToStructure((IntPtr)returnObj, typeof(WAVEFORMATEX));

                if (format.nChannels != 0 && format.nSamplesPerSec != 0 && format.wBitsPerSample != 0)
                    Assert.AreEqual(format.nChannels * format.nSamplesPerSec * format.wBitsPerSample, format.nAvgBytesPerSec * 8, "The wave format was not valid.");
            }

            return returnObj;
        }
コード例 #2
0
 internal void SetExpected(EDataFlow dataflow, ERole role, string deviceId, int newState, PROPERTYKEY propertyKey)
 {
     _dataFlow = dataflow;
     _role = role;
     _deviceId = deviceId;
     _newState = newState;
     _propertyKey = propertyKey;
 }
コード例 #3
0
 /// <summary>
 /// Verifies the returned property key is valid.
 /// </summary>
 /// <param name="propertyKey">The property key.</param>
 public static void IsPropertyKeyValid(PROPERTYKEY propertyKey)
 {
     Assert.IsNotNull(propertyKey, "The property key is null.");
     Assert.AreNotEqual(Guid.Empty, propertyKey.fmtid, "The property key format ID is not valid.");
     Assert.AreNotEqual(0, propertyKey.pid, "The property key property ID is not valid.");
 }
コード例 #4
0
 public void OnPropertyValueChanged(string deviceId, PROPERTYKEY propertyKey)
 {
     Assert.AreEqual(_deviceId, deviceId);
     Assert.AreEqual(_propertyKey, propertyKey);
 }