2020年1月1日
准备双目摄像头: 准备标定板 标定的开始阶段最需要用到的标定板,可以直接从opencv官网上能下载到: http://docs.opencv.org/2.4/_downloads/pattern.png 具体如下: 然后,建议固定到盒子上,方便等下拍照。 采集图片 建议左右摄像头,同时拍照,分别保存起来,可以参考 opencv 双目摄像头拍照 保存大约20到30张图片,MATLAB2016的这个工具十分……
阅读全文
2019年12月30日
1 简介 在应用层利用SetThreadPriority等API设置线程优先级是受到进程优先级限制的,所以本节就计划通过编写一个驱动程序和应用程序相结合突破这种限制。本节代码放在了Github上访问此链接 2 驱动程序初始化 先按照上一节的介绍来了解一下创建一个驱动程序的基本流程:入口函数……
阅读全文
2019年12月29日
1. 内核编程一般准则 用户编程和内核编程之间的差别 1.1 未处理的异常 在用户模式下如果程序出现未处理的异常,整个程序会直接中止;在内核模式下出现未处理的异常,会造成系统奔溃,出现BSOD(蓝屏)。所以内核代码得非常小心,编译时绝对不能跳过任何细节和错误检查。 1.2 终止 当用户进程终止时不管是否正……
阅读全文
2019年12月28日
1.安装VisualStudio2019 2.安装WindowsDriverKit 3.创建项目 4.添加代码 // driver.c #include <ntddk.h> // DriverEntry Routine DRIVER_INITIALIZE DriverEntry; // Unload Routine DRIVER_UNLOAD DriverUnload; // DriverEntry: 驱动程序的入口点 // DriverObject: 驱动程序对象 // RegistryPath: 注册表中的路径(驱动程序路径) NTSTATUS DriverEntry( _In_ PDRIVER_OBJECT DriverObject, _In_ PUNICODE_STRING RegistryPath ) { // 编译器默认的警告等级为 /W4, // 并且开启 /WX 将警告视为错误……
阅读全文
2019年12月27日
1.1 进程 进程拥有的内容: 一个可执行程序。包含用来在进程中执行的原始的代码和数据(PE格式的文件)。 一段虚拟地址空间。进程中的代码不管出于何种目的要分配内存时,都从这里分配。 一个主令牌。它是一个保存进程默认安全上下文的对象,在进程内执行代码的线程会用到它,除非某个线程通过身份扮演(i……
阅读全文
2019年12月24日
同步异步的两种用法 FILE_FLAG_OVERLAPPED异步打开参数 在CreateFile打开设备对象时 HANDLE CreateFile( LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, //FILE_FLAG_OVERLAPPED HANDLE hTemplateFile ); 加入FILE_FLAG_OVERLAPPED参数就是以异步的方式打开驱动的设备对象 与驱动通讯时如下的调用界面及异步结构,需要设置一个OVE……
阅读全文
2019年12月23日
1. windows内核对象 每个对象都有对象头和对象体组成。所有类型的对象头结构都是相同的,而结构体部分却各不相同的。下面是内核对象的结构图: 进程句柄表 dt nt!_EPROCESS +0x000 Pcb : _KPROCESS +0x06c ProcessLock : _EX_PUSH_LOCK +0x070 CreateTime : _LARGE_INTEGER +0x078 ExitTime : _LARGE_INTEGER +0x080 RundownProtect : _EX_RUNDOWN_REF +0x084 UniqueProcessId : Ptr32 Void +0x088 ActiveProcessLinks : _LIST_ENTRY +0x090 QuotaUsage : [3] Uint4B +0x09c QuotaPeak : [3] Uint4B +0x0a8 CommitCharge : Uint4B +0x0ac PeakVirtualSize : Uint4B +0x0b0 VirtualSize : Uint4B +0x0b4 SessionProcessLinks : _LIST_ENTRY +0x0bc DebugPort : Ptr32 Void +0x0c0 ExceptionPort : Ptr32……
阅读全文
2019年12月20日
什么是派遣函数? 派遣函数是 WIndows 驱动程序中的重要概念。驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的。也就是说,派遣函数是用来处理驱动程序提交过来的 I/O 请求。 那什么是 I/O 请求呢? 上层程序与驱动程序之间通信时,上层会发出I/O请求,即输入输出请求包(I/O……
阅读全文
2019年8月30日
A trip through the Graphics Pipeline 2011 是发布在博客 http://fgiesen.wordpress.com 上的系列文章。主要涉及图形流水线在GPU中实现的方方面面。包括D3D/OpenGL app, UMD Driver, KMD Driver, GPU 硬件流水线设计等等。是非常好的学习图形学应用,GPU驱动等相关领域的资料。翻译的目的一方面是对学习的总结;另一方面是为了分享,因为国内在图形学, GPU相关的资……
阅读全文