Eventually I guess that the non-core DLL:s never should call any non Windows functions at all and the core DLL:s are not really useful to compile and run under Windows anyway.
Well I have only played with the shell32.dll and in any file in there except "shelllink.c" removing "unistd.h" entirely had no negative effect whatsoever. This means to me that it is not needed at all. The use of fork(), execvp(), and waitpid() in "shelllink.c" however seems to require the "unistd.h" header.
I'm not sure if shell32 should be considered a core DLL. It seems to me rather not.
shell32 is not really a core DLL eventhough it is a borderline case since some functionallity might want to intergrate with the desktop.
However, it definitly should compile under Windows at least with limited functionallity.
The desired operation could be possibly achieved with the use of Windows kernel functions as well.
Possibly, but it looks a little Wine specific to me. I'm not 100% sure what the code does.
Anyway, we could always choose to exclude that code on Windows. It would be useful to run test on the rest of the functionallity in any case.