BASS uses WASAPI itself by default, so you probably don't really need the BASSWASAPI add-on for this. You would record from device1's "loopback" and play the captured data on device2. It could look something like this:
BASS_Init(outdevice, 44100, 0, 0, 0); // initialize output device
BASS_RecordInit(indevice); // initialize input "loopback" device
inchan = BASS_RecordStart(0, 0, BASS_SAMPLE_FLOAT, 0, 0); // start recording in native format
BASS_CHANNELINFO info;
BASS_ChannelGetInfo(inchan, &info); // get the format
outchan = BASS_StreamCreate(info.freq, info.chans, BASS_SAMPLE_FLOAT, StreamProc, 0); // create stream with same format
BASS_ChannelSetAttribute(outchan, BASS_ATTRIB_BUFFER, 0); // disable playback buffering for lower latency
BASS_ChannelStart(outchan); // start it
...
DWORD CALLBACK StreamProc(HSTREAM handle, void *buffer, DWORD length, void *user)
{
return BASS_ChannelGetData(inchan, buffer, length); // fetch data from the recording
}
You can use BASS_GetDeviceInfo and BASS_RecordGetDeviceInfo to enumerate the available devices and get the "outdevice" and "indevice" values. Note that loopback devices have the BASS_DEVICE_LOOPBACK flag set. Please see the documentation for details on the mentioned functions.