/// <summary> /// Gets the current position in bytes from the wave input device. /// it calls directly into waveInGetPosition) /// </summary> /// <returns>Position in bytes</returns> public long GetPosition() { MmTime mmTime = new MmTime(); mmTime.wType = MmTime.TIME_BYTES; // request results in bytes, TODO: perhaps make this a little more flexible and support the other types? MmException.Try(WaveInterop.waveInGetPosition(waveInHandle, out mmTime, Marshal.SizeOf(mmTime)), "waveInGetPosition"); if (mmTime.wType != MmTime.TIME_BYTES) { throw new Exception(string.Format("waveInGetPosition: wType -> Expected {0}, Received {1}", MmTime.TIME_BYTES, mmTime.wType)); } return(mmTime.cb); }