标签: driver

编写键盘设备驱动程序

我想知道是否有人有编写键盘设备驱动程序的经验.我知道键盘中断如何工作的基础知识然而并不真正了解所有内容的细节.它困难吗?一个人太难了?

我问这个是因为最近我购买了一个Apple键盘,Windows驱动程序似乎没有识别出很多键.此外,如果你知道一个更简单的解决方案来解决这个问题,除了编写一个驱动程序,我也会很感激.(我已经尝试过SharpKeys,看起来像是一个Windows驱动程序问题,它无法识别某些扫描码)

keyboard driver

20
推荐指数
1
解决办法
2万
查看次数

如何部署基于.inf的驱动程序?

我想用我的安装程序部署基于.inf的USB驱动程序.

我想.inf需要放入%SystemRoot%\inf,但是还有.cat(我猜是WHQL认证?)和.sys文件.我该怎么办?

编辑:已解决,感谢有用的答案.我能够P/Invoke函数,所以我有一个安装后的操作,它运行以下代码:

namespace DriverPackageInstallAction
{
    static class Program
    {
        [DllImport("DIFXApi.dll", CharSet = CharSet.Unicode)]
        public static extern Int32 DriverPackagePreinstall(string DriverPackageInfPath, Int32 Flags);

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            DirectoryInfo assemblyDir = new DirectoryInfo(Application.ExecutablePath);
            DirectoryInfo installDir = assemblyDir.Parent;

            int result = DriverPackagePreinstall(installDir.FullName + @"\Driver\XYZ.inf", 0);
            if (result != 0)
                MessageBox.Show("Driver installation failed.");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

windows-installer driver

19
推荐指数
1
解决办法
9170
查看次数

什么是驱动程序类?(JAVA)

我正在阅读Java教科书,它提到了一个叫做"驱动程序类"的东西.它是什么,它与正常的课程有什么不同?

java oop driver

19
推荐指数
3
解决办法
7万
查看次数

如何在Windows中创建虚拟打印机?

我想为Windows创建一个虚拟打印机驱动程序.我应该从哪里开始?WDK有一些打印驱动程序示例,但我无法使用.MSDN似乎没有太大帮助.

Windows有很多虚拟打印机(大多数是生成PDF),他们是如何做到的?

任何我似乎错过的文档链接都表示赞赏.

谢谢.

windows printing winapi driver postscript

19
推荐指数
1
解决办法
4万
查看次数

原始PDO将IOCTL发送到上层过滤器驱动程序(kbfiltr/moufiltr)以启用/禁用设备

我对驱动程序开发很新,并试图编写一个简单的过滤器驱动程序来启用或禁用键盘或鼠标设备.如果我可以使它工作,我想用它来插入鼠标插入我的笔记本电脑上的触摸板.我意识到可能有软件已经做到这一点,但我真的对设备驱动程序感兴趣,并希望自己学习如何做到这一点.

我正在使用随WDK一起提供的kbfiltrmoufiltr示例,作为上层过滤器驱动程序安装.kbfiltr示例创建一个pdo,可以通过usermode程序枚举和连接.这允许我将IOCTL发送到由KbFilter_EvtIoDeviceControlForRawPdo处理的PDO .但是,当我尝试做任何与过滤器驱动程序相关的事情时,比如调用KbFilter_EvtIoInternalDeviceControl所以我可以做类似的事情

VOID
KbFilter_EvtIoInternalDeviceControl(
    IN WDFQUEUE      Queue,
    IN WDFREQUEST    Request,
    IN size_t        OutputBufferLength,
    IN size_t        InputBufferLength,
    IN ULONG         IoControlCode
    )
    ...
    hDevice = WdfIoQueueGetDevice(Queue);
    devExt = FilterGetData(hDevice);

    switch (IoControlCode) {      
    ...
      case IOCTL_INTERNAL_KEYBOARD_DISCONNECT:
       //
       // Clear the connection parameters in the device extension.
       //
       devExt->UpperConnectData.ClassService = NULL;
       break;
    ...
    }
Run Code Online (Sandbox Code Playgroud)

我得到了一个BSOD.它不是上面的代码,在vanilla示例中,set to null被注释掉,只是调用Kbfilter会导致BSOD.我试图直接在PDO中设置设备扩展,但这也会导致BSOD,可能是因为它是PDO devExt,而不是kbfiltr?

(相关:什么是从BSOD获取堆栈跟踪的好方法?我使用Virtual PC作为我的测试环境和未经检查的XPSP3版本)

我不能直接向驱动程序堆栈发送IOCTL_INTERNAL_KEYBOARD_DISCONNECT(我知道输入设备一次只接受一个连接?)因此需要原始PDO.我真的只需要发送两个IOCTL(启用和禁用),我想我会使用键盘断开连接,因为这些已经定义.

如果我对这些假设有任何错误,请告诉我,我知道我真的是一个菜鸟,但我没有找到很多关于通过PDO进行此类通信的文档.

winapi driver wdk device-driver kmdf

19
推荐指数
1
解决办法
5932
查看次数

签名的INF驱动程序在签名的计算机上运行,​​而不是其他

我公司从Go Daddy 购买了驾驶员签名证书.我用它来签署一个简单的INF文件,它是我们使用微软usbser.sys的一些USB设备的驱动程序.一切似乎都在我签名的Windows 7 64位计算机上运行:如果我右键单击INF文件并选择"安装",那么我看到的第二个警告是显示正确的发布者名称的良好警告:

发布者是正确的

但是,如果我转到另一台计算机(Windows Vista 64位),右键单击INF文件,然后选择"安装",然后我收到此错误消息:

无法验证发布商

这让我觉得我的驱动程序没有正确签名,并且它在我的计算机上看起来很好的唯一原因是因为我在Go Daddy的安装过程中安装了一些root/intermediate/cross证书.我绝对希望我的用户能够看到我们是经过验证的发布者,而无需在他们的计算机上手动安装证书.

INF文件和.cat文件位于同一目录中.

有谁知道为什么会这样,以及我如何解决它?

我怀疑主要问题是我在运行时遇到此错误signtool verify /v pololu.cat(下面有更多详细信息),我还没弄清楚原因:

SignTool错误:已处理证书链,但终止于信任提供程序不信任的根证书.

我的程序的详细信息

驱动程序签名证书是从去爸爸一个新的产品,他们在几个星期前推出.我不完全确定它与代码签名证书有何不同,但价格相同.我按照Go Daddy网站上说明下载并安装证书,但说明与现实完全不符.在步骤1中安装Microsoft Cross证书后,我看到一条红色警告消息说:

在安装证书之前,必须使用Windows Update更新根证书,或者从我们的存储库手动下载并安装根证书.

我不知道该怎么做.我确实从他们的存储库安装了一些GoDaddy根证书,但没有明显区别.

我安装了Windows驱动程序工具包(WDK)的最新版本(8.0),然后安装了适用于Windows 8Windows软件开发工具包(SDK)的最新版本(8.0).这使我可以访问inf2catsigntool实用程序.这两个套件都是在上个月内发布的,所以我们可能会遇到一些新的漏洞.

在一个新目录中,我放了三个文件:

  1. pololu_usb_to_serial.inf,我要签署的INF文件.它很长但很简单; 你可以在这里阅读.此INF文件是独立驱动程序; 我们的驱动程序包中不需要其他文件.这个文件基本上与我们公司多年来成功分发(未签名)的版本相同,但我必须对Inf2Cat进行一些更改才能接受它.
  2. mscvr-cross-gdroot-g2.crt,我从Go Daddy证书库下载的.我相信这是证明微软信任"Go Daddy Root Certificate Authority - G2"的交叉证书,但我不完全确定这是否是正确的证书.
  3. sign_it.bat,我运行的批处理文件进行签名.

批处理文件只包含:

"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\inf2cat" /v /driver:%~dp0 /os:XP_X86,Vista_X86,Vista_X64,7_X86,7_X64,8_X86,8_X64

"C:\Program Files (x86)\Windows Kits\8.0\bin\x86\signtool" sign …
Run Code Online (Sandbox Code Playgroud)

windows driver authenticode inf driver-signing

19
推荐指数
1
解决办法
1万
查看次数

存储和网络设备驱动程序源代码为Nexus 6和三星Galaxy S6

出于大学研究的目的,我正在寻找Nexus 6和三星Galaxy S6源代码的特定部分.特别是,我对"网络"和"存储"驱动程序源代码感兴趣.我访问了三星(据说是开源的)和Motorolla的开发者资源,但无法找到所需的代码.

我在这个网站上也有纯Android源代码,但我想"网络"和"存储"的驱动程序可能是特定于硬件的.

我很难找到上述两个设备的"网络"和"存储"驱动程序.如果我正在寻找的代码是开源的,有人可以告诉我他们所在的位置吗?

android driver device-driver linux-device-driver android-source

19
推荐指数
1
解决办法
463
查看次数

终止受保护的防病毒进程

我正在使用ESet防病毒软件,最近它的GUI前端egui.exe挂起并占用了50%的CPU(即100%的一个核心).令人惊讶的是,即使启用了调试权限,我也发现无法杀死它.

现在我很好奇:他们如何实现这样的防御,有没有办法在没有编写内核驱动程序的情况下杀掉它?

egui.exe进程在常规用户(非管理员)下运行,我尝试使用管理帐户以各种方式终止它.这是我尝试过的.

  • 你无法从任务管理器中删除它
  • 你不能用pskill杀死它
  • 你不能使用进程资源管理器杀死它,也不能将调试器附加到它

然后我开始编程并发现:

  • 在非特权用户下,您可以使用PROSESS_TERMINATE访问权限打开它,但实际调用TerminateProcess()失败,错误为5.

  • 在管理员帐户下,您可以使用您想要的任何访问权限打开它(当然,在启用调试权限之后),但随后调用TerminateProcess(),GetKernelObjectSecurity(),SetKernelObjectSecurity()都会失败并显示错误5.

除了设置进程DACL之外,这肯定指向某种方式,因为如果Terminate不在DACL中,您将无法首先使用PROCESS_TERMINATE打开进程.它们实际上拦截了Win32 API调用吗?如果是,那怎么样?我做了低级系统编程已经有一段时间了,所以请原谅我的无知.

c++ security winapi kernel driver

18
推荐指数
1
解决办法
6260
查看次数

使用C#.net以编程方式安装/卸载.inf驱动程序

我正在使用c#.net创建一个应用程序.它还包含一个文件系统minifilter驱动程序.我想使用c#.net以编程方式安装和卸载此驱动程序.通常我可以使用.INF文件安装它(通过右键单击+按安装).但我想以编程方式安装它.有一个SDK函数InstallHinfSection()用于安装.inf驱动程序.我正在寻找这个功能的.net等价物.

问候

Navaneeth

.net c# install driver

17
推荐指数
2
解决办法
2万
查看次数

适用于Windows 7.0的蓝牙低功耗API

Windows 8公开了一个API以与蓝牙低功耗(智能)设备进行通信,但此API在以前版本的Windows中不可用,因此如何在Windows 7上与BLE加密狗进行通信?

我正在使用的BLE加密狗(BLED112)公开了一个虚拟串口,您可以使用他们的自定义专有API发送命令,但如果我在我的软件中实现它,它将无法与其他制造商的加密狗一起使用.

那么有没有一种方法可以与Windows 7上的BLE设备进行通信,而这些设备是独立于制造商的?

.net bluetooth driver windows-7 bluetooth-lowenergy

17
推荐指数
1
解决办法
3万
查看次数