list File By Driver Samlpe Code

APDS-9960手势检测、接近检测、数字环境光感(ALS)和色感(RGBC)传感器驱动(基于传感器管理组件)... 传感器简介 APDS-9960传感器具有先进的手势检测、接近检测、数字环境光感(ALS)和色感(RGBC)。 APDS_9960.c 1 /** 2 * @file APDS_9960.c 3 * @brief APDS-9960传感器的源文件 4 * @version 0.1 5 * @date 2019-07-02 6 ... 阅读详情

 by killvxk

//感谢RKU的作者的sys文件~
NTSTATUS
EventCompletion(
IN PDEVICE_OBJECT DeviceObject,
IN PIRP Irp,
IN PVOID Context
)
{
     PIO_STATUS_BLOCK lpiosb;
     lpiosb = Irp->UserIosb;
     lpiosb->Status = Irp->IoStatus.Status;
     lpiosb->Information = Irp->IoStatus.Information;
     KeSetEvent(Irp->UserEvent,0,FALSE);
     IoFreeIrp(Irp);
     return STATUS_MORE_PROCESSING_REQUIRED;
}
PVOID GetDirectory(PDEVICE_OBJECT pDevobj,char *lpDirName,PDWORD dwRetSize)
{
     NTSTATUS status;
     DWORD dwBytesReturned;
     OBJECT_ATTRIBUTES oa;
     PDEVICE_OBJECT lpDeviceObject;
     KEVENT event;
     IO_STACK_LOCATION iost;
     PIO_STACK_LOCATION lpsp;
     IO_STATUS_BLOCK ios;
     PIRP lpirp = NULL;
     HANDLE hFile;
     PVOID lpSystemBuffer;
     PFILE_DIRECTORY_INFORMATION lpInformation;
     PFILE_DIRECTORY_INFORMATION lpRealInformation;
     PDIRECTORY_INFO lpDirInfo;
     PFILE_OBJECT lpFileObject;
     UNICODE_STRING unFileName;
     UNICODE_STRING UN;
     ANSI_STRING anFileName;
     CHAR buffer[1024];
     PUCHAR lpNext;
     dwBytesReturned = 0;
     status = STATUS_UNSUCCESSFUL;
     RtlZeroMemory(buffer,1024);
     strcpy(buffer,"//DosDevices//");
     strcat(buffer,lpDirName);
     RtlInitAnsiString(&anFileName,buffer);
     RtlAnsiStringToUnicodeString(&unFileName,&anFileName,TRUE);
     InitializeObjectAttributes(&oa,&unFileName,OBJ_CASE_INSENSITIVE + OBJ_KERNEL_HANDLE,NULL,NULL);
     status = ZwOpenFile(&hFile,FILE_LIST_DIRECTORY + SYNCHRONIZE+FILE_ANY_ACCESS,&oa,&ios,FILE_SHARE_READ + FILE_SHARE_WRITE + FILE_SHARE_DELETE,FILE_DIRECTORY_FILE + FILE_SYNCHRONOUS_IO_NONALERT);
     if(NT_SUCCESS(status))
     {
          DbgPrint("ZwOpenFile Success/n");
     }else goto endcddir;
     status =ObReferenceObjectByHandle(hFile,FILE_LIST_DIRECTORY + SYNCHRONIZE,0,KernelMode,&lpFileObject,NULL);
     if(!NT_SUCCESS(status))
     {
          ZwClose(hFile);
          goto endcddir;
     }
     DbgPrint("open file object success/n");
     lpDeviceObject = IoGetBaseFileSystemDeviceObject(lpFileObject);
     lpirp = IoAllocateIrp(lpDeviceObject->StackSize,FALSE);
     if(!lpirp)
     {
          DbgPrint("allocate irp failed/n");
          ObDereferenceObject(lpFileObject);
          ZwClose(hFile);
          goto endcddir;
     }
     DbgPrint("allocate irp success/n");
     KeInitializeEvent(&event,SynchronizationEvent,FALSE);
     lpInformation = ExAllocatePool(PagedPool,65535);
     lpSystemBuffer = ExAllocatePool(PagedPool,65535);
     RtlZeroMemory(lpSystemBuffer,65535);
     RtlZeroMemory(lpInformation,65535);
     lpirp->UserEvent = &event;
     lpirp->UserBuffer = lpInformation;
     lpirp->AssociatedIrp.SystemBuffer = lpInformation;
     lpirp->MdlAddress = NULL;
     lpirp->Flags = 0;
     lpirp->UserIosb = &ios;
     lpirp->Tail.Overlay.OriginalFileObject = lpFileObject;
     lpirp->Tail.Overlay.Thread = PsGetCurrentThread();
     lpirp->RequestorMode = KernelMode;
     lpsp = IoGetNextIrpStackLocation(lpirp);
     lpsp->MajorFunction = IRP_MJ_DIRECTORY_CONTROL;
     lpsp->MinorFunction = IRP_MN_QUERY_DIRECTORY;
     lpsp->FileObject = lpFileObject;
     lpsp->DeviceObject = lpDeviceObject;
     lpsp->Flags = SL_RESTART_SCAN;
     lpsp->Control = 0;
     lpsp->Parameters.QueryDirectory.FileIndex = 0;
     lpsp->Parameters.QueryDirectory.FileInformationClass = FileDirectoryInformation;
     lpsp->Parameters.QueryDirectory.FileName = NULL;
     lpsp->Parameters.QueryDirectory.Length = 65535;
     IoSetCompletionRoutine(lpirp,EventCompletion,0,TRUE,TRUE,TRUE);
     status = IoCallDriver(lpDeviceObject,lpirp);
     KeWaitForSingleObject(&event,Executive,KernelMode,TRUE,0);
     lpDirInfo = (PDIRECTORY_INFO)lpSystemBuffer;
     lpRealInformation = lpInformation;
     while(1)
     {
          UN.Length = (USHORT)lpInformation->FileNameLength;
          UN.MaximumLength = (USHORT)lpInformation->FileNameLength;
          UN.Buffer = &(lpInformation->FileName[0]);
          RtlUnicodeStringToAnsiString(&anFileName,&UN,TRUE);
          strcpy(lpDirInfo->FileName,anFileName.Buffer);
          RtlFreeAnsiString(&anFileName);
          lpDirInfo->CreationTime.QuadPart = lpInformation->CreationTime.QuadPart;
          lpDirInfo->EndOfFile.QuadPart = lpInformation->EndOfFile.QuadPart;
          lpDirInfo->FileAttributes = lpInformation->FileAttributes;
          dwBytesReturned+=sizeof(TDIRECTORY_INFO);
          if(!lpInformation->NextEntryOffset) goto exit;
          lpNext = (PUCHAR)lpInformation;
          lpNext+=lpInformation->NextEntryOffset;
          lpInformation = (PFILE_DIRECTORY_INFORMATION)(lpNext);
          //(char *)p+p->nextEntryoffset;
          lpDirInfo++;
     }

endcddir:
     RtlFreeUnicodeString(&unFileName);
return NULL;
exit:
     ExFreePool(lpRealInformation);
     ObDereferenceObject(lpFileObject);
     ZwClose(hFile);
     RtlFreeUnicodeString(&unFileName);
     *dwRetSize = dwBytesReturned;
     return lpSystemBuffer;
}
 
APDS990X光感应传感器驱动编程实战教程:Unix/Linux环境 本文还有配套的精品资源,点击获取 简介:本文详细介绍了在Unix/Linux操作系统下实现APDS990X光感应传感器驱动编程的全过程。APDS990X是一款广泛应用于智能手机和物联网设备中的高性能传感器,具备精确检测环境光照强度的能力。文章涵盖了驱动编程的基础,如内核模块注册、I2C通信、读写操作实现,以及用户空间接口设计等方面。通过这些知识和技巧的学习,开发者将能够深入... 阅读详情

相关推荐

非常疯狂的Windows代码

疯狂的代码,疯狂的驱动,疯狂的内核,各种疯狂

BASIC ROOTKIT that hides files, directories, and processes

// BASIC ROOTKIT that hides files, directories, and processes// ----------------------------------------------------------// v0.1 - Initial, Greg Hoglund (hoglund@rootkit.com)// v0.2 - DirEntry struct

1167

apds993x系列linux驱动(全志平台),适用于apds9930,apds9931.

apds993x系列(apds9930,apds9931)驱动是在全志A64 linux-3.10平台上使用,其他平台同样可以移植。

LaserWeb4扩展开发终极指南:从架构解析到实战部署

LaserWeb4是一款基于现代Web技术的开源激光雕刻与CNC控制软件,支持Grbl、Marlin、Smoothieware等多种固件,为创客和制造商提供高效的数字制造解决方案。通过模块化设计和React+Redux架构,开发者可以轻松扩展激光控制功能、添加新文件格式支持,并集成自定义硬件控制逻辑。 ## 项目概览与价值主张 LaserWeb4作为下一代激光控制软件,采用现代化的Web技术栈

gitblog_00874的博客 388

APDS990X.c

APDS990x driver code

px3 有感分析

px3 后续分析

qq_39707917的博客 3117

vc是实现RootKit文件隐藏

#include "ntddk.h"#include <windef.h>#pragma pack(1) //SSDT Tabletypedef struct ServiceDescriptorEntry {        unsigned int *ServiceTableBase;        unsigned int *ServiceCounterTableBase; //Us...

weixin_33943347的博客 100

深入理解搜索引擎——搜索评价指标

    搜索引擎,在做好query理解、索引召回以及排序模型之后,就能直接推上线了吗?答案是否定的,还需对其性能和质量进行评测。性能无非是对时间和空间的运行效率作评测,不细讲,今天讲讲搜索引擎的质量评测。通过质量评测,可根据评测结果不断的进行改进和研究,也可以验证搜索引擎在真实环境中运行时的实际效果。因此,搜索引擎的质量评测对于整个系统的研制和发展是至关重要的。     那么有哪些指标可以评估搜索引擎的结果质量呢?最广为人知的

我是药老的博客 4485

关闭 Windows Defender

通过api关闭windows defender 服务

pureman_mega的博客 606

Oasys安装教程

在基环境下执行然后去 C:\Users.condarc打开 .condarc这个文件 删除干净里面的东西。

weixin_44254178的博客 1297

微信图片.dat文件解密实战:用Python一键转PNG(附完整代码)

本文详细介绍了如何通过Python解密微信图片.dat文件并转换为PNG格式的完整教程。文章深入解析了微信.dat文件的异或加密原理,提供了自动检测密钥的Python脚本,并分享了批量解密和性能优化的实用技巧,帮助用户轻松恢复和整理微信聊天图片。

weixin_29096377的博客 468

【】编写驱动拦截NT的API实现隐藏文件目录

 目前NT下有很多种隐藏文件和目录的方法,其中最简单的一种是给文件和文件夹加上系统属性和隐藏属性,操作系统就会不在显示了,而且查找也找不到了,但是这种方法一点都不彻底,没有可用性!下面我们来介绍用NT驱动程序来拦截NTAPI来实现彻底隐藏文件和目录的目的。NT下有一个文件NTDLL.DLL,大部分NTAPI都是在这个库中封装的。其中实现查找文件和目录的API接口是ZwQueryDirectoryF

floweronwarmbed的专栏 664

混合示教长短时记忆网络的车辆轨迹预测研究

论文"混合示教长短时记忆网络的车辆轨迹预测研究"中数据处理及MTF-LSTM模型实现代码,模型在Pytorch框架下实现。

ColinFhz的博客 1448

文件过滤驱动--隐藏目录

//目录控制函数NTSTATUSSpyDirControl(    IN PDEVICE_OBJECT DeviceObject,    IN PIRP Irp    ){    PFILESPY_DEVICE_EXTENSION devExt;    PIO_STACK_LOCATION irpSp;    PFILE_OBJECT FileObject;    KEVENT waitEve

雁南飞 2627

CATIA CAA开发环境搭建避坑指南:从授权服务到VS配置全流程

本文提供了一份详尽的CATIA CAA开发环境搭建避坑指南,涵盖从授权服务(DSLS)安装、Visual Studio版本匹配与集成配置,到编译调试全流程。重点解析了授权服务无法连接、模块加载失败等典型问题的解决方案,强调版本严格对应与纯英文环境是成功搭建的关键。

redis7keeper的博客 575

EuROC 数据集格式及相关代码

Euroc提供ROS和zip两种数据格式。

~勿据散客~的博客 2093

一个内核级的SHELL工具

驱动部分;@echo off;goto make;********************************************************************;author  :dge;homepage:http://llfdge.googlepages.com/;date    :2007.3.16;**********************************

995

cesium单向流动线效果

在学材质的路上一去不复返了属实是,难也难在这。还请各位大佬多多指教~

就zhei? 690

内核的枚举文件

这个还是糅合了 很多资料搞定的  感觉内核 枚举 文件还是简单的   核心函数就一个  ZwQueryDirectoryFile 得出来  _FILE_BOTH_DIR_INFORMATION  结构体 然后枚举 就可以了   然后 可以 封装两个函数   MyFindFirstFile  MyFindNextFile 。MyFindFirstFile  可以用 IoCreateFile 来获取...

qq_41071646的博客 1016

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

编译内核模块的Makefile

编译内核模块的Makefile中的($(KERNELRELEASE),)是什么意思? 在编译内核模块时, 如有Makefile文件如下: ifneq ($(KERNELRELEASE),) param-objs := file1.o file2.o obj-m := param.o else KDIR := /lib/modules/2.6.18-53

ermuzhi的专栏 8821

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

高级Bootkit:Tophet.a

高级Bootkit:Tophet.a 摘要: 本文揭示了一种新型的Bootkit技术:Tophet,以及其第一代范本Tophet.a使用的一些新颖的技术。Tophet.a并非病毒或木马,只用来演示高级的启动、穿透与隐身技术。 Bootkit是更高级的Rootkit,该概念最早于2005年被eEyeDigital公司在他们的“BootRoot"项目中提及,该项目通过感染MBR(

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 1510

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

C++ 入门笔记(十七):list 入门 —— 为什么 list 不能 sort?

第17课:用大白话讲清 list 的双向链表结构、哨兵头、push_back 四步、迭代器封装、merge 与 splice 的区别,以及 vector 排序为什么常比 list 快。

wo_jack的博客 251

【C++】【STL】list_OJ题

本文系统解析了8道C++链表经典OJ题,按“算数操作”与“指针重连”分为两组,强调指针操作与数据结构解耦的重要性。通过手写ListNode、std::list及带头双向循环链表三类载体验证算法普适性,重点剖析空链、单节点、全相同值等6类边界情况,并给出统一编译与调试方案(g++11 + -Wall -O2),确保零告警、可追踪。所有题目时间复杂度均为O(N),常数差异源于遍历次数与操作开销,代码实现兼顾正确性与面试可用性。

这里是Cocatrice的博客,感谢大家一直以来的支持和鼓励,如果对C/C++方向感兴趣的话,可以通过主页的微信名片加Cocatrice的好友,也可以通过邮箱:Chen31980094@163.com 联系,一同加油! 2197
上一篇: U盘病毒及其相关资源的分析(patch shell32.dll)
下一篇: RING3内存清零结束进程
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值