If something went wrong in the device enumeration loop in FindAudioDevice, all the devices after that would be skipped because CHECK_HR jumped out of the loop. In my case the Kinect audio device would never be found.
KCBSensor::GetAudioBuffer was ignoring the amount of bytes requested and instead passing the sizeof this value as the amount of bytes to read. This resulted in the same number of bytes (4) being read all the time.
I found 2 issues with the audio system: