There are 2 ways to record
It is not a recording as normal - i do not want to save the data. And my program could theoretically run nearly infinite - as long as the user has the computer running.
Yes, but you are still using the recording functions

BASS doesn't save the recorded data by default. When wanted, you would need to do that yourself (eg. in a RECORDPROC callback) or use the BASSenc add-on.
with BASS: with or without a RECORDPROC callback function provided in the BASS_RecordStart call. If you do provide a RECORDPROC then BASS will push the data to you via that. If you don't provide a RECORDPROC then you can pull the data from BASS via BASS_ChannelGetData. The data is the same in both cases, it's just delivered in a different way. You can also call BASS_ChannelGetData when using a RECORDPROC but note it doesn't remove the returned data from the recording buffer in that case, so it might return some data more than once and other data not at all, depending on the timing of the calls.
So, do i understand it correctly: Using a RECORDPROC before BAS_ChannelGetData removes returned data from the recording buffer? (sorry, i'm a bit "fighting" with the online-help because my english language not being native).
When you don't use a RECORDPROC callback, BASS_ChannelGetData will deliver every captured byte exactly once (assuming no buffer overflows). It achieves that by removing the delivered data from the recording buffer, so that it can't be delivered again. BASS_ChannelGetData won't do that when you do use a RECORDPROC callback because the data is delivered via the RECORDPROC, ie. the RECORDPROC (not BASS_ChannelGetData) receives every captured byte exactly once then.
Basically, you need to decide whether you want to pull data from BASS (without RECORDPROC) or have BASS push data to you (with RECORDPROC).