Вопрос - есть драйвер под NT-системой. Он лежит в каталоге windows\system32\drivers\. Рядом с ним (в том-же каталоге) лежат пару файлов с данными. Как из драйвера можно получить полный путь с файлу с данными ? Я не знаю ни системного диска ни названия системного каталога (может он и не windows). Или единственный выход - передавать путь через реестр, создавая этот ключ при установке драйвера ?
Если файло именно в системном каталоге лежит, тогда просто. Есть две символные ссылки: \SystemRoot \KnownDlls\KnownDllPath Есть ключ в реестре: HKLM\SYSTEM\CurrentControlSet\Control\Windows\SystemDirectory Если файло в любом каталоге, то можно прочитать в DriverEntry свой ключ: HKLM\SYSTEM\CurrentControlSet\Services\xxx\ImagePath Или так: pDriverObject->DriverSection->FullDllName.Buffer Наверное ещё что-то можно придумать.
и как ее получить из ядра ? а куда она указывает ? Т.е. открывая файл вида \SystemRoot\qwe.qwe откроет x:\windows\system32\qwe.qwe ?
Символьная ссылка \SystemRoot кажет на ещё одну символьную ссылку. У меня на такую \Device\Harddisk0\Partition1\WINNT, а та кажет на девайс \Device\Harddisk0\DR0... Мда, это те ничего не даст. А вот символьная ссылка KnownDlls\KnownDllPath содержит путь (опять же у меня) C:\WINNT\system32. Вот через неё можно открыть файло. ЗЫ: Слей с этого сайта WinObjEx
%SystemRoot%\System32\ это уже путь к системному каталогу... Н-р если Винда сидит в каталоге c:\DOS то при обращении к системному каталогу %SystemRoot%\System32\ Винда сама подставит вместо "%SystemRoot%" "c:\DOS" и добавит "\System32\" Попробуй подставить %SystemRoot% в эксплорере или в командной строке набери "start %SystemRoot%\System32\"
вот и я про это - мне из ядра надо. Но похоже knowdllspath самое то что надо. Спасибо и с новым годом всех.