I can't find any documentation for ADFS-E and F formats as used by RISC OS - all my googling seems to bring up are details of the 8-bit ADFS implementation from the BBC micro.
Apparently the modern linux kernel has an ADFS kernel module which can read E and F format discs (certainly floppy discs - I believe hard discs are formatted the same). This may be as good a starting point as any.
Abstracting away the disc interface would certainly be a good idea, since RISC OS's ADFS implementation doesn't understand partitions, so can only use the first partition on a disc. If the interface presented a certain parition as being a full disc to RISC OS, the RISC OS partition could be put anywhere.