Код функции AddDevice не выполняется

Тема в разделе "WASM.NT.KERNEL", создана пользователем SysProger, 23 окт 2008.

  1. SysProger

    SysProger New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    127
    При любой попытке хоть что-то поставить в тело функции вся система рухнет в синий экран. Кто-нибудь с этим сталкивался?
     
  2. ams007

    ams007 New Member

    Публикаций:
    0
    Регистрация:
    28 апр 2007
    Сообщения:
    86
    MSDN bug check 00x7e
    ппц
    скорее всего банально вместо ULONG PULONG и в том же духе.
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    SYSTEM_THREAD_EXCEPTION_NOT_HANDLED
    Годал на адресе исключения, звёзды сказали что у тебя не XPSP2, не XPSP3, не Vista, не Win2k8.
     
  4. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    SysProger
    Ну AddDevice обычная CALLBACK-функция, которую вызывает PNP Manager при обнаружении PDO нового устройства. Если вы в AddDevice сбрасываете флаг DO_DEVICE_INITIALIZING после вызова IoAttachDeviceToDeviceStack, то в стек устройств уже могут проходить IRP-пакеты и диспетчерские функции могут зафейлить. А так, давайте код драйвера, так в слепую ничего не скажешь.

    Clerk
    Почему? В этой области не может быть драйверов?
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Osen
    Знаком адрес 0x804D7000 ?
    Моё любимое число, так это адрес загрузки ядра, исключение в ядре происходит, либо бсод врёт.
    А в тех 4-х ядрах это указатель не на начало инструкции, значит либо ядро другое либо адрес неверный.
     
  6. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    Clerk
    О, спасибо, что просвятил. Ну тогда может быть из-за AddDevice произошел переход на этот адрес, а т.к. это середина инструкции, то будет исключение. Тогда можно предположить, что в той же AddDevice или DispatchXxx используется вызов функции с неправильной конвенцией вызова, что приводит после RET переход по левому адресу.
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Незачем годать, аварийный дамп в студию.
     
  8. Osen

    Osen Рие

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    283
    Адрес:
    Париж
    Clerk
    Лучше сурец, в дампе тоже гадание =)
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    В дампе как раз с таким багчеком обычно четко видно причину ошибки. Но лучше и дамп и сорец.+)
     
  10. x0man

    x0man New Member

    Публикаций:
    0
    Регистрация:
    23 мар 2008
    Сообщения:
    358
    Это... а вы тут о чем вообще? :)
     
  11. SysProger

    SysProger New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    127
    Проблему с неправильным запуском AddDevice я уже решил.
    Тут вот созрела другая проблема:
    я пишу драйвер класса "Sample" для несуществующего устройства. Проблема в том, что функция IoAttachDeviceToDeviceStack в AddDevice не работает из-за pdo. Этот pdo должен быть как-то определён в классе Sample?
    Также из-за pdo не пашет IoRegisterDeviceInterface. Эта функция тоже использует pdo. Символическую ссылку она создаёт, но обратиться по ней к устройству невозможно.
     
  12. SysProger

    SysProger New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    127
    Скажите ещё, где можно найти расшифровку кодов функции KeBugCheckEx.
     
  13. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    SysProger
    в DDK bugcodes.h