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

  • 相关阅读:
    SAS学习笔记27 卡方检验
    SAS学习笔记26 方差分析
    SAS学习笔记25 t检验(单个样本t检验、配对样本t检验、两个独立样本t检验及方差不齐时的t'检验)
    SAS学习笔记23 线性回归、多元回归
    HTML canvas画布
    HTML 新全局特性
    MYSQL数据库学习(五)如何自定义函数
    什么是单机结构?什么是集群?什么是分布式?
    MYSQL数据库学习(四)如何备份还原数据库
    MYSQL数据库学习(三)关于DML操作
  • 原文地址:https://www.cnblogs.com/achillis/p/10178187.html
Copyright © 2011-2022 走看看