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

Discussion in 'WASM.WIN32' started by SlyBit, Jan 27, 2009.

  1. SlyBit

    SlyBit New Member

    Blog Posts:
    0
    Joined:
    Jul 4, 2008
    Messages:
    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 Виталий

    Blog Posts:
    0
    Joined:
    Apr 12, 2008
    Messages:
    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

    Blog Posts:
    0
    Joined:
    Jul 4, 2008
    Messages:
    43
    <deleted>

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

    2FED New Member

    Blog Posts:
    0
    Joined:
    Feb 20, 2008
    Messages:
    1,002
    такие пути используются в r0
     
  5. mrcrown

    mrcrown Member

    Blog Posts:
    0
    Joined:
    Jan 18, 2008
    Messages:
    227
    А в чем, собсно проблему удалить первых пару символов в пути (\??\)?
    Или доюавить...