• 【旧文章搬运】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

  • 相关阅读:
    工具网页地址
    invalid comparison: java.util.ArrayList and java.lang.String——bug解决办法
    打印csdn博客文章内容
    git 更新远程分支列表
    idea 配置 SpringBoot 热启动详解,和热启动失效解决方案
    MacOS下安装RabbitMQ
    Spring Boot Admin
    Navicat Premium Mac 12 破解
    sql查询不重复数据
    org.apache.commons.lang3 jar的使用 ArrayUtils
  • 原文地址:https://www.cnblogs.com/achillis/p/10178187.html
Copyright © 2020-2023  润新知