_KINTERRUPT DDK

Тема в разделе "WASM.ZEN", создана пользователем grspectre, 3 апр 2006.

  1. grspectre

    grspectre New Member

    Публикаций:
    0
    Регистрация:
    3 апр 2006
    Сообщения:
    4
    Адрес:
    Russia
    При вызове IoConnectInterrupt первым параметром идет указатель на переменную типа PKINTERRUPT которая всою очередь описана как typedef struct _KINTERRUPT *PKINTERRUPT в файле WDM.h. Подскажите что представляет из себя _KINTERRUPT?

    Помогите кто может. перелопатил все заголовочные файлы DDK, ничего не нашел!!!

    sf_phantom2@mail.ru
     
  2. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Код (Text):
    1. struct _KINTERRUPT {
    2.  
    3.   // static data ------------------------------------
    4.  
    5.   // non-static data --------------------------------
    6.   /*<thisrel this+0x0>*/ /*|0x2|*/ short Type;
    7.   /*<thisrel this+0x2>*/ /*|0x2|*/ short Size;
    8.   /*<thisrel this+0x4>*/ /*|0x8|*/ struct _LIST_ENTRY InterruptListEntry;
    9.   /*<thisrel this+0xc>*/ /*|0x4|*/ unsigned char  (ServiceRoutine*)(struct _KINTERRUPT*, void*);
    10.   /*<thisrel this+0x10>*/ /*|0x4|*/ void* ServiceContext;
    11.   /*<thisrel this+0x14>*/ /*|0x4|*/ unsigned long SpinLock;
    12.   /*<thisrel this+0x18>*/ /*|0x4|*/ unsigned long TickCount;
    13.   /*<thisrel this+0x1c>*/ /*|0x4|*/ unsigned long* ActualLock;
    14.   /*<thisrel this+0x20>*/ /*|0x4|*/ void  (DispatchAddress*)();
    15.   /*<thisrel this+0x24>*/ /*|0x4|*/ unsigned long Vector;
    16.   /*<thisrel this+0x28>*/ /*|0x1|*/ unsigned char Irql;
    17.   /*<thisrel this+0x29>*/ /*|0x1|*/ unsigned char SynchronizeIrql;
    18.   /*<thisrel this+0x2a>*/ /*|0x1|*/ unsigned char FloatingSave;
    19.   /*<thisrel this+0x2b>*/ /*|0x1|*/ unsigned char Connected;
    20.   /*<thisrel this+0x2c>*/ /*|0x1|*/ char Number;
    21.   /*<thisrel this+0x2d>*/ /*|0x1|*/ unsigned char ShareVector;
    22.   /*<thisrel this+0x30>*/ /*|0x4|*/ enum _KINTERRUPT_MODE Mode;
    23.   /*<thisrel this+0x34>*/ /*|0x4|*/ unsigned long ServiceCount;
    24.   /*<thisrel this+0x38>*/ /*|0x4|*/ unsigned long DispatchCount;
    25.   /*<thisrel this+0x3c>*/ /*|0x1a8|*/ unsigned long DispatchCode[106];
    26. };
     
  3. grspectre

    grspectre New Member

    Публикаций:
    0
    Регистрация:
    3 апр 2006
    Сообщения:
    4
    Адрес:
    Russia
    Огромное спасибо, и еще один вопрос

    откуда и каким образом добыта эта информация?

    Просто надоедает быть слепым котенком.
     
  4. grspectre

    grspectre New Member

    Публикаций:
    0
    Регистрация:
    3 апр 2006
    Сообщения:
    4
    Адрес:
    Russia
    Мда..... Так и помру в неведении....
     
  5. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    pdbdump рулит :)
     
  6. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    volodya

    //offtop

    Идет ли работа над 3й часть упаковщиков?



    полдня искал pdbdump нет чтоб поискать в инструментах здесь же! :))
     
  7. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Ms Rem

    Если я напишу ее на си так:
    Код (Text):
    1. struct _KINTERRUPT
    2. {
    3.     WORD    Type;
    4.     WORD    Size;
    5.     struct  _LIST_ENTRY InterruptListEntry;
    6.     UCHAR   (ServiceRoutine*)(struct _KINTERRUPT*, void*);
    7.     void*   ServiceContext;
    8.     DWORD   SpinLock;
    9.     DWORD   TickCount;
    10.     DWORD*  ActualLock;
    11.     void    (DispatchAddress*)();
    12.     DWORD   Vector;
    13.     UCHAR   Irql;
    14.     UCHAR   SynchronizeIrql;
    15.     UCHAR   FloatingSave;
    16.     UCHAR   Connected;
    17.     char    Number;
    18.     UCHAR   ShareVector;
    19.     enum    _KINTERRUPT_MODE Mode;
    20.     DWORD   ServiceCount;
    21.     DWORD   DispatchCount;
    22.     DWORD   DispatchCode[106];
    23. };
    24. // <size 0x1e4>


    и за юзаю в 1.cpp:
    Код (Text):
    1. #include <windows.h>
    2. #include "ntoskrnl.h"
    3.  
    4. int main()
    5. {
    6.     return 0;
    7. }


    Почему то жутко марится компилятор!



    Наверняка чтото упускаю, но что?