KmdKit for XP

Тема в разделе "WASM.NT.KERNEL", создана пользователем Aspire, 26 июн 2008.

  1. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Столкнулся с проблемой, что некоторые .inc и .lib файлы из KmdKit не работают на ХР.
    Может, есть у кого эти файлы?
    Если нет, то мне нужно знать из каких includ-файлов состоит библиотека ntoskrnl.lib.
    Спасибо.
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Aspire
    Cтранно почему это они не могут работать на XP? Формат .inc и .lib от версии ОS не зависит.

    Это о чём?
     
  3. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Booster
    Это я о том, что библиотечный файл собирается из объектников, которые в свою очередь собираются из инклуд-файлов.
    Если знать инклуд-файлы, то можно эту библиотеку пересобрать.
    ))
     
  4. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    впервые слышу
     
  5. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Aspire
    Хочешь сказать обратное? К тому же .inc и .lib и не должны работать, работает компилятор и линковщик. Если не собирается, значит проблема в другом. Нужна правильная связка inc и .lib.

    Great
    Имея объявы можно сделать тонкую либу. Но если она уже есть, то зачем?
     
  6. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    так и есть, вроде это делается с помошью lib.exe из MASM
     
  7. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Great
    Есть такая утилита "lib.exe" в стандартном пакете masm32 с помощью которой и можно собирать библиотеки.
    Каким образом была собрана библиотека ntoskrnl.lib в KmdKit, я не знаю, но там есть одна функция, где задано ошибочное число параметров.
    Эта ф-ция из Вашего примера, который Вы мне давали, MmMapIoSpace принимает 3 параметра, в загаловочных файлах KmdKit она описана с 4-мя. Именно в этом проблема.
     
  8. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Aspire
    Ну тогда возьми либу из DDK, а заголовочный файл исправь.
     
  9. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Booster
    Спасибо за наводку! Вроде как - вариант. Главное, чтобы все остальное там было правильно...
     
  10. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Я брал либу с DDK 2000, extern функи прописывал вручную, и на XP всё работало.
     
  11. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    PHYSICAL_ADDRESS 64битный
     
  13. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    ntoskrnl.lib была собрана корпорацией microsoft и без изменений покладена в KmdKit :) MmMapIoSpace определена правильно.

    Код (Text):
    1. invoke MmMapIoSpace, PHYSICAL_ADDRESS.LowPart, PHYSICAL_ADDRESS.HighPart, NumberOfBytes, CacheType
     
  14. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Great, Four-F Я понял вас, спасибо.
     
  15. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Aspire
    Про не работу файлов в XP отжёг. Они в другой работали? -)
     
  16. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Booster
    Да блин )) Я про заголовочные, вообще-то, имел ввиду. Разные структуры в w2k и xp. Соответственно, то драйвер, который собран с инклудами для в2к не будет работать на хр. А не то, что ты подумал.
     
  17. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Aspire
    Это называется проблемой совместимости. Юзай только то, что одинаково во всех версиях.
     
  18. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Будет. И в Vista, 2003/2008 Server тоже будет. Тут работает принцип обратной совместимости. А вот драйвер собранный с инклудами/либами от xp может не работать в w2k. Подчеркиваю, может, но не значит что не будет. Поясню на конкретном примере. Есть функция IoGetLowerDeviceObject. Её добавили в ядро в XP. Если её использовать и собрать драйвер инклудами/либами от xp, то в w2k этот драйвер не будет загружен, т.к. загрузчик не найдет IoGetLowerDeviceObject в ntoskrnl.exe. Если же накатить "Update Rollup for Windows 2000 SP4", то заработает. Разница между инклудами для разных систем микроскопическая, нужно просто её сечь и понимать что к чему.
     
  19. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    В структурах EPROCESS для ХР и 2к, например, разница совсем не микроскопическая. И драйвер для ХР не будет работать для 2к и наоборот, как ни крути.
    Про "сечь и понимать" - это уже в процессе отладки.
     
  20. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    А причём тут EPROCESS и инклуды? EPROCESS это недокументированная внутренния структура а в инклудах определены лишь API ядра которые работают с этой структурой