Articles of 驱动程序

位于Windows中的vedor的OpenGL驱动程序在哪里?

我将尝试在Windows 10中使用OpenGL现代驱动程序来实验C#,并试图find它。 据我Openg32.dll ,位于%systemroot%\system32的标准驱动程序Openg32.dll是一个旧的,似乎是来自微软,是吗? 我得出这个结论,因为使用了下一个命令: dumpbin opengl32.dll /exports 并发现function: 11 A 00090330 glBegin 我记得,这个函数glLoadIdentity, glMultMatrix, glTranslate, glRotate被弃用,不包括OpenGL3.2 +,因为你必须做自己的matrix和math着色器。 OK,我开始在NVidia目录(我的显卡厂商是NVidia) C:\Program Files\NVIDIA Corporation ,但是只findOpenCL驱动C:\Program Files\NVIDIA Corporation\OpenCL : OpenCL.dll OpenCL64.dll 他们中的任何一个都可以通过dumpbin /exports完美转储。但是我不能在这里findOpenGL驱动。 也许它有一些特定的名称,如nvdisps.dll或其他? PS(如果你问我一下) 我知道,更推荐使用C ++这个东西 我不想使用已经完成的库 我想P/Invoke东西,只是尝试用C#

限制对进程的pipe道访问权限(Windows)

是否有可能通过进程限制对命名pipe道的访问(图像名称或进程ID将工作)? 这里的上下文是一个Filter Minidriver,它必须与用来执行大部分业务逻辑的用户空间服务进行通信。 由于这个通信是安全敏感的,我想保护它免受外部干扰,而默认情况下,似乎由驱动程序创build的命名pipe道可以通过知道pipe道名称的任何用户空间进程进行通信(这通过静态或dynamic分析发现是微不足道的)。 这是我已经知道的:pipe道是Windows中的安全对象,因此它们具有安全描述符。 这个安全描述符可以包含一个DACL,它应该限制对象的访问。 我已经广泛地search了有条件的ACE的文档和例子,我希望能够做我想做的事情,但是我没有find任何相关的东西。 编辑 :我已经接受MSalters的答案。 一般认为SYSTEM == ring0和驱动程序的代码签名看上去很重要, SYSTEM可以很容易地禁用代码签名,所以不需要从SYSTEM到ring0权限升级 – 它们已经是相同的了。 另一方面,即使默认的安全描述符(在微filter驱动程序上下文中,请参阅FltBuildDefaultSecurityDescriptor )也包含一个限制,以便只有SYSTEM和Administrators才能访问该对象,因此不需要进一步的操作(或者可能,看来)。

通过pnputil安装驱动程序

我试图通过NSIS像安装 .inf文件( 在NSIS脚本中安装驱动程序 )。 安装本身工作顺利,但Windows安装驱动程序与其内部发布的名称 (增量编号oemxxx.inf)。 我怎样才能得到pnputil.exe发布的名称作为返回值(供以后使用)?

触摸板的绝对触摸坐标

是否可以直接从阿尔卑斯触摸板读取input? 我想把我的触摸板变成一个便宜的绘图平板电脑,所以我需要读取相对于物理触摸板触摸的原始未处理的x和y坐标。 所以如果我触摸触摸板的左下angular,它应该对应于(0,0)等 顺便说一下,我正在试图用Windows来做到这一点。 我已经可以用Synaptics的触摸板做到这一点,但这只是因为Synaptics有一个很好的SDK,可以让我完全控制设备。 我找不到阿尔卑斯山的一个类似的东西。 有无论如何使用Windows API或直接input或其他?

虚拟打印机在Windows中,从哪里开始?

我想在窗口上编写一个程序(或一个驱动程序),可以: – 用户打开打印对话框时在打印机列表中显示 – 显示configuration打印的可选对话框 – 打印到文件 总之,我的需求是非常接近的PDF打印机,可以打印任何文件到PDF文件。 感谢您的回答。

有没有一种方法来模拟Windows键盘驱动程序中的箭头键?

我目前正在为Windows编写一个键盘驱动程序,它提供了一个额外的修饰符,并允许直接键入一些额外的字符。 例如真实的引号(“,”,“,”,…)和一些math符号(ℕ,ℝ,ℚ,ℤ,√,…)。 现在我想提供这样的箭头键。 (alt_gr + e = up; alt_gr + s = left; alt_gr + d = down; alt_gr + f = right) 所以我的问题是,如果有箭头键的Unicode控制字符,我可以在我的aVkToWcharTable中使用,或者可能是另一种解决scheme。 这将是非常有帮助的。

上层设备filter驱动程序的INF安装文件

我正在尝试开发磁盘encryption的过滤设备。 为此我基于diskperf WDK示例devise了一个上层设备filter驱动程序(附在partmgr上方)。 *我成功安装(inf文件)我的filter驱动程序作为一个上级过滤驱动程序(基于diskperf WDK示例),但并不真正了解如何安装它的特定设备。 如果有人可以帮我解决这个问题,或者发布一些文件样本的链接(例如使用HKLM,HKR等等),那就太好了。 非常感谢您的回答,最好的问候,杰罗姆。

解决方法跳过64位窗口中的驱动程序签名

我是个人,而不是公司,我正在研究一个虚拟内核模式设备驱动程序。 我知道,我可以testing签署一个驱动程序,并在testing模式下运行。 不过,我想免费分发我的驱动程序,但是我没有资源通过verisign或globalsign签名签名,因为它非常昂贵,而且我也没有通过这个驱动程序赚取任何东西。 另外testing签署一个驱动程序对于一些用户来说将是一项艰巨的任务。 所以我想知道是否有任何解决方法使用64位的无签名驱动程序? 就像运行32位的兼容性一样,也可以代表用户自行签署驱动程序的脚本。 所以现在的问题实质上是,如果我分配在这个过程中提到的所有exes,并使脚本来运行所有这些命令。 那么驱动程序是否可以由用户使用脚本进行签名? 程序: 1.执行Inf2Cat.exe /驱动程序:“U:\ MyDriver”/ os:7_X64 2.在WDK Makecert中findmakecert.exe -r -pe -ss PrivateCertStore -n“CN = TestCertforWDK”TestCert.cer 3.在WDK中使用Signtool.exe签署文件Signtool sign / v / PrivateCertStore / n TestCertForWDK / t http://timestamp.verisign.com/scripts/timestamp.dll “U:\ MyDriver \ MyDriver.cat” 4.使用WDK中的Signtool.exe签署驱动程序Signtool sign / v / PrivateCertStore / n TestCertForWDK / t http://timestamp.verisign.com/scripts/timestamp.dll “U:\ MyDriver \ MyDriver.sys” 5.在testing计算机上,导入证书:certmgr.exe […]

在Windows重新启动/closures时不调用DriverUnload

我正在用WinDbgdebugging驱动程序。 在DriverUnload函数中,有一个对KdBreakPoint()的调用。 当我从设备pipe理器禁用设备时,WinDbg分解成DriverUnload函数。 但是,当我closures或重新启动Windows(通过开始>关机),debugging器不会中断。 所以问题是:为什么Windows在重启或closures时不调用DriverUnload函数? (顺便说一句:我已经添加了断点到PNP调度函数捕捉IRP_MN_QUERY_REMOVE_DEVICE / IRP_MN_REMOVE_DEVICE / IRP_MN_QUERY_STOP_DEVICE / IRP_MN_STOP_DEVICE ,结果是一样的)

取消驱动程序卸载时的WSK I / O操作

我一直在学习如何用Windows DDK编写驱动程序。 在创build了几个testing驱动程序来testing系统线程和同步之后,我决定把它提升一个档次,然后写一个实际上做些什么的驱动程序,尽pipe有些没用。 目前,我的驱动程序使用Winsock Kernel连接到我的另一台计算机,只是循环并回送我发送给它的任何内容,直到获得命令“exit”,这导致它跳出循环。 在我的循环中,我调用WskReceive()从另一台计算机获取一些数据后,使用KeWaitForMultipleObjects()等待两个SynchronizationEvents中的任何一个。 根据我的IRP的CompletionRoutine()来设置BlockEvent,让我的线程知道它从套接字接收到了一些数据。 EndEvent通过我的DriverUnload()例程来设置,告诉线程它正在被卸载,并且需要终止。 当我发送“退出”命令,线程终止没有问题,我可以安全地卸载司机后。 如果我在尝试停止驱动程序的同时还在等待来自其他计算机的数据,则会显示以下错误信息: DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS 我得到EndEvent之后,但是在我退出循环之前,我试着用IoCancelIrp()取消IRP并用IoCompleteRequest()完成,但是这两个都给我DRIVER_IRQL_NOT_LESS_OR_EQUAL错误。 然后我试着调用WskDisconnect() ,希望这会导致接收操作完成,但是这又把我带回到CANCELLING_PENDING_OPERATIONS错误。 我如何取消我的WSK套接字的我挂起的I / O操作在我正在运行在驱动程序卸载时的IRQL?