![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Windows
myjalo
这个作者很懒,什么都没留下…
展开
-
在实现反射内存卡驱动程序DMA完成中断死机蓝屏纠结N天的一个低级BUG
由于GE的反射内存卡对中国实施禁运,看到了市场将来可能会不错,公司接了研究这款产品开发单,硬件由硬件工程师负责,本人负责软件从应用层一直到驱动层的全部研发任务,通过对GE产品的公开的资料反复研究,一共近70个函数接口,现在都搞明白了,由于GE产品光盘手册开源了Linux和VxWorks平台的全部软件代码,唯独不开源windows平台的动态库驱动程序代码,现在只好通过理解GE反射内存卡的Linux平原创 2013-11-22 00:40:55 · 1283 阅读 · 1 评论 -
多PCI卡设备的WDM驱动安装时内存资源不够的问题
今天在调试反射内存PCI卡,PC机内存是2G的,在PCI总线插槽上插三块同样的板卡,由于在系统启动阶段将每个板卡BAR3映射到主机内存的连接物理内存为128Mbit,三块卡所占的内存资源就是128*3=384Mbit,然而接下来要为每个板卡各安装一次驱动程序,驱动中为DMA通信时用AllocateCommonBuffer函数申请128Mbit的连接物理内存空间,这样分别将三块板卡安装完驱动后所占的原创 2013-10-21 19:36:13 · 1364 阅读 · 1 评论 -
可以替代设备管理器的DevCon.exe
DevCon实用工具是一种命令行实用工具,可以替代设备管理器。使用 DevCon,您可以启用、禁用、重新启动、更新、删除和查询单个设备或一组设备。DevCon 提供与开发人员有关但无法在设备管理器中看到的信息。您可以将 DevCon 用于 Windows 2000、Windows XP和Windows vista。不能将 Devcon 用于 Microsoft Windows 95、W转载 2014-01-19 23:28:32 · 195 阅读 · 0 评论 -
XP64跟XP的差別
同仁的疑问与同行们的回答:想請問一些很基本的問題關於XP64跟XP的差別順便整理一下自己最近做的工作與思考方向基本上以及理論上XP64應該是可以相容32的的driver我也看過一些資訊與自己的實際操作它會放到program file(x86)這個資料夾內我的想法是若在XP上可以使用那應該也會相容於XP64所以我將原本可以在XP上執行的driver也灌到XP64結果是转载 2014-02-17 18:25:34 · 448 阅读 · 0 评论 -
GetLastError返回代码含义
〖0〗-操作成功完成。〖1〗-功能错误。〖2〗-系统找不到指定的文件。〖3〗-系统找不到指定的路径。〖4〗-系统无法打开文件。〖5〗-拒绝访问。〖6〗-句柄无效。〖7〗-存储控制块被损坏。〖8〗-存储空间不足,无法处理此命令。〖9〗-存储控制块地址无效。〖10〗-环境错误。〖11〗-试图加载格式错误的程序。〖12〗-访问码无效。〖13〗-数据无效转载 2014-03-09 23:18:03 · 459 阅读 · 0 评论 -
关于IoAllocateMdl,MmProbeAndLockPages以及MmBuildMdlForNonPagedPool
I/O多数是异步的(如DPC),在执行I/O的过程中用户模式线程在不断切换,所以处理I/O时访问的虚拟地址已不是原先发出I/O请求的线程的地址,那样将发生错误。创建MDL将原先位于用户空间的缓冲区内容映射到系统空间,由于用户模式内存是切换的而系统模式内存对所有进程都是不变的,故不会发生以上问题。转载 2014-04-03 16:21:26 · 1180 阅读 · 0 评论 -
Windows驱动中通过MDL实现用户态与核心态共享内存
Windows驱动跑在核心态(Kernel mode),驱动的调用者跑在用户态。如何使用户态进程与核心态驱动共享内存呢 ?我们知道32位Windows中,默认状态下虚拟空间有4G,前2G是每个进程私有的,也就是说在进程切换的时候会变化,后2G是操作系统的,所以是固定的。既然用户态进程和核心态驱动在同一个进程空间里,是不是只要直接传个内存地址过来,就可以访问了?理论上可以但实际上不行,因为用转载 2014-04-03 17:35:56 · 1496 阅读 · 0 评论 -
安装驱动,出现错误:“名称已用作服务名或服务显示名”
安装驱动,出现错误:“名称已用作服务名或服务显示名” 2011-09-14 10:27:26| 分类:WINDOWS技术 | 标签:|字号大中小 订阅安装无线网卡驱动,出现错误:“名称已用作服务名或服务显示名”。【解决方法】1.打开驱动文件夹,在对应操作系统目录下,找到.inf文件。2.打开.inf文件,按Ctrl+F搜索关转载 2014-01-05 23:01:22 · 2540 阅读 · 0 评论 -
NTSTATUS状态返回码的种类
先保存一下,留日后用到时当手册查看0x00000001: APC_INDEX_MISMATCH0x00000002: DEVICE_QUEUE_NOT_BUSY0x00000003: INVALID_AFFINITY_SET0x00000004: INVALID_DATA_ACCESS_TRAP0x00000005: INVALID_PROCESS_ATTACH_ATTEMPT原创 2013-11-22 10:40:14 · 2249 阅读 · 0 评论 -
内核同步对象
内核同步对象(上) Windows NT提供了五种内核同步对象(Kernel Dispatcher Object),你可以用它们控制非任意线程(普通线程)的流程。表4-1列出了这些内核同步对象的类型及它们的用途。在任何时刻,任何对象都处于两种状态中的一种:信号态或非信号态。有时,当代码运行在某个线程的上下文中时,它可以阻塞这个线程的执行,调用KeWaitForSingleObject或Ke转载 2013-11-21 20:56:51 · 1950 阅读 · 0 评论 -
RFM板卡开发记录
PCI某型号板卡开发备忘录 最后是定位是PCI设备卡的从发出半满中断到板卡驱动程序的中断ISR实际处理这段时间内,可能硬件FIFO就已经溢出了,因为当然前硬件SDRAM缓存听负责硬件设备的同事说才64K,当达到8K时就给上位机发快满中断,按理说64K-8K=56K的时间内驱动程序应该能停止写,但感觉windows的实时性不如VxWorks系统那样有保证,能停止下来写线程序,但最后还是溢出了原创 2013-12-08 13:10:00 · 357 阅读 · 0 评论 -
驱动开发中使用安全字符串函数
一、前言 大量的系统安全问题是由于薄弱的缓冲处理以及由此产生的缓冲区溢出造成的,而薄弱的缓冲区处理常常与字符串操作相关。c/c++语言运行库提供的标准字符串操作函数(strcpy, strcat, sprintf等)不能阻止在超出字符串尾端的写入。 基于Windows XP SP1以及随后的操作系统的Windows DDK版本提供了安全字符串函数(safe stri转载 2013-12-08 19:26:04 · 395 阅读 · 0 评论 -
WINDOWS操作系统中可以允许最大的线程数
默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。 你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一些线程。 如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程。 即使物理内存再大,一个进程中可以起转载 2013-12-14 16:05:06 · 318 阅读 · 0 评论 -
fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h
错误描述:fatal error C1010: 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include "stdafx.h"”?错误分析: 此错误发生的原因是编译器在寻找预编译指示头文件(默认#include "stdafx.h")时,文件未预期结束。没有找到预编译指示信息的头文件"stdafx.h"。 (因为工程中的每个cpp文件属性默认都是使转载 2014-12-23 12:04:05 · 519 阅读 · 0 评论