Установка драйвера из 32-ух битного приложения

Тема в разделе "WASM.X64", создана пользователем vasalvit, 23 янв 2009.

  1. vasalvit

    vasalvit New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2008
    Сообщения:
    53
    Здравствуйте.

    Есть промежуточный NDIS драйвер. Отдельные файлы для x86 и x64. Есть INF файлы для этого драйвера (минипорт и протокол). Устанавливается драйвер через INetCfg (как в BindView из DDK).

    Если устанавливать на 32-ух битной машине - установка проходит успешно.
    Если устанавливать на 64-ёх битной машине из 64-ёх битного приложение - тоже всё Ok.
    Если же устанавливать на 64-ёх битной машине из 32-ух битного приложения, то драйвер не устанавливается. Из логов я понял, что система выбирает драйвер для 32-ух битной системы.

    Как заставить систему выбрать 64-ёх битные версии драйвера?
     
  2. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    32 - битное приложение не имеет доступа к ..\System32, а перенаправляется в ..\SysWoW64. Очевидно, туда и копируется драйвер.
    Попробовать отключить file redirection, но не уверен, что поможет, так как остается еще registry redirection...

    Update
    registry redirection ни при чем. Отключение file redirection должно помочь.
     
  3. vasalvit

    vasalvit New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2008
    Сообщения:
    53
    Не помогло :dntknw: Система всё равно выбирает версию для x86.

    Решил написать отдельный проект для установки/удаления. Этот проект будет зашит как ресурсы в API-шную DLL. При установке/удалении DLL-ка будет извлекать нужную версию и устанавливать драйвер.
     
  4. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Что-то неправильно делаешь. Мне помогло.
    Как отключал file redirection ?
     
  5. vasalvit

    vasalvit New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2008
    Сообщения:
    53
    Отключал через Wow64DisableWow64FsRedirection. Возвращал назад через Wow64RevertWow64FsRedirection.

    Отключал до начала установки (до SetupCopyOEMInf и получения/работы с INetCfg). Возвращал назад уже после всего.
     
  6. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    У тебя все происходит в одном потоке?
    Обрати внимание, что отключение действует только в текущем потоке, а не глобально.
     
  7. vasalvit

    vasalvit New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2008
    Сообщения:
    53
    У меня точно в одном потоке, даже в одной функции. А за то, что творится внутри INetCfg ручаться не могу. Может и создаёт всяких потоков - не знаю.