Hi Mark,
I've only ever used multiple physical drives in the demo projects, but FatFs lets you mount multiple drives. Your diskio.c implementation provides the interface to the underlying media. If you open a source file one one drive, and a destination on another, FatFs routes the requests appropriately. Here's the official FatFs example for copying from one drive to another:
int main (void)
{
FATFS fs0, fs1;
FIL fsrc, fdst;
BYTE buffer[4096];
FRESULT fr;
UINT br, bw;
f_mount(&fs0, "0:", 0);
f_mount(&fs1, "1:", 0);
fr = f_open(&fsrc, "1:file.bin", FA_READ);
if (fr) return (int)fr;
fr = f_open(&fdst, "0:file.bin", FA_WRITE | FA_CREATE_ALWAYS);
if (fr) return (int)fr;
for (;;) {
fr = f_read(&fsrc, buffer, sizeof buffer, &br);
if (fr || br == 0) break;
fr = f_write(&fdst, buffer, br, &bw);
if (fr || bw < br) break;
}
f_close(&fsrc);
f_close(&fdst);
f_mount(0, "0:", 0);
f_mount(0, "1:", 0);
return (int)fr;
}