Может кто подскажет - допустим program files лежит на диске С:. С "точки зрения" ядра это соответствует \Device\HarddiskVolume1\Program Files. A как в общем случае получить путь к Program Files в драйвере? Ведь система может быть установленна, скажем, на диске D:, или папка Program Files может иметь другое имя. Точно такая же проблема с "Documents and Settings"
Да, а ещё может быть так, что Program Files присутствует не только на диске С: или D:, а скажем на всех логических дисках. Разные программы установлены в разных Program Files на разных дисках. В чём собственно заключается задача? Documents and Settings можно вытянуть из реестра, например из ключей HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders или HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList, ProfilesDirectory
На самом деле более точно, проблема следующая: есть путь в dos формате (например c:\hello\world.txt), как преобразовать его в "драйверный" формат типа \Device\HarddiskVolume1\hello\world.txt. В принципе обратная операция тоже интересна: как из "драйверного" формата преобразовать в dos? P.S. Нарыл RtlDosPathNameToNtPathName, но это не совсем то, что нужно. Она преобразует из dos в что то типа: \??\С:\hello\world.txt
Для ХР и выше NTSTATUS IoQueryFileDosDeviceName(IN PFILE_OBJECT FileObject, OUT POBJECT_NAME_INFORMATION *ObjectNameInformation);