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; }
internal void SetExpected(EDataFlow dataflow, ERole role, string deviceId, int newState, PROPERTYKEY propertyKey) { _dataFlow = dataflow; _role = role; _deviceId = deviceId; _newState = newState; _propertyKey = propertyKey; }
/// <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."); }
public void OnPropertyValueChanged(string deviceId, PROPERTYKEY propertyKey) { Assert.AreEqual(_deviceId, deviceId); Assert.AreEqual(_propertyKey, propertyKey); }