В моем kernelbase.dll есть функция GetFileInformationByHandle(), но
нет функции GetFileInformationByHandleEx(). Да и что это за
кросс-платформенность такая, если она жестко лимитирует, какие
функции у меня должны быть? Если это так, то это не
кросс-платформенность, а надстройка над конкретной версией Windows.
Теперь понятно, отчего всё это COM-файлы - просто откомпилировали
программу в каждой из трех операционных систем, засунули все три
бинарника в один файл, а на входе поставили переключатель между ними.