Путь до файла сервиса

Тема в разделе "WASM.WIN32", создана пользователем SlyBit, 27 янв 2009.

  1. SlyBit

    SlyBit New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2008
    Сообщения:
    43
    Привет всем.

    Мне необходимо знать путь до файла сервиса. Я его получаю с помощью функции QueryServiceConfig(). Пути, полученные данным способом, имеют следующий вид:

    system32\DRIVERS\cdrom.sys
    \??\C:\WINDOWS\system32\Drivers\DgiVecp.sys
    \SystemRoot\system32\DRIVERS\disk.sys
    \??\C:\WINDOWS\system32\drivers\EIO.sys
    \SystemRoot\system32\DRIVERS\fltMgr.sys
    \SystemRoot\system32\DRIVERS\ftdisk.sys
    \??\C:\WINDOWS\system32\Drivers\hcmon.sys

    Проблема в том, что их не понимает функция CreateFile(). Есть ли возможность преобразования формата путей или может быть есть альтернативные способы получения пути (кроме парсинга ветви реестра)?
     
  2. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
    system32\DRIVERS\cdrom.sys - путь относительно системной директории. Получить ее можно через GetEnvironmentVariable( "SystemRoot", & Buffer, ... ).
    \SystemRoot\system32\DRIVERS\ftdisk.sys - полный путь с переменной окружения. Можешь ее убрать, тогда смотри выше.
    \??\C:\Windows\system32\Drivers\hcmon.sys - такой путь можно открыть преобразовав его в \\?\C:\Windows\system32\Drivers\hcmon.sys. Использовать Unicode версию CreateFile. Правда неуверен, насколько это корректно. К тому же, можешь просто убрать префикс \??\. Это еще проще.
     
  3. SlyBit

    SlyBit New Member

    Публикаций:
    0
    Регистрация:
    4 июл 2008
    Сообщения:
    43
    <deleted>

    Так и сделаю. Спасибо.
     
  4. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    такие пути используются в r0
     
  5. mrcrown

    mrcrown Member

    Публикаций:
    0
    Регистрация:
    18 янв 2008
    Сообщения:
    227
    А в чем, собсно проблему удалить первых пару символов в пути (\??\)?
    Или доюавить...