内核驱动主要数据结构收藏

Windows内核--驱动程序和内核(1.6) 内核态驱动程序一般是和内核共同属于内核空间,驱动程序有能力访问内核大部分数据结构。内核根据需要,调用驱动程序执行相应的IO操作,如果驱动程序有异常,可以认为内核不稳定。一般情况下发生故障处理,典型的就是崩溃(dump)并重启, Windows的典型行为是蓝屏。 阅读详情
IRP
是I/O request
packet的缩写,即I/O请求包。驱动与驱动之间通过IRP进行通信。而使用驱动的应用层调用的
CreatFile,ReadFile,WriteFile,DeviceIoControl等函数,说到底也是使用IRP和驱动进行通信。
一个
IRP由两部分组成。首先是头部或者叫包的固定部分,是一个IRP结构。紧跟在这个头部之后的是I/O stack locations
,这是一个IO_STACK_LOCATION结构的数组,这个数组中元素的个数是根据情况而定的,由IoAllocateIrp( IN CCHAR
StackSize , IN BOOLEAN ChargeQuota )
时的参数StackSize决定。而StackSize通常由IRP发往的目标DEVICE_OBJECT的 +30 char
StackSize决定。而这个StackSize是由设备对象连入所在的设备栈时,根据在设备栈中位置决定的。我们先看看IRP结构和
IO_STACK_LOCATION结构的定义。
IRP结构定义如下

struct _IRP (sizeof=112)

+00 int16 Type

+02 uint16 Size

+04 struct _MDL *MdlAddress

+08 uint32 Flags

+0c union __unnamed14 AssociatedIrp

+0c struct _IRP *MasterIrp

+0c int32 IrpCount

+0c void *SystemBuffer

+10 struct _LIST_ENTRY ThreadListEntry

+10 struct _LIST_ENTRY *Flink

+14 struct _LIST_ENTRY *Blink

+18 struct _IO_STATUS_BLOCK IoStatus

+18 int32 Status

+18 void *Pointer

+1c uint32 Information

+20 char RequestorMode

+21 byte PendingReturned

+22 char StackCount

+23 char CurrentLocation

+24 byte Cancel

+25 byte CancelIrql

+26 char ApcEnvironment

+27 byte AllocationFlags

+28 struct _IO_STATUS_BLOCK *UserIosb

+2c struct _KEVENT *UserEvent

+30 union __unnamed15 Overlay

+30 struct __unnamed16 AsynchronousParameters

+30 function *UserApcRoutine

+34 void *UserApcContext

+30 union _LARGE_INTEGER AllocationSize

+30 uint32 LowPart

+34 int32 HighPart

+30 struct __unnamed3 u

+30 uint32 LowPart

+34 int32 HighPart

+30 int64 QuadPart

+38 function *CancelRoutine

+3c void *UserBuffer

+40 union __unnamed17 Tail

+40 struct __unnamed18 Overlay

+40 struct _KDEVICE_QUEUE_ENTRY DeviceQueueEntry

+40 struct _LIST_ENTRY DeviceListEntry

+40 struct _LIST_ENTRY *Flink

+44 struct _LIST_ENTRY *Blink

+48 uint32 SortKey

+4c byte Inserted

+40 void *DriverContext[4]

+50 struct _ETHREAD *Thread

+54 char *AuxiliaryBuffer

+58 struct _LIST_ENTRY ListEntry

+58 struct _LIST_ENTRY *Flink

+5c struct _LIST_ENTRY *Blink

+60 struct _IO_STACK_LOCATION *CurrentStackLocation

+60 uint32 PacketType

+64 struct _FILE_OBJECT *OriginalFileObject

+40 struct _KAPC Apc

+40 int16 Type

+42 int16 Size

+44 uint32 Spare0

+48 struct _KTHREAD *Thread

+4c struct _LIST_ENTRY ApcListEntry

+4c struct _LIST_ENTRY *Flink

+50 struct _LIST_ENTRY *Blink

+54 function *KernelRoutine

+58 function *RundownRoutine

+5c function *NormalRoutine

+60 void *NormalContext

+64 void *SystemArgument1

+68 void *SystemArgument2

+6c char ApcStateIndex

+6d char ApcMode

+6e byte Inserted

+40 void *CompletionKey



IO_STACK_LOCATION结构定义如下

struct _IO_STACK_LOCATION (sizeof=36)

+00 byte MajorFunction

+01 byte MinorFunction

+02 byte Flags

+03 byte Control

+04 union __unnamed19 Parameters

+04 struct __unnamed20 Create

+04 struct _IO_SECURITY_CONTEXT *SecurityContext

+08 uint32 Options

+0c uint16 FileAttributes

+0e uint16 ShareAccess

+10 uint32 EaLength

+04 struct __unnamed21 CreatePipe

+04 struct _IO_SECURITY_CONTEXT *SecurityContext

+08 uint32 Options

+0c uint16 Reserved

+0e uint16 ShareAccess

+10 struct _NAMED_PIPE_CREATE_PARAMETERS *Parameters

+04 struct __unnamed22 CreateMailslot

+04 struct _IO_SECURITY_CONTEXT *SecurityContext

+08 uint32 Options

+0c uint16 Reserved

+0e uint16 ShareAccess

+10 struct _MAILSLOT_CREATE_PARAMETERS *Parameters

+04 struct __unnamed23 Read

+04 uint32 Length

+08 uint32 Key

+0c union _LARGE_INTEGER ByteOffset

+0c uint32 LowPart

+10 int32 HighPart

+0c struct __unnamed3 u

+0c uint32 LowPart

+10 int32 HighPart

+0c int64 QuadPart

+04 struct __unnamed23 Write

+04 uint32 Length

+08 uint32 Key

+0c union _LARGE_INTEGER ByteOffset

+0c uint32 LowPart

+10 int32 HighPart

+0c struct __unnamed3 u

+0c uint32 LowPart

+10 int32 HighPart

+0c int64 QuadPart

+04 struct __unnamed24 QueryDirectory

+04 uint32 Length

+08 struct _STRING *FileName

+0c int32 FileInformationClass

+10 uint32 FileIndex

+04 struct __unnamed25 NotifyDirectory

+04 uint32 Length

+08 uint32 CompletionFilter

+04 struct __unnamed26 QueryFile

+04 uint32 Length

+08 int32 FileInformationClass

+04 struct __unnamed27 SetFile

+04 uint32 Length

+08 int32 FileInformationClass

+0c struct _FILE_OBJECT *FileObject

+10 byte ReplaceIfExists

+11 byte AdvanceOnly

+10 uint32 ClusterCount

+10 void *DeleteHandle

+04 struct __unnamed28 QueryEa

+04 uint32 Length

+08 void *EaList

+0c uint32 EaListLength

+10 uint32 EaIndex

+04 struct __unnamed29 SetEa

+04 uint32 Length

+04 struct __unnamed30 QueryVolume

+04 uint32 Length

+08 int32 FsInformationClass

+04 struct __unnamed30 SetVolume

+04 uint32 Length

+08 int32 FsInformationClass

+04 struct __unnamed31 FileSystemControl

+04 uint32 OutputBufferLength

+08 uint32 InputBufferLength

+0c uint32 FsControlCode

+10 void *Type3InputBuffer

+04 struct __unnamed32 LockControl

+04 union _LARGE_INTEGER *Length

+08 uint32 Key

+0c union _LARGE_INTEGER ByteOffset

+0c uint32 LowPart

+10 int32 HighPart

+0c struct __unnamed3 u

+0c uint32 LowPart

+10 int32 HighPart

+0c int64 QuadPart

+04 struct __unnamed33 DeviceIoControl

+04 uint32 OutputBufferLength

+08 uint32 InputBufferLength

+0c uint32 IoControlCode

+10 void *Type3InputBuffer

+04 struct __unnamed34 QuerySecurity

+04 uint32 SecurityInformation

+08 uint32 Length

+04 struct __unnamed35 SetSecurity

+04 uint32 SecurityInformation

+08 void *SecurityDescriptor

+04 struct __unnamed36 MountVolume

+04 struct _VPB *Vpb

+08 struct _DEVICE_OBJECT *DeviceObject

+04 struct __unnamed36 VerifyVolume

+04 struct _VPB *Vpb

+08 struct _DEVICE_OBJECT *DeviceObject

+04 struct __unnamed37 Scsi

+04 *Srb

+04 struct __unnamed38 QueryQuota

+04 uint32 Length

+08 void *StartSid

+0c struct _FILE_GET_QUOTA_INFORMATION *SidList

+10 uint32 SidListLength

+04 struct __unnamed29 SetQuota

+04 uint32 Length

+04 struct __unnamed39 QueryDeviceRelations

+04 int32 Type

+04 struct __unnamed40 QueryInterface

+04 struct _GUID *InterfaceType

+08 uint16 Size

+0a uint16 Version

+0c struct _INTERFACE *Interface

+10 void *InterfaceSpecificData

+04 struct __unnamed41 DeviceCapabilities

+04 struct _DEVICE_CAPABILITIES *Capabilities

+04 struct __unnamed42 FilterResourceRequirements

+04 struct _IO_RESOURCE_REQUIREMENTS_LIST *IoResourceRequirementList

+04 struct __unnamed51 ReadWriteConfig

+04 uint32 WhichSpace

+08 void *Buffer

+0c uint32 Offset

+10 uint32 Length

+04 struct __unnamed52 SetLock

+04 byte Lock

+04 struct __unnamed53 QueryId

+04 int32 IdType

+04 struct __unnamed54 QueryDeviceText

+04 int32 DeviceTextType

+08 uint32 LocaleId

+04 struct __unnamed55 UsageNotification

+04 byte InPath

+05 byte Reserved[3]

+08 int32 Type

+04 struct __unnamed56 WaitWake

+04 int32 PowerState

+04 struct __unnamed57 PowerSequence

+04 struct _POWER_SEQUENCE *PowerSequence

+04 struct __unnamed58 Power

+04 uint32 SystemContext

+08 int32 Type

+0c union _POWER_STATE State

+0c int32 SystemState

+0c int32 DeviceState

+10 int32 ShutdownType

+04 struct __unnamed59 StartDevice

+04 struct _CM_RESOURCE_LIST *AllocatedResources

+08 struct _CM_RESOURCE_LIST *AllocatedResourcesTranslated

+04 struct __unnamed60 WMI

+04 uint32 ProviderId

+08 void *DataPath

+0c uint32 BufferSize

+10 void *Buffer

+04 struct __unnamed61 Others

+04 void *Argument1

+08 void *Argument2

+0c void *Argument3

+10 void *Argument4

+14 struct _DEVICE_OBJECT *DeviceObject

+18 struct _FILE_OBJECT *FileObject

+1c function *CompletionRoutine

+20 void *Context



FILE_OBJECT结构定义如下

+0x000 Type            : Int2B

+0x002 Size            : Int2B

+0x004 DeviceObject    : Ptr32 _DEVICE_OBJECT

+0x008 Vpb              : Ptr32 _VPB

+0x00c FsContext        : Ptr32 Void

+0x010 FsContext2      : Ptr32 Void

+0x014 SectionObjectPointer : Ptr32 _SECTION_OBJECT_POINTERS

+0x018 PrivateCacheMap  : Ptr32 Void

+0x01c FinalStatus      : Int4B

+0x020 RelatedFileObject : Ptr32 _FILE_OBJECT

+0x024 LockOperation    : UChar

+0x025 DeletePending    : UChar

+0x026 ReadAccess      : UChar

+0x027 WriteAccess      : UChar

+0x028 DeleteAccess    : UChar

+0x029 SharedRead      : UChar

+0x02a SharedWrite      : UChar

+0x02b SharedDelete    : UChar

+0x02c Flags            : Uint4B

+0x030 FileName        : _UNICODE_STRING

+0x038 CurrentByteOffset : _LARGE_INTEGER

+0x040 Waiters          : Uint4B

+0x044 Busy            : Uint4B

+0x048 LastLock        : Ptr32 Void

+0x04c Lock            : _KEVENT

+0x05c Event            : _KEVENT

+0x06c CompletionContext : Ptr32 _IO_COMPLETION_CONTEXT

UNICODE_STRING结构定义如下

+0x000 Length          : Uint2B

+0x002 MaximumLength    : Uint2B

+0x004 Buffer          : Ptr32 Uint2B

DRIVER_OBJECT结构定义如下+0x000 Type            : Int2B

+0x002 Size            : Int2B

+0x004 DeviceObject    : Ptr32 _DEVICE_OBJECT

+0x008 Flags            : Uint4B

+0x00c DriverStart      : Ptr32 Void

+0x010 DriverSize      : Uint4B

+0x014 DriverSection    : Ptr32 Void

+0x018 DriverExtension  : Ptr32 _DRIVER_EXTENSION

+0x01c DriverName      : _UNICODE_STRING

+0x024 HardwareDatabase : Ptr32 _UNICODE_STRING

+0x028 FastIoDispatch  : Ptr32 _FAST_IO_DISPATCH

+0x02c DriverInit      : Ptr32    long

+0x030 DriverStartIo    : Ptr32    void

+0x034 DriverUnload    : Ptr32    void

+0x038 MajorFunction    : [28] Ptr32    long

DEVICE_OBJECT结构定义如下

+0x000 Type            : Int2B

+0x002 Size            : Uint2B

+0x004 ReferenceCount  : Int4B

+0x008 DriverObject    : Ptr32 _DRIVER_OBJECT

+0x00c NextDevice      : Ptr32 _DEVICE_OBJECT

+0x010 AttachedDevice  : Ptr32 _DEVICE_OBJECT

+0x014 CurrentIrp      : Ptr32 _IRP

+0x018 Timer            : Ptr32 _IO_TIMER

+0x01c Flags            : Uint4B

+0x020 Characteristics  : Uint4B

+0x024 Vpb              : Ptr32 _VPB

+0x028 DeviceExtension  : Ptr32 Void

+0x02c DeviceType      : Uint4B

+0x030 StackSize        : Char

+0x034 Queue            : __unnamed

+0x05c AlignmentRequirement : Uint4B

+0x060 DeviceQueue      : _KDEVICE_QUEUE

+0x074 Dpc              : _KDPC

+0x094 ActiveThreadCount : Uint4B

+0x098 SecurityDescriptor : Ptr32 Void

+0x09c DeviceLock      : _KEVENT

+0x0ac SectorSize      : Uint2B

+0x0ae Spare1          : Uint2B

+0x0b0 DeviceObjectExtension : Ptr32 _DEVOBJ_EXTENSION

+0x0b4 Reserved        : Ptr32 Void

IO_STATUS_BLOCK结构定义如下

+0x000 Status          : Int4B

+0x000 Pointer          : Ptr32 Void

+0x004 Information      : Uint4B
内核和驱动的关系?Windows内核--源代码在哪里?(1.1) 有时为了方便说明,提到内核其实默认包含驱动。但,内核(Kernel)和驱动(Driver)是操作系统中的两个核心组件,它们是不同的,是共同工作以管理和控制计算机的硬件资源。内核是操作系统的核心部分,负责管理系统的所有资源,包括进程管理、内存管理、文件系统、设备控制和网络通信等。内核直接与计算机的硬件交互,并提供一个抽象层,使得应用程序和用户无需关心硬件的具体细节就能使用计算机资源。驱动,也称为设备驱动程序,是一种特殊的软件,它允许内核与计算机的硬件设备进行通信。 阅读详情

相关推荐

【值得收藏】Linux内核原理理解

当进程再次被调度回来的时候,通过cpu_context中保存的ip回到了cpu_switch_to的下一条指令继续执行,而由于cpu_context中保存的sp导致当前进程回到自己的内核栈,经过一系列的内核栈的出栈处理,最后将原来保存在pt_regs中的通用寄存器的值恢复到了通用寄存器,这样进程回到用户空间就可以继续沿着被中断打断的下一条指令开始执行,用户栈也回到了被打断之前的位置,而进程访问的指令数据做地址转化也都是从自己的pgd开始进行一切对用户来说就好像没有发生一样。文件的层级表示关系。

m0_74282605的博客 1206

windows驱动程序的重要数据结构

代表驱动程序对象,它包含了驱动程序的各种入口点,如分发函数、卸载函数、快速 I/O 分发等,是驱动程序与操作系统的接口。它描述了设备的特性、类型、当前处理的请求,以及与其他设备对象的链接关系。这些成员和概念在驱动程序开发中是非常关键的,用于正确初始化设备对象,处理 PnP 事件,以及存储驱动和设备相关的数据。是一个描述驱动程序对象的结构体,定义了驱动的入口点、驱动的属性以及与设备交互的各种功能函数。) 的一部分,是驱动程序用来存储与特定设备相关的上下文信息的区域。等成员的详细解析及其在驱动开发中的使用。

frhdd的博客 945

【ARM】Linux内核驱动之SPI驱动,驱动实验BMP280气压传感器

SPI(Serial Peripheral Interface)是摩托罗拉大神在1980年代发明的,目标就是让主从设备通信像打电话一样简单,不同于I2C的"民主投票制",SPI是彻头彻尾的"独裁统治"——主设备说了算!时钟信号由主设备掌控,数据传输速率、格式全由主设备决定,从设备只能老老实实听话。MOSI(Master Out Slave In):主设备的数据"发射口"MISO(Master In Slave Out):主设备的"接收天线"SCK(Serial Clock):通信的"节拍器"

凉开水白菜的博客 1360

I2C驱动(三) --驱动中的几个重要结构

本文介绍i2c驱动的几个重要结构。

zpz979994367的博客 1020

内核iptables主要数据结构图

很详细的 iptables主要数据结构图

HDMI与DisplayPort混搭方案:如何用Xilinx Video PHY Controller实现多协议视频接口转换

本文详细解析了如何利用Xilinx Video PHY Controller IP核实现HDMI与DisplayPort协议转换,涵盖混合视频接口架构设计、GT收发器动态重配置策略及跨协议时钟域处理方案。通过实战案例和配置技巧,帮助开发者构建高性能多协议视频转换系统,适用于医疗影像、工业控制等场景。

weixin_30776273的博客 447

[Windows驱动开发](二)基础知识——数据结构

本节主要介绍驱动开发的一些基础知识。     1. 驱动程序的基本组成         1.1. 最经常见到的数据结构                a. DRIVER_OBJECT驱动对象 // WDK中对驱动对象的定义 // 每个驱动程序都会有一个唯一的驱动对象与之对应 // 它是在驱动加载时被内核对象管理程序创建的 typedef struct _DRIVER_OBJECT

baggiowangyu的专栏 1万+

ISCC练习题MISC

解题技巧:看最后括号应该是IceCTF,先用了一键解码啥也没有啊,不对不对!好像是字符频率统计,转换网站:http://quipqiup.com/有人给你发了一串信息,你能解开吗?

m0_62737381的博客 1121

windows内核情景分析 --APC

APC:异步过程调用。这是一种常见的技术。前面进程启动的初始过程就是:主线程在内核构造好运行环境后,从KiThreadStartup开始运行,然后调用PspUserThreadStartup,在该线程的apc队列中插入一个APC:LdrInitializeThunk,这样,当PspUserThreadStartup返回后,正式退回用户空间的总入口BaseProcessStartThunk前,会执行

maomao171314的专栏 2428

Win10 IPv6 远程桌面连接(小米路由器)

背景 由于家里是移动网,且懒得向运营商要公网IPv4,所以想着用IPv6试一下。 家里的环境是这样的: 宽带用的是移动的,没有公网IPv4,但经过测试发现IPv6是公网的 上网通过光猫拨号,而不是通过路由器 路由器是小米AC2100 光猫更改为桥接模式 路由器必须要通过PPPoE拨号,如果是光猫拨号,那么要找对应的维护人员辅助你把光猫改成桥接模式。通过PPPoE拨号路由器就能够拿到公网的IPv6网段,也就可以给底下的其他服务分配公网IPv6了。而如果是光猫拨号,那么只有路由器可以拿到公网的IP。其他的设

timczm的博客 1万+

沧小海深入剖析xilinx的GTP/GTX核,掌握高速串行收发机制——第六章 接收端结构及功能说明

总目录在这哦~ https://blog.youkuaiyun.com/z123canghai/article/details/107700878 第六章 接收端结构及功能说明 子目录 6.1 RX的模拟前端 6.2 RX的OOB信号 6.3 RX的均衡器 6.4 RX的CDR 时钟数据恢复 6.5 RX时钟输出结构 6.6 RX 的极性控制 6.7 RX 的PRBS 6.8 Rx字节、字的对齐功能 6.9 Rx接收弹性缓冲区 6.10 Rx的时钟纠正 6.11 Rx接收通道绑定 6...

滄海的博客 1万+

stm32f10xx系统结构概述

stm32f103研发应用时,必须对其系统资源分配有个总体的印象,然后在学习其他类型的芯片时,也可根据此结构进行扩展或对比以帮助加深印象(通过此结构,可以清晰明了的知道Cortex-M3是如何成为stm32f10xx系列芯片的内核的,是怎样进行工作的)。如下,主系统由以下部分构成: ★四个驱动单元: (1)Cortex-M3内核DCode总线(D-bus),和系统总线(S-bus) ...

qq_26575553的博客 2884

CoaXPress FMC子卡:高速图像采集与FPGA原型开发实战指南

在机器视觉和工业检测领域,高速、可靠的数据传输是核心需求。CoaXPress(CXP)协议作为一种基于同轴电缆的高速接口标准,通过其高带宽、长距离传输和低延迟的特性,有效解决了传统接口在确定性实时传输方面的短板。其技术价值在于为海量图像数据提供了稳定、高效的物理层和数据链路层解决方案,广泛应用于半导体检测、医疗成像等对吞吐量有极致要求的场景。要实现CXP系统的快速原型验证,集成了高速SerDes接口和时钟管理的FMC子卡与FPGA开发板的组合成为关键。这种平台将复杂的硬件设计封装,让开发者能聚焦于图像处理算

weixin_31815843的博客 280

内核驱动主要数据结构

内核驱动主要数据结构收藏 新一篇: Gh0st上线更新专用ASP文件 function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.

大浪淘沙的专栏 1311

值得苦练的100道Python经典练手题(全网最全,附详细答案,建议收藏)

这100道Python练习题涵盖了从基础语法到高级算法、从数据库操作到Web开发的各个方面,是备考数据库系统工程师的绝佳素材。建议按照章节顺序逐一练习,遇到难点可反复钻研,真正掌握每一道题背后的知识点。通过这些练习,不仅能提升Python编程能力,还能加深对数据库系统原理的理解,为考试和实际工作打下坚实基础。

yue_yun_的博客 9397

【AI智能体】Codex 开发聚合搜索应用项目实战操作详解

Codex 开发聚合搜索应用项目实战操作详解

congge 3099

一文讲解Linux内核——设备驱动(收藏)

Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它dos或window环境下的驱动程序有很大的区别. 在linux中,驱动程序都是模块化的。 module 翻译成中文就是模块,它可以被动态载到 kernel 里成为 kernel的一部分。载到 kernel 里的 module 它具有跟 kernel 一样的权力。可以 access 任何 kernel 的 data structure)。 驱动程序Module加载到kernel由俩种方式,静

csbmww的博客 2869

从0到1带大家搭建spring cloud alibaba 微服务大型应用框架(十一)spring-boot-admin 监控篇(2)springcloud 集成spring boot admin

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(十一)spring-boot-admin 监控篇(2)springcloud 集成spring boot admin spring-boot-admin 服务端创建与集成入nacos spring-boot-admin 查看日志

峡谷电光马仔的博客 1386

嵌入式驱动工程师学习路线【建议收藏】

一口君曾经是某见的教学总监,带过的学生也有大几千了,基本都从事linux相关开发工作。现在在各行各业也基本都是翘楚,有的都成公司技术主管,带领几十人上百人团队。 网上看了很多的嵌入式学习路线,有的还凑活,有的纯粹是打广告卖板子招生,有的为了博人眼球东拼西凑,几乎把整个行业用得着用不着的技术都写上去了,没有侧重点,简直是劝退指南。 一口君凭借多年的研发和开发经验,整理了嵌入式学习的最经典路线,后续一口君也会根据这个大纲录制教学视频。 目前《从0学Linux驱动第一期》视频已经在B站更新完毕。 《从0学ARM第

一口Linux的专栏 2万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Camera2Demo

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

Linux内核的经典调试方式,零基础入门到精通,收藏这一篇就够了

内核总是那么捉摸不透, 内核也会犯错, 但是调试却不能像用户空间程序那样, 为此内核开发者为我们提供了一系列的工具和系统来支持内核的调试.内核的调试, 其本质是内核空间与用户空间的数据交换, 内核开发者们提供了多样的形式来完成这一功能.

Javachichi的博客 2949

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

从0到1:Sandboxie内核驱动开发实战指南

你还在为Windows驱动开发的复杂调试流程头疼吗?还在为沙箱技术的内存隔离机制感到困惑吗?本文将通过Sandboxie开源项目的核心代码解析,带你掌握内核模式下进程隔离、文件系统重定向和注册表虚拟化的实现原理,最终能够独立开发基础的Windows驱动程序。 读完本文你将获得: - 理解Sandboxie驱动架构的核心模块设计 - 掌握进程创建监控与沙箱隔离的实现方法 - 学会文件系统重定向的关

gitblog_00513的博客 411

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

[经典收藏]Linux内核源代码漫游

Linux内核源代码漫游 Alessandro Rubini著, rubini@pop.systemy.it 赵炯 译,gohigh@sh163net, (www.plinux.org)   本章试图以顺序的方式来解释Linux源代码,以帮助读者对源代码的体系结构以及很多相关的unix特性的实现有一个很好的理解。目标是帮助对Linux不甚了解的有经验的C程序员对整个Linux的设计有所了解。这也就

2347

linux无线网卡驱动MAC80211架构数据结构

分类: linux驱动程序 2013-05-06 14:01 466人阅读 评论(0) 收藏 举报 一,linux内核当前无线网络驱动架构说明 上图为linux内核现行的无线网络架构 2,数据结构(data structure) struct ieee80211_local, struct ieee8021__hw a,这两个都表示一个无线网络设备实例(hw嵌入在l

zaizaiyu56的专栏 2569

Linux内核数据结构

分类: Linux内核学习 Linux设备驱动2011-01-05 11:55 107人阅读 评论(0) 收藏 举报   链表,队列,映射,二叉树等数据结构是程序设计中常用的数据结构。为了统一这些数据结构的操作接口,Linux内核开发者实现了一些标准的操作接口及实现(使用了大量的GNU扩展特性),以达到代码重用,开发者应该尽量使用这些标准接口,避免实现自己的再创造,虽然那样看起来很酷,很有

kerson的专栏 2499

分析linux内核qspi驱动层次

一个SPI控制器对应一个spi_master结构体,通过它和挂在对应控制器下面的flash进行通信。每一次传输由spi_message来表示,spi_message挂入到spi_master。继续分析剩下的函数kthread_worker_fn和spi_pump_messages。queue队列中,spi_message又由多个传输片段spi_transfer构成。qspi驱动的基本流程如图2所示,红色的步骤表示数据的构造以及处理过程。程检测队列中是否有在等待的message,如果有则启动具体的传输。

m0_74282605的博客 916

【纯干货】Linux内核模块详解(值得收藏)

Linux操作系统的内核是单一体系结构(monolithic kernel)的。也就是说,整个内核是一个单独的非常大的程序。与单一体系结构相对的是微内核体系结构(micro kernel),比如Windows NT采用的就是微内核体系结构。对于微内核体系结构特点,操作系统的核心部分是一个很小的内核,实现一些最基本的服务,如创建和删除进程、内存管理、中断管理等等。而文件系统、网络协议等其它部分都在微内核外的用户空间里运行。这两种体系的内核各有优缺点。

m0_74282605的博客 1897
上一篇: 程序的自我修改收藏
下一篇: 关于Windows下ShellCode编写的一点思考
大浪淘沙1
博客等级 码龄19年 42粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值