In Posix systems, a filename is a sequence of arbitrary bytes with the exceptions of 0x2F (/) and 0x00. In Windows, a filename is a sequence of arbitrary 16-bit shorts (stored little-endian, like everything on Windows) with the exceptions of 0x002F (/), 0x005C (\), 0x003C (<), 0x003E (>), 0x0022 ("), 0x003A (:), 0x007C (|), 0x3F (?), 0x002A (*), and 0x0000.
Posix filenames must be translated between the implicit character encoding used by the filesystem and whatever the internal Scheme encoding is. This also varies with the framework in use, if any: Glib assumes that all external paths are in UTF-8, whereas KDE assumes that they are in the encoding specified by the process locale. Windows filenames must be translated between UTF-16BE and whatever the internal Scheme encoding is.
In both cases, it's possible to create pathnames that cannot be interpreted as a sequence of Unicode characters. This also means that Lassi's pre-SRFI must have some way of telling the caller whether names are 8-bit or 16-bit.