zoukankan      html  css  js  c++  java
  • 【旧文章搬运】Windows内核常见数据结构(基本类型)

    原文发表于百度空间,2008-7-23

    ==========================================================================

    学内核从基本数据结构开始吧,就像学C语言时从学习int,char开始一样.
    只列出目前见到和用到的,其它后面再补充~


    常用数据结构:

    数字:
    lkd> dt _ULARGE_INTEGER
    ntdll!_ULARGE_INTEGER
       +0x000 LowPart          : Uint4B
       +0x004 HighPart         : Uint4B
       +0x000 u                : __unnamed
       +0x000 QuadPart         : Uint8B

    lkd> dt _LARGE_INTEGER
    ntdll!_LARGE_INTEGER
       +0x000 LowPart          : Uint4B
       +0x004 HighPart         : Int4B
       +0x000 u                : __unnamed
       +0x000 QuadPart         : Int8B

    字符串:
    lkd> dt _STRING
    nt!_STRING
       +0x000 Length           : Uint2B
       +0x002 MaximumLength    : Uint2B
       +0x004 Buffer           : Ptr32 Char

    lkd> dt _UNICODE_STRING
    ntdll!_UNICODE_STRING
       +0x000 Length           : Uint2B
       +0x002 MaximumLength    : Uint2B
       +0x004 Buffer           : Ptr32 Uint2B

    单链表头(看来数据结构要学好啊)::
    lkd> dt _SLIST_HEADER
    ntdll!_SLIST_HEADER
       +0x000 Alignment        : Uint8B
       +0x000 Next             : _SINGLE_LIST_ENTRY
       +0x004 Depth            : Uint2B
       +0x006 Sequence         : Uint2B

    链表结点:
    lkd> dt _KNODE
    ntdll!_KNODE
       +0x000 ProcessorMask    : Uint4B
       +0x004 Color            : Uint4B
       +0x008 MmShiftedColor   : Uint4B
       +0x00c FreeCount        : [2] Uint4B
       +0x018 DeadStackList    : _SLIST_HEADER          //链表头
       +0x020 PfnDereferenceSListHead : _SLIST_HEADER
       +0x028 PfnDeferredList : Ptr32 _SINGLE_LIST_ENTRY
       +0x02c Seed             : UChar
       +0x02d Flags            : _flags

    单链表的指针:
    lkd> dt _SINGLE_LIST_ENTRY
    ntdll!_SINGLE_LIST_ENTRY
       +0x000 Next             : Ptr32 _SINGLE_LIST_ENTRY

    双向链表指针:
    lkd> dt _LIST_ENTRY
    ntdll!_LIST_ENTRY
       +0x000 Flink            : Ptr32 _LIST_ENTRY
       +0x004 Blink            : Ptr32 _LIST_ENTRY

    内核队列:
    lkd> dt _KQUEUE
    ntdll!_KQUEUE
       +0x000 Header           : _DISPATCHER_HEADER
       +0x010 EntryListHead    : _LIST_ENTRY
       +0x018 CurrentCount     : Uint4B
       +0x01c MaximumCount     : Uint4B
       +0x020 ThreadListHead   : _LIST_ENTRY

    一个很多地方用到的头部结构:
    lkd> dt _DISPATCHER_HEADER
    ntdll!_DISPATCHER_HEADER
       +0x000 Type             : UChar
       +0x001 Absolute         : UChar
       +0x002 Size             : UChar
       +0x003 Inserted         : UChar
       +0x004 SignalState      : Int4B
       +0x008 WaitListHead     : _LIST_ENTRY

  • 相关阅读:
    Android:TabHost导航栏
    java:StringUtil工具类
    Android进阶篇MediaPlayer
    Android:图片滚轮
    Android:EditText焦点触发布局隐藏以及显示
    Android:Spinner的使用
    ASP.NET编程模型的理解
    ASP.NET页面事件(页面生命周期)
    根据用户喜欢的爱好选择不同风格CSS(ViewState)
    ASP.NET的页面指令
  • 原文地址:https://www.cnblogs.com/achillis/p/10178187.html
Copyright © 2011-2022 走看看