Pcmreadcallback is called only once

Hello
Why is Pcmreadcallback called only once, after calling FMODsystem.createSound, and not for every data from the microphone?

FMOD.CREATESOUNDEXINFO exinfo = new FMOD.CREATESOUNDEXINFO();            
            exinfo.cbsize = Marshal.SizeOf(exinfo);
            exinfo.numchannels = 2; // nativeChannels;
            exinfo.format = FMOD.SOUND_FORMAT.PCM16;
            exinfo.defaultfrequency = 44100; // nativeRate;
            exinfo.pcmreadcallback += Pcmreadcallback;
            exinfo.length = (uint)(exinfo.defaultfrequency * sizeof(short) * exinfo.numchannels);

            byte[] data = null;
            res = FMODsystem.createSound(data, FMOD.MODE.LOOP_NORMAL | FMOD.MODE.OPENUSER,
                ref exinfo, out sound);
            if (res != RESULT.OK) return false;

            FMODsystem.update();

            res = FMODsystem.recordStart(id, sound, true);
            if (res != RESULT.OK) return false;

            res = FMODsystem.playSound(sound, null, false, out channel);

System::createSound will request everything in one big chunk, the size of CREATESOUNDEXINFO::length. If you want continual reading, use System::createStream instead.