Windows 2000内核KPEB/KTEB详细结构(http://webcrazy.yeah.net/)

Windows 驱动:获取当前进程名  这是一个比较简单的问题,在 REGON 的源码中可以找到实现的相关代码,我只是把它们整理封装了一下。//// Process name max length: by bytes// (This value is 16 bytes in RegMon) //#define MAX_PROC_NAME_LEN 256//// This is the offset into a KPEB of t 阅读详情

Windows 2000内核KPEB/KTEB详细结构
            WebCrazy(http://webcrazy.yeah.net/)

    EPROCESS与ETHREAD结构在Windows NT/2000内核的地位是不言而喻的。他们结构中的成员包含了内核的方方面面,是两个比较大的结构。在Windows 2000 Server Build 2195 Free Kernel中他们的大小分别达到648与584字节。在先前我提供的部分应用都大量引用了这两个结构。具体可以参考“网站导航”。应部分网友的要求,这儿我将他们的详细结构列于底下。

    结构来源:
    Microsoft Windbg的extension kdex2x86.dll
    这个Kernel Debugger Extensions包含的结构不仅仅有EPROCESS/ETHREAD,还有EJOB等很多内部数据结构。所列的格式并非C语言格式,只是提供了结构成员的偏移量与成员名及成员类型。详细资料请参阅Microsoft提供的Windows NT/2000 OEM Support Tools Documention。

    关于Windbg的使用请翻阅Microsft相关文档。

    > !listexts
    Default extension: D:/Program Files/Debuggers/bin/w2kfre/kdex2x86
    kdex2x86 loaded       D:/Program Files/Debuggers/bin/w2kfre/kdex2x86 
   
    > !kdex2x86.version
    Free Extension dll for build 2195 debugging Free kernel for build 2195
   
    > !kdex2x86.strct EPROCESS
    struct   _EPROCESS (sizeof=648)
    +000 struct   _KPROCESS Pcb
    +000    struct   _DISPATCHER_HEADER Header
    +000       byte     Type
    +001       byte     Absolute
    +002       byte     Size
    +003       byte     Inserted
    +004       int32    SignalState
    +008       struct   _LIST_ENTRY WaitListHead
    +008          struct   _LIST_ENTRY *Flink
    +00c          struct   _LIST_ENTRY *Blink
    +010    struct   _LIST_ENTRY ProfileListHead
    +010       struct   _LIST_ENTRY *Flink
    +014       struct   _LIST_ENTRY *Blink
    +018    uint32   DirectoryTableBase[2]
    +020    struct   _KGDTENTRY LdtDescriptor
    +020       uint16   LimitLow
    +022       uint16   BaseLow
    +024       union    __unnamed9 HighWord
    +024          struct   __unnamed10 Bytes
    +024             byte     BaseMid
    +025             byte     Flags1
    +026             byte     Flags2
    +027             byte     BaseHi
    +024          struct   __unnamed11 Bits
    +024             bits0-7 BaseMid
    +024             bits8-12 Type
    +024             bits13-14 Dpl
    +024             bits15-15 Pres
    +024             bits16-19 LimitHi
    +024             bits20-20 Sys
    +024             bits21-21 Reserved_0
    +024             bits22-22 Default_Big
    +024             bits23-23 Granularity
    +024             bits24-31 BaseHi
    +028    struct   _KIDTENTRY Int21Descriptor
    +028       uint16   Offset
    +02a       uint16   Selector
    +02c       uint16   Access
    +02e       uint16   ExtendedOffset
    +030    uint16   IopmOffset
    +032    byte     Iopl
    +033    byte     VdmFlag
    +034    uint32   ActiveProcessors
    +038    uint32   KernelTime
    +03c    uint32   UserTime
    +040    struct   _LIST_ENTRY ReadyListHead
    +040       struct   _LIST_ENTRY *Flink
    +044       struct   _LIST_ENTRY *Blink
    +048    struct   _LIST_ENTRY SwapListEntry
    +048       struct   _LIST_ENTRY *Flink
    +04c       struct   _LIST_ENTRY *Blink
    +050    struct   _LIST_ENTRY ThreadListHead
    +050       struct   _LIST_ENTRY *Flink
    +054       struct   _LIST_ENTRY *Blink
    +058    uint32   ProcessLock
    +05c    uint32   Affinity
    +060    uint16   StackCount
    +062    char     BasePriority
    +063    char     ThreadQuantum
    +064    byte     AutoAlignment
    +065    byte     State
    +066    byte     ThreadSeed
    +067    byte     DisableBoost
    +068    byte     PowerState
    +069    byte     DisableQuantum
    +06a    byte     Spare[2]
    +06c int32    ExitStatus
    +070 struct   _KEVENT LockEvent
    +070    struct   _DISPATCHER_HEADER Header
    +070       byte     Type
    +071       byte     Absolute
    +072       byte     Size
    +073       byte     Inserted
    +074       int32    SignalState
    +078       struct   _LIST_ENTRY WaitListHead
    +078          struct   _LIST_ENTRY *Flink
    +07c          struct   _LIST_ENTRY *Blink
    +080 uint32   LockCount
    +088 union    _LARGE_INTEGER CreateTime
    +088    uint32   LowPart
    +08c    int32    HighPart
    +088    struct   __unnamed3 u
    +088       uint32   LowPart
    +08c       int32    HighPart
    +088    int64    QuadPart
    +090 union    _LARGE_INTEGER ExitTime
    +090    uint32   LowPart
    +094    int32    HighPart
    +090    struct   __unnamed3 u
    +090       uint32   LowPart
    +094       int32    HighPart
    +090    int64    QuadPart
    +098 struct   _KTHREAD *LockOwner
    +09c void     *UniqueProcessId
    +0a0 struct   _LIST_ENTRY ActiveProcessLinks
    +0a0    struct   _LIST_ENTRY *Flink
    +0a4    struct   _LIST_ENTRY *Blink
    +0a8 uint32   QuotaPeakPoolUsage[2]
    +0b0 uint32   QuotaPoolUsage[2]
    +0b8 uint32   PagefileUsage
    +0bc uint32   CommitCharge
    +0c0 uint32   PeakPagefileUsage
    +0c4 uint32   PeakVirtualSize
    +0c8 uint32   VirtualSize
    +0d0 struct   _MMSUPPORT Vm
    +0d0    union    _LARGE_INTEGER LastTrimTime
    +0d0       uint32   LowPart
    +0d4       int32    HighPart
    +0d0       struct   __unnamed3 u
    +0d0          uint32   LowPart
    +0d4          int32    HighPart
    +0d0       int64    QuadPart
    +0d8    uint32   LastTrimFaultCount
    +0dc    uint32   PageFaultCount
    +0e0    uint32   PeakWorkingSetSize
    +0e4    uint32   WorkingSetSize
    +0e8    uint32   MinimumWorkingSetSize
    +0ec    uint32   MaximumWorkingSetSize
    +0f0     *VmWorkingSetList
    +0f4    struct   _LIST_ENTRY WorkingSetExpansionLinks
    +0f4       struct   _LIST_ENTRY *Flink
    +0f8       struct   _LIST_ENTRY *Blink
    +0fc    byte     AllowWorkingSetAdjustment
    +0fd    byte     AddressSpaceBeingDeleted
    +0fe    byte     ForegroundSwitchCount
    +0ff    byte     MemoryPriority
    +100    union    __unnamed13 u
    +100       uint32   LongFlags
    +100       struct   _MMSUPPORT_FLAGS Flags
    +100          bits0-0 SessionSpace
    +100          bits1-1 BeingTrimmed
    +100          bits2-2 ProcessInSession
    +100          bits3-3 SessionLeader
    +100          bits4-4 TrimHard
    +100          bits5-5 WorkingSetHard
    +100          bits6-6 WriteWatch
    +100          bits7-31 Filler
    +104    uint32   Claim
    +108    uint32   NextEstimationSlot
    +10c    uint32   NextAgingSlot
    +110    uint32   EstimatedAvailable
    +114    uint32   GrowthSinceLastEstimate
    +118 struct   _LIST_ENTRY SessionProcessLinks
    +118    struct   _LIST_ENTRY *Flink
    +11c    struct   _LIST_ENTRY *Blink
    +120 void     *DebugPort
    +124 void     *ExceptionPort
    +128 struct   _HANDLE_TABLE *ObjectTable
    +12c void     *Token
    +130 struct   _FAST_MUTEX WorkingSetLock
    +130    int32    Count
    +134    struct   _KTHREAD *Owner
    +138    uint32   Contention
    +13c    struct   _KEVENT Event
    +13c       struct   _DISPATCHER_HEADER Header
    +13c          byte     Type
    +13d          byte     Absolute
    +13e          byte     Size
    +13f          byte     Inserted
    +140          int32    SignalState
    +144          struct   _LIST_ENTRY WaitListHead
    +144             struct   _LIST_ENTRY *Flink
    +148             struct   _LIST_ENTRY *Blink
    +14c    uint32   OldIrql
    +150 uint32   WorkingSetPage
    +154 byte     ProcessOutswapEnabled
    +155 byte     ProcessOutswapped
    +156 byte     AddressSpaceInitialized
    +157 byte     AddressSpaceDeleted
    +158 struct   _FAST_MUTEX AddressCreationLock
    +158    int32    Count
    +15c    struct   _KTHREAD *Owner
    +160    uint32   Contention
    +164    struct   _KEVENT Event
    +164       struct   _DISPATCHER_HEADER Header
    +164          byte     Type
    +165          byte     Absolute
    +166          byte     Size
    +167          byte     Inserted
    +168          int32    SignalState
    +16c          struct   _LIST_ENTRY WaitListHead
    +16c             struct   _LIST_ENTRY *Flink
    +170             struct   _LIST_ENTRY *Blink
    +174    uint32   OldIrql
    +178 uint32   HyperSpaceLock
    +17c struct   _ETHREAD *ForkInProgress
    +180 uint16   VmOperation
    +182 byte     ForkWasSuccessful
    +183 byte     MmAgressiveWsTrimMask
    +184 struct   _KEVENT *VmOperationEvent
    +188 void     *PaeTop
    +18c uint32   LastFaultCount
    +190 uint32   ModifiedPageCount
    +194 void     *VadRoot
    +198 void     *VadHint
    +19c void     *CloneRoot
    +1a0 uint32   NumberOfPrivatePages
    +1a4 uint32   NumberOfLockedPages
    +1a8 uint16   NextPageColor
    +1aa byte     ExitProcessCalled
    +1ab byte     CreateProcessReported
    +1ac void     *SectionHandle
    +1b0 struct   _PEB *Peb
    +1b4 void     *SectionBaseAddress
    +1b8 struct   _EPROCESS_QUOTA_BLOCK *QuotaBlock
    +1bc int32    LastThreadExitStatus
    +1c0 struct   _PAGEFAULT_HISTORY *WorkingSetWatch
    +1c4 void     *Win32WindowStation
    +1c8 void     *InheritedFromUniqueProcessId
    +1cc uint32   GrantedAccess
    +1d0 uint32   DefaultHardErrorProcessing
    +1d4 void     *LdtInformation
    +1d8 void     *VadFreeHint
    +1dc void     *VdmObjects
    +1e0 void     *DeviceMap
    +1e4 uint32   SessionId
    +1e8 struct   _LIST_ENTRY PhysicalVadList
    +1e8    struct   _LIST_ENTRY *Flink
    +1ec    struct   _LIST_ENTRY *Blink
    +1f0 struct   _HARDWARE_PTE_X86 PageDirectoryPte
    +1f0    bits0-0 Valid
    +1f0    bits1-1 Write
    +1f0    bits2-2 Owner
    +1f0    bits3-3 WriteThrough
    +1f0    bits4-4 CacheDisable
    +1f0    bits5-5 Accessed
    +1f0    bits6-6 Dirty
    +1f0    bits7-7 LargePage
    +1f0    bits8-8 Global
    +1f0    bits9-9 CopyOnWrite
    +1f0    bits10-10 Prototype
    +1f0    bits11-11 reserved
    +1f0    bits12-31 PageFrameNumber
    +1f0 uint64   Filler
    +1f8 uint32   PaePageDirectoryPage
    +1fc byte     ImageFileName[16]
    +20c uint32   VmTrimFaultValue
    +210 byte     SetTimerResolution
    +211 byte     PriorityClass
    +212 byte     SubSystemMinorVersion
    +213 byte     SubSystemMajorVersion
    +212 uint16   SubSystemVersion
    +214 void     *Win32Process
    +218 struct   _EJOB *Job
    +21c uint32   JobStatus
    +220 struct   _LIST_ENTRY JobLinks
    +220    struct   _LIST_ENTRY *Flink
    +224    struct   _LIST_ENTRY *Blink
    +228 void     *LockedPagesList
    +22c void     *SecurityPort
    +230 struct   _WOW64_PROCESS *Wow64Process
    +238 union    _LARGE_INTEGER ReadOperationCount
    +238    uint32   LowPart
    +23c    int32    HighPart
    +238    struct   __unnamed3 u
    +238       uint32   LowPart
    +23c       int32    HighPart
    +238    int64    QuadPart
    +240 union    _LARGE_INTEGER WriteOperationCount
    +240    uint32   LowPart
    +244    int32    HighPart
    +240    struct   __unnamed3 u
    +240       uint32   LowPart
    +244       int32    HighPart
    +240    int64    QuadPart
    +248 union    _LARGE_INTEGER OtherOperationCount
    +248    uint32   LowPart
    +24c    int32    HighPart
    +248    struct   __unnamed3 u
    +248       uint32   LowPart
    +24c       int32    HighPart
    +248    int64    QuadPart
    +250 union    _LARGE_INTEGER ReadTransferCount
    +250    uint32   LowPart
    +254    int32    HighPart
    +250    struct   __unnamed3 u
    +250       uint32   LowPart
    +254       int32    HighPart
    +250    int64    QuadPart
    +258 union    _LARGE_INTEGER WriteTransferCount
    +258    uint32   LowPart
    +25c    int32    HighPart
    +258    struct   __unnamed3 u
    +258       uint32   LowPart
    +25c       int32    HighPart
    +258    int64    QuadPart
    +260 union    _LARGE_INTEGER OtherTransferCount
    +260    uint32   LowPart
    +264    int32    HighPart
    +260    struct   __unnamed3 u
    +260       uint32   LowPart
    +264       int32    HighPart
    +260    int64    QuadPart
    +268 uint32   CommitChargeLimit
    +26c uint32   CommitChargePeak
    +270 struct   _LIST_ENTRY ThreadListHead
    +270    struct   _LIST_ENTRY *Flink
    +274    struct   _LIST_ENTRY *Blink
    +278 struct   _RTL_BITMAP *VadPhysicalPagesBitMap
    +27c uint32   VadPhysicalPages
    +280 uint32   AweLock
   
    > !kdex2x86.strct ETHREAD
    struct   _ETHREAD (sizeof=584)
    +000 struct   _KTHREAD Tcb
    +000    struct   _DISPATCHER_HEADER Header
    +000       byte     Type
    +001       byte     Absolute
    +002       byte     Size
    +003       byte     Inserted
    +004       int32    SignalState
    +008       struct   _LIST_ENTRY WaitListHead
    +008          struct   _LIST_ENTRY *Flink
    +00c          struct   _LIST_ENTRY *Blink
    +010    struct   _LIST_ENTRY MutantListHead
    +010       struct   _LIST_ENTRY *Flink
    +014       struct   _LIST_ENTRY *Blink
    +018    void     *InitialStack
    +01c    void     *StackLimit
    +020    void     *Teb
    +024    void     *TlsArray
    +028    void     *KernelStack
    +02c    byte     DebugActive
    +02d    byte     State
    +02e    byte     Alerted[2]
    +030    byte     Iopl
    +031    byte     NpxState
    +032    char     Saturation
    +033    char     Priority
    +034    struct   _KAPC_STATE ApcState
    +034       struct   _LIST_ENTRY ApcListHead[2]
                  struct   _LIST_ENTRY *Flink
                  struct   _LIST_ENTRY *Blink
    +044       struct   _KPROCESS *Process
    +048       byte     KernelApcInProgress
    +049       byte     KernelApcPending
    +04a       byte     UserApcPending
    +04c    uint32   ContextSwitches
    +050    int32    WaitStatus
    +054    byte     WaitIrql
    +055    char     WaitMode
    +056    byte     WaitNext
    +057    byte     WaitReason
    +058    struct   _KWAIT_BLOCK *WaitBlockList
    +05c    struct   _LIST_ENTRY WaitListEntry
    +05c       struct   _LIST_ENTRY *Flink
    +060       struct   _LIST_ENTRY *Blink
    +064    uint32   WaitTime
    +068    char     BasePriority
    +069    byte     DecrementCount
    +06a    char     PriorityDecrement
    +06b    char     Quantum
    +06c    struct   _KWAIT_BLOCK WaitBlock[4]
               struct   _LIST_ENTRY WaitListEntry
                  struct   _LIST_ENTRY *Flink
                  struct   _LIST_ENTRY *Blink
               struct   _KTHREAD *Thread
               void     *Object
               struct   _KWAIT_BLOCK *NextWaitBlock
               uint16   WaitKey
               uint16   WaitType
    +0cc    void     *LegoData
    +0d0    uint32   KernelApcDisable
    +0d4    uint32   UserAffinity
    +0d8    byte     SystemAffinityActive
    +0d9    byte     PowerState
    +0da    byte     NpxIrql
    +0db    byte     Pad[1]
    +0dc    void     *ServiceTable
    +0e0    struct   _KQUEUE *Queue
    +0e4    uint32   ApcQueueLock
    +0e8    struct   _KTIMER Timer
    +0e8       struct   _DISPATCHER_HEADER Header
    +0e8          byte     Type
    +0e9          byte     Absolute
    +0ea          byte     Size
    +0eb          byte     Inserted
    +0ec          int32    SignalState
    +0f0          struct   _LIST_ENTRY WaitListHead
    +0f0             struct   _LIST_ENTRY *Flink
    +0f4             struct   _LIST_ENTRY *Blink
    +0f8       union    _ULARGE_INTEGER DueTime
    +0f8          uint32   LowPart
    +0fc          uint32   HighPart
    +0f8          struct   __unnamed12 u
    +0f8             uint32   LowPart
    +0fc             uint32   HighPart
    +0f8          uint64   QuadPart
    +100       struct   _LIST_ENTRY TimerListEntry
    +100          struct   _LIST_ENTRY *Flink
    +104          struct   _LIST_ENTRY *Blink
    +108       struct   _KDPC *Dpc
    +10c       int32    Period
    +110    struct   _LIST_ENTRY QueueListEntry
    +110       struct   _LIST_ENTRY *Flink
    +114       struct   _LIST_ENTRY *Blink
    +118    uint32   Affinity
    +11c    byte     Preempted
    +11d    byte     ProcessReadyQueue
    +11e    byte     KernelStackResident
    +11f    byte     NextProcessor
    +120    void     *CallbackStack
    +124    void     *Win32Thread
    +128    struct   _KTRAP_FRAME *TrapFrame
    +12c    struct   _KAPC_STATE *ApcStatePointer[2]
    +134    char     PreviousMode
    +135    byte     EnableStackSwap
    +136    byte     LargeStack
    +137    byte     ResourceIndex
    +138    uint32   KernelTime
    +13c    uint32   UserTime
    +140    struct   _KAPC_STATE SavedApcState
    +140       struct   _LIST_ENTRY ApcListHead[2]
                  struct   _LIST_ENTRY *Flink
                  struct   _LIST_ENTRY *Blink
    +150       struct   _KPROCESS *Process
    +154       byte     KernelApcInProgress
    +155       byte     KernelApcPending
    +156       byte     UserApcPending
    +158    byte     Alertable
    +159    byte     ApcStateIndex
    +15a    byte     ApcQueueable
    +15b    byte     AutoAlignment
    +15c    void     *StackBase
    +160    struct   _KAPC SuspendApc
    +160       int16    Type
    +162       int16    Size
    +164       uint32   Spare0
    +168       struct   _KTHREAD *Thread
    +16c       struct   _LIST_ENTRY ApcListEntry
    +16c          struct   _LIST_ENTRY *Flink
    +170          struct   _LIST_ENTRY *Blink
    +174       function *KernelRoutine
    +178       function *RundownRoutine
    +17c       function *NormalRoutine
    +180       void     *NormalContext
    +184       void     *SystemArgument1
    +188       void     *SystemArgument2
    +18c       char     ApcStateIndex
    +18d       char     ApcMode
    +18e       byte     Inserted
    +190    struct   _KSEMAPHORE SuspendSemaphore
    +190       struct   _DISPATCHER_HEADER Header
    +190          byte     Type
    +191          byte     Absolute
    +192          byte     Size
    +193          byte     Inserted
    +194          int32    SignalState
    +198          struct   _LIST_ENTRY WaitListHead
    +198             struct   _LIST_ENTRY *Flink
    +19c             struct   _LIST_ENTRY *Blink
    +1a0       int32    Limit
    +1a4    struct   _LIST_ENTRY ThreadListEntry
    +1a4       struct   _LIST_ENTRY *Flink
    +1a8       struct   _LIST_ENTRY *Blink
    +1ac    char     FreezeCount
    +1ad    char     SuspendCount
    +1ae    byte     IdealProcessor
    +1af    byte     DisableBoost
    +1b0 union    _LARGE_INTEGER CreateTime
    +1b0    uint32   LowPart
    +1b4    int32    HighPart
    +1b0    struct   __unnamed3 u
    +1b0       uint32   LowPart
    +1b4       int32    HighPart
    +1b0    int64    QuadPart
    +1b0 bits0-1 NestedFaultCount
    +1b0 bits2-2 ApcNeeded
    +1b8 union    _LARGE_INTEGER ExitTime
    +1b8    uint32   LowPart
    +1bc    int32    HighPart
    +1b8    struct   __unnamed3 u
    +1b8       uint32   LowPart
    +1bc       int32    HighPart
    +1b8    int64    QuadPart
    +1b8 struct   _LIST_ENTRY LpcReplyChain
    +1b8    struct   _LIST_ENTRY *Flink
    +1bc    struct   _LIST_ENTRY *Blink
    +1c0 int32    ExitStatus
    +1c0 void     *OfsChain
    +1c4 struct   _LIST_ENTRY PostBlockList
    +1c4    struct   _LIST_ENTRY *Flink
    +1c8    struct   _LIST_ENTRY *Blink
    +1cc struct   _LIST_ENTRY TerminationPortList
    +1cc    struct   _LIST_ENTRY *Flink
    +1d0    struct   _LIST_ENTRY *Blink
    +1d4 uint32   ActiveTimerListLock
    +1d8 struct   _LIST_ENTRY ActiveTimerListHead
    +1d8    struct   _LIST_ENTRY *Flink
    +1dc    struct   _LIST_ENTRY *Blink
    +1e0 struct   _CLIENT_ID Cid
    +1e0    void     *UniqueProcess
    +1e4    void     *UniqueThread
    +1e8 struct   _KSEMAPHORE LpcReplySemaphore
    +1e8    struct   _DISPATCHER_HEADER Header
    +1e8       byte     Type
    +1e9       byte     Absolute
    +1ea       byte     Size
    +1eb       byte     Inserted
    +1ec       int32    SignalState
    +1f0       struct   _LIST_ENTRY WaitListHead
    +1f0          struct   _LIST_ENTRY *Flink
    +1f4          struct   _LIST_ENTRY *Blink
    +1f8    int32    Limit
    +1fc void     *LpcReplyMessage
    +200 uint32   LpcReplyMessageId
    +204 uint32   PerformanceCountLow
    +208 struct   _PS_IMPERSONATION_INFORMATION *ImpersonationInfo
    +20c struct   _LIST_ENTRY IrpList
    +20c    struct   _LIST_ENTRY *Flink
    +210    struct   _LIST_ENTRY *Blink
    +214 uint32   TopLevelIrp
    +218 struct   _DEVICE_OBJECT *DeviceToVerify
    +21c uint32   ReadClusterSize
    +220 byte     ForwardClusterOnly
    +221 byte     DisablePageFaultClustering
    +222 byte     DeadThread
    +223 byte     HideFromDebugger
    +224 uint32   HasTerminated
    +228 uint32   GrantedAccess
    +22c struct   _EPROCESS *ThreadsProcess
    +230 void     *StartAddress
    +234 void     *Win32StartAddress
    +234 uint32   LpcReceivedMessageId
    +238 byte     LpcExitThreadCalled
    +239 byte     HardErrorsAreDisabled
    +23a byte     LpcReceivedMsgIdValid
    +23b byte     ActiveImpersonationInfo
    +23c int32    PerformanceCountHigh
    +240 struct   _LIST_ENTRY ThreadListEntry
    +240    struct   _LIST_ENTRY *Flink
    +244    struct   _LIST_ENTRY *Blink

 

教程:使用树莓派连接Pixhawk飞控 教程:使用树莓派连接Pixhawk飞控树莓派可以与Pixhawk飞控相连,读取飞控中的状态信息,同时对飞控发送指令。树莓派作为一个更高性能的计算平台,可以运行图像识别、机器学习、实时路径规划等程序,为开源无人机带来了无限可能。本文将介绍如何在树莓派上使用APSync。不需要了解Linux,即可将树莓派连接到Pixhawk飞控。使用的器材为: Pixhawk飞控 树莓派3B(Raspberry Pi 阅读详情

相关推荐

【强化学习】常用算法之一 “A3C”

A3C(Asynchronous Advantage Actor-Critic)算法是一种在强化学习领域中应用广泛的算法,它结合了策略梯度方法和价值函数的学习,用于近似解决马尔可夫决策过程(Markov Decision Process)问题。A3C算法在近年来备受关注,因为它在处理大规模连续动作空间和高维状态空间方面具有出色的性能。A3C算法是一种基于策略梯度的强化学习算法,通过多个并行的智能体异步地与环境交互,并利用Actor和Critic网络实现策略和价值的近似,从而实现快速而稳定的强化学习训练。

Code_and516的博客 6756

浅析Windows NT/2000环境切换(http://webcrazy.yeah.net)

浅析Windows NT/2000环境切换                  WebCrazy(tsu00@263.net)                       注:本文最初见于www.nsfocus.com    本文假设您已经了解Windows NT/2000系统体系,对Windows NT/2000内部KPEB/KTEB等数据结构与内核工作方式已有一定的概念,对80x86保护模式,I

FreeXploiT 2139

PADS VX2.7学习记录06-PADS Router软件功能操作

PADS VX2.7学习记录06-PADS Router软件功能操作

qq_31444421的博客 7860

NT主要内核结构 windows 2000

虽然时常看到有新手询问各OS版本_EPROCESS _ETHREAD之类的结构.但本文的目的却绝对不是告诉你这些结构到底是怎样的.也不会介绍如何获得.实在是太白痴的问题.自己随便百度下”VM Windbg 双机调试”之类,然后Kd>dt nt!_*就好.       实际是为了速查跟备忘,自己常遇到为了查一个偏移需要装一个系统的郁闷事件.Baidu不到也google不到的. W

P.Kwok 635

服务器报错:“Unhealthy status reported by this UEFI driver without specific error message”.. 记录解决过程

服务器开机报错:Unhealthy status reported by this UEFI driver without specific...

ayychiguoguo的博客 4398

解锁SPWM电压利用率:三次谐波注入幅值的黄金分割点

本文深入探讨了SPWM电压利用率的提升方法,重点介绍了三次谐波注入技术及其黄金分割点(1/6比例)。通过数学推导和工程实践,揭示了如何通过特定幅值的三次谐波注入将电压利用率从86.6%提升至115%,与SVPWM相当。文章还提供了实验室调试流程和DSP实现代码,帮助工程师优化逆变器设计。

weixin_30729609的博客 915

PEB结构块解析

peb结构块解析: 项目需要获取程序运行的一些状态,目前只能获取寄存器信息,故采用fs寄存器获取peb信息,本文主要探索peb中可以获得的进程信息。 windbg信息如下:win xp 下,和win7不一样,下面为xp环境dt nt!_peb +0x000 InheritedAddressSpace : UChar +0x001 ReadImageFileExecOptions :

liutianheng654的博客 1万+

Linux - xarray 工具类

第三层节点直接与绿色的值绑定,若需要像数组一样通过下标访问绿色的值对象那么需要给每一个节点进行编码,这样通过根节点即可访问到具体的对象。对于未使用到的小数组不申请空间,这样只需设计一种方法将这些非连续的小数组在一个数据结构中组织在一起即可,对于这个数组结构需要具有结构紧凑并且能够快速定位到对应的小数组段上,这时候树形结构上场了。一个很大的数组必然可以由一个个小数组拼接而成,若定义一个最小粒度的数组长度,比如长度4,那么从宏观上看一个大数组就由一个个长度为4的小数组排队而成。

ymf604的专栏 1085

KPROCESS IDT PEB Ldr 《寒江独钓》内核学习笔记(3)

继续上一篇(2)未完成的研究,我们接下来学习 KPROCESS这个数据结构。   1. 相关阅读材料 《深入理解计算机系统(原书第2版)》     二. KPROCESS KPROCESS,也叫内核进程块。我们在开始学习它的数据机构之前,首先要思考的一个问题是,它和EPROCESS名字感觉差不多,那它们之间是什么关系呢?它们在内核区域中都位于那一层呢? 我们先来看一张图: w...

weixin_34116110的博客 340

【寄存器模型】一、一个简单的寄存器模型

在描述寄存器模型之前,首先来了解一下实际寄存器的组成结构:如下图所示的DUT内部真实的寄存器寄存器中最小的一个单位是域(field),域是由一个或多个bit拼接而成的。一个或多个域就构成了一个寄存器(reg)。一个或多个寄存器就构成了一个块(block)。将DUT中的寄存器抽象出来,建立寄存器模型,如下图所示:uvm library已经定义好了field、reg、block等相关的概念,构建寄存器模型时,只需要继承这些类即可。:构建寄存器模型中的域段。uvm_reg。...

carrotbanana的博客 5368

1、语义数据建模:避免陷阱与突破困境

本文探讨了语义数据建模的兴起背景、核心概念、生命周期及常见挑战。从数据丰富型组织和AI开发者的需求出发,分析了语义建模的关键元素和质量维度,并深入讨论了建模过程中可能出现的陷阱与解决方案。文章还针对语义模型的演化、治理和战略组织问题提供了突破思路,旨在帮助数据从业者更好地理解和应用语义建模技术,以提升数据驱动应用的有效性。

c8d9e0f1的博客 119

Windows 2000内核模式驱动程序设计

文章来源:重庆邮电学院学报设备驱动程序是直接同硬件打交道的软件模块。在Windows 2000中,微软公司在Windows NT4.0的驱动程序结构基础上,同时引入了Windows9X的即插即入特性,推出了新的驱动程序结构模式(WDM)。WDM通过提供一种灵活的方式来简化驱动程序的开发,在实现对新硬件支持的基础上减少并降低所必须开发的驱动程序的数量和复杂性。在Windows 2000中的驱动程序可

欲穷千里目,更上一层楼 2525

Android日志实战——车机日志获取(十五)

这个项目中的 Log 管理系统,其实只是将系统原生 Log 进行输出并导出,并没有太复杂的操作。还有一种 Log 管理系统需要对 Android 原生 Log 系统进行重写,例如我们使用 Log.d(tag, msg) 打印 Log,需要我们根据 tag 信息将不同模块的 Log 数据写入不同的本地文件下,这样可以方便不同模块查看自己的 Log,追踪异常问题。

小旭的专栏 3777

再谈Windows NT/2000内部数据结构(http://webcrazy.yeah.net)

再谈Windows NT/2000内部数据结构               WebCrazy(tsu00@263.net)                        注:本文最初见于www.nsfocus.com     现在我们结合Regmon(http://www.sysinternals.com/)在NT中的实现方法再来谈谈Windows NT/2000内部数据结构。    Regmon

FreeXploiT 1432

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

剖析Windows NT/2000内核对象组织(http://webcrazy.yeah.net)

剖析Windows NT/2000内核对象组织                     WebCrazy(http://webcrazy.yeah.net/)    对象管理器在Windows NT/2000内核中占了极其重要的位置,其一个最主要职能是组织管理系统内核对象。在Windows NT/2000中,内核对象管理器大量引入了C++面向对象的思想,即所有内核对象都封装在对象管理器内部,除对象

FreeXploiT 1671

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

各系统 EPROCESS 结构

2000操作系统 nt!_EPROCESS    +0x000 Pcb              : _KPROCESS    +0x06c ExitStatus       : 259    +0x070 LockEvent        : _KEVENT    +0x080 LockCount        : 1    +0x088 CreateTime       : _LA

trents的专栏 5004

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Windows内核研究总结

Windows 的体系结构 分析环境reactos0.3.1 ,i386体系] 了解了windows的体系结构才知道reactos到底要干什么,以及如何干,因为reactos的目标是兼容windows。 下面是windows的体系结构: 这是整个windows的体系结构的总览。从图上可以看出系统被分成内核模式和用户模式。 内核模式的构成文件是系

bcbobo21cn的专栏 1万+

Windows内核之系统架构

一.架构概述 下图显示了Windows的基本结构。Windows采用双模式来保护操作系统本身,以避免被应用程序的错误所波及。操作系统核心运行在内核模式下,应用程序的代码运行在用户模式下。每当应用程序需要用到系统内核或内核的扩展模块(内核驱动程序)所提供的服务时,应用程序通过硬件指令从用户模式切换到内核模式中;当系统内核完成了所请求的服务以后,控制权又回到了用户模式代码。 在Windows中,用户代码和内核代码有各自的运行环境,而且它们可以访问的内存空间也不相同。在32位系统中,内核代码可以访问当前进

全粘工程师 4879

进程peb结构、获得peb的方法

PEB :进程环境块TEB.ProcessEnvironmentBlock成员就是PEB的结构体地址TEB结构体位于FS段选择符所指的段内存的起始地址处,且ProcessEnvironmentBlock成员位于距TEB结构体Offset 30的位置即有两种方法获得PEB的地址 peb的结构申明: typedef struct _UNICODE_STR { U...

aijuzhou1959的博客 688

装载修改过的WINDOWS系统内核程序(WIN2000)

您是否想修改WIN2000系统内核文件呢?(如:NTOSKRNL.EXE或HAL.DLL)如果您修改了NTOSKRNL.EXE后,再复制到SYSTEM32目录下,WIN2000系统就会恢复您所覆盖的系统内核文件。最简单的解决方法就是用引导盘引导后再复制。但是这样就行了吗?没有。因为在重新启动以后,选择Windows 2000 高级选项菜单里面的带命令行提示的安全模式会显示以下内容:因以下文件的

wintc的专栏 2685

Windows 2000 SP4 内核调试初窥

今天又试了两个 Windows 版本。首先尝试的是虚拟机上安装的 Windows 2000 RTM,也是用 WinDbg 连接到它的 COM2 口的命名管道上进行调试(在 Virtual PC 上指定 COM2 为 \\.\pipe\nt5com2,并在 WinDbg 中连接它)。发现系统已经比昨天调试  NT 4 的情况要好了——系统已经能正常运行了(我猜测是 NT 4 也许要用它那个老版本的

Robbie Mosaic's T-Log 1454

【数据结构-5】单链表的实现

单链表,具体来说是单向的、不带头的、不循环的链表。链表由一个一个节点组成,每个节点分为数据域和指针域,数据域存放数据,指针域存放下一节点的地址。这样,就可以根据指针域中的地址找到下一个节点,节点就串起来了构成了单链表。

weixin_44218929的博客 176

C# 数据结构和特殊类型

.NET Core(现称.NET)提供丰富数据结构,优化性能与开发效率。日常开发首选List<T>和Dictionary<TKey,TValue>;高性能场景推荐Span<T>与Memory<T>减少内存分配;并发环境使用ConcurrentDictionary等线程安全集合;避免非泛型集合如ArrayList。

cccloveforever的博客 672

工厂设备接MES为什么慢:协议识别与点表配置自动化的技术拆解

工业现场设备接 MES 的周期主要消耗在协议识别与点表配置。本文拆解这条链路的四层结构,给出点表映射的数据模型、两种部署架构的对比,以及可直接落地的三项验收口径与校验代码。适合工控集成、MES 实施、设备联网方向的工程师。

emfuture的博客 375

list

的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。,因此反向迭代器的实现可以借助正向迭代器,即:反向迭代器内部可以包含一个正向迭代器,对正向迭代器的接口进行包装即可。是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。迭代到该位置,在这段位置上迭代需要线性的时间开销;最大的缺陷是不支持任意位置的随机访问,比如:要访问。还需要一些额外的空间,以保存每个节点的相关联信息。个元素,必须从已知的位置。

xie0510_的博客 271

向 excel、word、pdf 三种文档中占位符插入数据

【代码】向 excel、word、pdf 三种文档中占位符插入数据。

weixin_45934659的博客 52
上一篇: 解析Windows NT/2000窗口对象的组织(http://webcrazy.yeah.net/)
下一篇: 探寻Windows NT/2000 Copy On Write机制(http://wecrazy.yeah.net)
freexploit
博客等级 码龄22年 315粉丝 778原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值