首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

驱动开发:内核遍历文件或目录

在笔者前一篇文章《驱动开发:内核文件读写系列函数》简单的介绍了内核中如何对文件进行基本的读写操作,本章我们将实现内核遍历文件或目录这一功能,该功能的实现需要依赖于ZwQueryDirectoryFile...这个内核API函数来实现,该函数可返回给定文件句柄指定的目录中文件的各种信息,此类信息会保存在PFILE_BOTH_DIR_INFORMATION结构下,通过遍历该目录即可获取到文件的详细参数,如下将具体分析并实现遍历目录功能...该功能也是ARK工具的最基本功能,如下图是一款通用ARK工具的文件遍历功能的实现效果; 在概述中提到过,目录遍历的核心是ZwQueryDirectoryFile()系列函数,该函数可返回给定文件句柄指定的目录中文件的各种信息...,其次FileInformationClass参数也是有多种选择的,本例中我们需要遍历文件或目录则设置成FileBothDirectoryInformation就可以,在循环遍历文件时需要将当前目录.以及上一级目录...,以及创建时间和修改时间,输出效果如下图所示; 你是否会觉得很失望,为什么不是递归枚举,这里为大家解释一下,通常情况下ARK工具并不会在内核层实现目录与文件的递归操作,而是将递归过程搬到了应用层,当用户点击一个新目录时

18340

驱动开发:内核遍历文件或目录

在笔者前一篇文章《驱动开发:内核文件读写系列函数》简单的介绍了内核中如何对文件进行基本的读写操作,本章我们将实现内核遍历文件或目录这一功能,该功能的实现需要依赖于ZwQueryDirectoryFile...这个内核API函数来实现,该函数可返回给定文件句柄指定的目录中文件的各种信息,此类信息会保存在PFILE_BOTH_DIR_INFORMATION结构下,通过遍历该目录即可获取到文件的详细参数,如下将具体分析并实现遍历目录功能...该功能也是ARK工具的最基本功能,如下图是一款通用ARK工具的文件遍历功能的实现效果;图片在概述中提到过,目录遍历的核心是ZwQueryDirectoryFile()系列函数,该函数可返回给定文件句柄指定的目录中文件的各种信息...FileInformationClass参数也是有多种选择的,本例中我们需要遍历文件或目录则设置成FileBothDirectoryInformation就可以,在循环遍历文件时需要将当前目录.以及上一级目录...,以及创建时间和修改时间,输出效果如下图所示;图片你是否会觉得很失望,为什么不是递归枚举,这里为大家解释一下,通常情况下ARK工具并不会在内核层实现目录与文件的递归操作,而是将递归过程搬到了应用层,当用户点击一个新目录时

47660
您找到你想要的搜索结果了吗?
是的
没有找到

8.3 Windows驱动开发:内核遍历文件或目录

在笔者前一篇文章《内核文件读写系列函数》简单的介绍了内核中如何对文件进行基本的读写操作,本章我们将实现内核遍历文件或目录这一功能,该功能的实现需要依赖于ZwQueryDirectoryFile这个内核...API函数来实现,该函数可返回给定文件句柄指定的目录中文件的各种信息,此类信息会保存在PFILE_BOTH_DIR_INFORMATION结构下,通过遍历该目录即可获取到文件的详细参数,如下将具体分析并实现遍历目录功能...该功能也是ARK工具的最基本功能,如下图是一款通用ARK工具的文件遍历功能的实现效果; 在概述中提到过,目录遍历的核心是ZwQueryDirectoryFile()系列函数,该函数可返回给定文件句柄指定的目录中文件的各种信息...是否遍历子目录:指定是否遍历目录中的子目录。 文件名匹配模式:指定查询的文件名模式,支持通配符。 是否返回长文件名:指定是否返回长文件名。...,其次FileInformationClass参数也是有多种选择的,本例中我们需要遍历文件或目录则设置成FileBothDirectoryInformation就可以,在循环遍历文件时需要将当前目录.以及上一级目录

27410

Linux 内核】编译 Linux 内核 ⑤ ( 查看 .config 编译配置文件 | 正式编译内核 )

文章目录 一、查看 .config 编译配置文件 二、正式编译内核 一、查看 .config 编译配置文件 ---- 在上一篇博客 【Linux 内核】编译 Linux 内核 ④ ( 打开 Linux...内核编译 菜单配置 |菜单配置中的光标移动与选中状态 | 保存配置 | 配置项帮助文档 ) 中 , 已经将编译配置保存到了 .config 文件中 ; 查看 .config 编译配置文件 , 在 linux...内核源码根目录中 , 执行 gedit .config 命令 , 查看 .config 编译配置文件 : ( 也可以使用 vi , vim 等文本编辑器查看 ) 在 .config 配置中 , #...代表注释 , CONFIG_IRQ_WORK=y 等号右侧的 y 表示同意该操作 ; .config 文件内容示例 : 配置文件很多 , 这里只贴出一部分 ; # # Automatically generated...---- 在 Linux 内核源码根目录 , 执行 sudo make j4 开始编译 Linux 内核 ;

11.9K40

Linux内核编程--文件描述符

Linux操作系统中,一切皆是文件—— "Everything is a file"。 如果要在Linux系统中编写操作文件的代码,需要借助文件描述符。...文件的索引——文件描述符(file descriptor): 文件描述符是一个非负整数,当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。...文件描述符就是内核为了高效管理已被打开的文件所创建的索引值。 文件描述符指向内核为每一个进程维护的打开文件记录表。当要处理文件时,将文件对应的文件描述符作为参数传给函数。...文件描述符在用户进程和内核之间的映射关系: Linux中查看文件描述符的指令:lsof(list open files) lsof可以打开的文件: 普通文件 目录 网络文件系统的文件 字符或设备文件...i --列出所有的网络连接 lsof -i tcp --列出所有tcp 网络连接信息 *Linux中出现“ Too many open files”报错,如何解决:

2.7K10

linux内核源码生成tags文件

一般来说,如果我们想要研究一个c/c++项目的源码,我们首先要做的是为该项目生成tags文件linux内核是c写的,所以它也不例外。.../Comparison-with-Similar-Tools 根据我的测试,gtags是最好用的,其官方地址是: https://www.gnu.org/software/global/ 由于linux...内核的项目结构非常庞大,如果我们在项目的根目录直接为所有文件生成tags的话,会包含很多不必要的文件,比如我们只想要x86平台的相关实现,但结果却包含了各种其他平台的逻辑。...那怎么办呢,其实linux的Makefile里已经帮我们写好了如何生成各种tags,看下面的命令: $ make help # 省略其他 tags/TAGS - Generate tags...在生成tags文件后,我们就可以在各种编辑器里使用了,下面是emacs编辑器使用gtags的效果图: ? 还不错吧。

4.3K20

Linux 内核Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )

文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ; 5.x 内核源码下载地址...: https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ Linux 内核 5.6.18 版本 : https://mirrors.edge.kernel.org...不同版本的 Linux 内核 区别 : 系统调用 : 其系统调用是相同的 , 新的版本可能会增加新的系统调用 ; 设备文件 : 各内核版本的设备文件都是相同的 , 但是 内部接口 可能不同 ; 二、使用...Code ) 博客 , 安装 VSCode 软件 ; 打开 VSCode , 选择 ” 菜单栏 / 文件 / 打开文件夹 ” 选项 , 选择 Linux 内核源码目录 , 点击 ” 选择文件夹 ”

23.2K32

Linux 内核Linux 内核源码结构 ( 下载 Linux 内核源码 | 使用 VSCode 阅读 Linux 内核源码 )

文章目录 一、下载 Linux 内核源码 二、使用 VSCode 阅读 Linux 内核源码 一、下载 Linux 内核源码 ---- 参考 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的...Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 ) 博客 , 下载 Linux 5.6.18 版本的内核源码 ; 5.x 内核源码下载地址...不同版本的 Linux 内核 区别 : 系统调用 : 其系统调用是相同的 , 新的版本可能会增加新的系统调用 ; 设备文件 : 各内核版本的设备文件都是相同的 , 但是 内部接口 可能不同 ; 二、使用...Code ) 博客 , 安装 VSCode 软件 ; 打开 VSCode , 选择 " 菜单栏 / 文件 / 打开文件夹 " 选项 , 选择 Linux 内核源码目录 , 点击 " 选择文件夹 "...按钮 , 此时就可以在 VSCode 中阅读 Linux 内核源码 ;

21.2K30

linux内核编程_linux内核是什么

内核——操作系统的内在核心 设备驱动程序 启动引导程序 命令行shell 其他种类的用户界面—-操作系统的外在表象 基本的文件管理工具和系统工具 Linux内核的组成 Linux内核源代码目录结构是什么...fs:支持的各种文件系统,如EXT、FAT、NTFS、JFFS2 等。 include:头文件,与系统相关的头文件被放置在include/linux 子目录下。 init:内核初始化代码。...Linux内核的有哪些组成部分? 进程调度(SCHED)、内存管理(MM)、虚拟文件系统(VFS)、网络接口(NET)和进程间通信(IPC) Linux内核的的组成部分之间有什么关系?...Makefile:分布在Linux 内核源代码中的Makefile,定义Linux 内核的编译规则。 配置文件(Kconfig):给用户提供配置选择的功能。...在Linux 内核中增加程序需要完成哪些工作? 将编写的源代码复制到Linux 内核源代码的相应目录。 在目录的Kconfig文件中增加新源代码对应项目的编译配置选项。

18.8K30

Linux 内核】编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )

文章目录 一、解压内核源码 二、查询当前 Linux 内核版本号 三、进入并查看 linux 内核源码目录 一、解压内核源码 ---- 将 下载的 Linux 内核源码 linux-5.6.14.tar.gz...拷贝到 Ubuntu 虚拟机中 , 执行 tar xvf linux-5.6.14.tar.gz 命令 , 解压 Linux 内核源码 ; 解压完毕后 , linux-5.6.14 目录中就是解压后的...Linux 内核源码 ; 二、查询当前 Linux 内核版本号 ---- 执行 uname -a 命令 , 查询当前 Ubuntu 系统的 Linux 内核版本号 , 执行过程如下 : root@ubuntu...x86_64 x86_64 x86_64 GNU/Linux root@ubuntu:~/kernel# root@ubuntu:~/kernel# 当前的内核版本号是 4.13.0 ; 三...、进入并查看 linux 内核源码目录 ---- 进入之前解压的 linux-5.6.14 内核源码目录 ; root@ubuntu:~/kernel# ls linux-5.6.14 linux-5.6.14

86.8K60

LINUX内核

一、Linux内核2.6特点: 1.新的调度器 2.内核抢占 3.改进线程模型 4.虚拟内存 5.文件系统 6.音频:音频体系结构ALSA.支持USB音频和MIDI设备,并支持全双工重放功能。...二、LINUX内核的组成 1.LINUX内核源代码目录结构 1)arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录。如i386,arm,powerpc,mips等。...:头文件,与系统相关的头文件放在include/Linux下。...模块 16)sound:ALSA,OSS音频中设备的核心代码和常用设备驱动 17)usr:实现了用于打包和压缩的CPIO等 2.LINUX内核组成部分 2.1 LINUX主要用进程调度,虚拟文件系统,...3.Linux内核空间与用户空间 Linux只能通过系统调用和硬件中断来完成用户空间到内核空间的控制转移

13.9K30

Linux 内核 vs Windows 内核

完成第一版 Linux 后,Linux Torvalds 就在网络上发布了 Linux 内核的源代码,每个人都可以免费下载和使用。...Linux 内核设计的理念主要有这几个点: MutiTask,多任务 SMP,对称多处理 ELF,可执行文件链接格式 Monolithic Kernel,宏内核 MutiTask MutiTask 的意思是多任务...ELF ELF 的意思是可执行文件链接格式,它是 Linux 操作系统中可执行文件的存储格式,你可以从下图看到它的结构: ?...Windows 的可执行文件的格式与 Linux 也不同,所以这两个系统的可执行文件是不可以在对方上运行的。...这两个操作系统的可执行文件格式也不一样, Linux 可执行文件格式叫作 ELF,Windows 可执行文件格式叫作 PE。

16.3K30

Linux内核编程--文件流与缓冲区

Linux系统下,通过编程对文件进行操作的方式有两种机制:文件描述符和文件流 1.文件描述符和文件流的区别: 文件描述符的类型为int,文件流的类型为FILE*(文件指针)。...文件流是基于文件描述符来实现的,所以可以从文件流中提取并操作文件描述符,比如“int fileno(FILE*); fileno(file_stream)”。...character read failed wide orientation narrow character read failed wide character read 'a' 3.缓冲区大小设置 Linux...内核操作文件会使用高速缓冲区。...比如write操作, 进程把数据写到缓冲区, 然后内核把数据从缓冲区写到磁盘文件。 当进程不断写入数据时,内核可以等缓冲区满了再一次性往磁盘写入,这样可以提高性能。

2.8K10
领券