On Tue, Jan 21, 2020 at 12:57:45AM +0100, Pali Rohár wrote: > On Monday 20 January 2020 22:46:25 Al Viro wrote: > > On Mon, Jan 20, 2020 at 10:40:46PM +0100, Pali Rohár wrote: > > > > > Ok, I did some research. It took me it longer as I thought as lot of > > > stuff is undocumented and hard to find all relevant information. > > > > > > So... fastfat.sys is using ntos function RtlUpcaseUnicodeString() which > > > takes UTF-16 string and returns upper case UTF-16 string. There is no > > > mapping table in fastfat.sys driver itself. > > > > Er... Surely it's OK to just tabulate that function on 65536 values > > and see how could that be packed into something more compact? > > It is OK, but too complicated. That function is in nt kernel. So you > need to build a new kernel module and also decide where to put output of > that function. It is a long time since I did some nt kernel hacking and > nowadays you need to download 10GB+ of Visual Studio code, then addons > for building kernel modules, figure out how to write and compile simple > kernel module via Visual Studio, write ini install file, try to load it > and then you even fail as recent Windows kernels refuse to load kernel > modules which are not signed... Wait a sec... From NT userland, on a mounted VFAT: for all s in single-codepoint strings open s for append if failed print s on stderr, along with error value write s to the opened file, adding to its tail close the file the for each equivalence class you'll get a single file, with all members of that class written to it. In addition you'll get the list of prohibited codepoints. Why bother with any kind of kernel modules? IDGI...