随笔分类 - 驱动开发入门笔记
摘要:1 stdafx.h 头文件代码 2 3 #ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. 4 #define _WIN32_WINNT...
阅读全文
摘要:typedef struct _STRING { USHORT Length; //字符的长度,单位是字节 USHORT MaximumLength; //整个字符串缓冲区的最大长度 PCHAR Buffer; //缓冲区的指针 } ANSI_STRING, *PANSI_STRING;typ...
阅读全文
摘要:1. 创建关闭注册表项NTSTATUS ZwCreateKey( OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, //访问权限,一般为KEY_ALL_ACCLESS IN POBJECT_ATTRIBUT...
阅读全文
摘要:KeInitializeSpinLock 初始化自旋锁KeAcquireSpinLock 申请自旋锁KeReleaseSpinLock 释放自旋锁如果在DISPATCH_LEVEL 级别申请自旋锁,不会改变IRQL级别。这时,申请自旋锁可以简单的使用KeAcquireSpinLockAt...
阅读全文
摘要:1.文件的创建对文件的创建或者打开都是通过内核函数ZwCreateFile实现的。和Windows API类似,这个内核函数返回一个文件句柄,文件的所有操作都是依靠这个句柄进行操作的。在文件操作完毕后,要关闭这个文件句柄。NTSTATUS ZwCreateFile( OUT PHANDL...
阅读全文
摘要:KeGetCurrentIrql 获取当前IRQL级别KeRaiseIrql 提高IRQL级别KeLowerIrql 恢复IRQL级别
阅读全文
摘要:unsigned long重定义为ULONG。unsigned char重定义为UCHAR。unsigned int重定义为UINT。void重定义为VOID。unsigned long *重定义为PULONG。unsigned char * 重定义为PUCHAR。unsigned int *重定义...
阅读全文
摘要:PsGetCurrentProcess 得到当前进程结构 返回PEPROCESS数据结构NtCurrentProcess 得到当前进程句柄IoGetCurrentProcess 得到当前线程 该函数会得到一个PEPROCESS数据结构 记录进程的信息,其中包括进程名。线程PsCreateSyste...
阅读全文
摘要:IoAttachDevice 绑定设备对象IoAttachDeviceToDeviceStack 绑定设备对象 比如原来的链是 Fido1---Fido2---pdo 那么我将deviceObject绑定到pdo上后,就成了 deviceObject----Fido1----Fido2--...
阅读全文
摘要:OpenSCManager 打开SCM管理器CloseServiceHandle 关闭句柄CreateService 创建服务OpenService 打开服务ControlService 控制服务服务StartService 开启服务DeleteService 卸载服务(要先关闭服务)
阅读全文
摘要:NTSTATUS CreateMyDevice(IN PDRIVER_OBJECT pDriverObject){ NTSTATUS status; PDEVICE_OBJECT pDevObj; PDEVICE_EXTENSION pDevExt; //创建设备名称 ...
阅读全文
摘要:DeviceIoControl 发送控制代码到指定设备驱动程序参数解释:hDevice Long,设备句柄dwIoControlCode Long,应用程序调用驱动程序的控制命令,就是IOCTL_XXX IOCTLs。lpInBuffer Any,应用程序传递给驱动程序的数据缓冲区地址。nInBu...
阅读全文
摘要:IRPTrace工具跟踪IRP派遣函数(Dispathc Funtion)是windows驱动中的重要概念。驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的。用户模式下所有对驱动程序的I/O请求。全部由操作系统转化为一个叫做IRP的数据结构,不同的IRP数据会派遣到不...
阅读全文
摘要:NtLoadDriver 服务控制管理器加载设备驱动.NtUnloadDriver 服务控制管理器支持卸载指定的驱动程序.NtRegisterNewDevice 加载新驱动文件.NtQueryIntervalProfile 返回数据.NtSetIntervalProfile 指定采样间隔.NtSta...
阅读全文
摘要:IoInitializeTimer 初始化定时器IoStartTime 开启定时器IoStopTimer 停止定时器回调函数VOID IoTimer( __in struct DEVICE_OBJECT *DeviceObject,__in_opt PVOID Context) IN PD...
阅读全文
摘要:typedef struct DECLSPEC_ALIGN(MEMORY_ALLOCATION_ALIGNMENT) _DEVICE_OBJECT{ CSHORT Type; USHORT Size; LONG ReferenceCount; /*指向驱动程序中驱动对象的指针...
阅读全文
摘要:KeInitializeTimer 初始化定时器KeInitializeTimerEx 初始化定时器KeSetTimer 开启定时器(只执行一次)KeSetTimerEx 开启定时器(可以设置循环)KeInitializeDpc 初始化DPC对象 KeCancelTimer 取消定时器在驱动中是以1...
阅读全文
摘要:typedef struct{PDEVICE_OBJECT DeviceObject; //指向驱动程序创建的设备对象PUNICODE_STRING HardwareDatabase; //记录的是设备的硬件数据库名,这里同样用Unicode字符串记录PFAST_IO_DISPATCH FastIo...
阅读全文

浙公网安备 33010602011771号