Articles of 驱动程序

HidD_GetAttributes如何从设备对象中检索属性?

我正在为Windows 10创build一个虚拟HID设备。为了准备写驱动程序,我一直在分析这里提供的示例: https : //github.com/Microsoft/Windows-driver-samples/tree/ master / hid / vhidmini2 。 在文件app / testvhid.c中,HidD_GetAttributes用于检索HID设备的属性。 看起来这些属性是在driver / vhidmini.c中初始化的(EvtDeviceAdd函数中的hidAttributes)。 然而,hidAttributes被存储在一个DEVICE_CONTEXT结构里面,(从我的理解)是由驱动程序定义的。 如果hidAttributes是用户定义的属性,那么HidD_GetAttributes如何知道从设备中检索它? 我试图通过创build一个基于大多数样本给定的KMDF驱动程序来为自己复制这个。 相关的驱动程序代码如下所示(其中大部分代码来自示例,除了调用WdfDeviceCreateDeviceInterface外): NTSTATUS kmdfTest2CreateDevice( _Inout_ PWDFDEVICE_INIT DeviceInit ) { WDF_OBJECT_ATTRIBUTES deviceAttributes; PDEVICE_CONTEXT deviceContext; WDFDEVICE device; NTSTATUS status; PHID_DEVICE_ATTRIBUTES hidAttributes; WdfFdoInitSetFilter(DeviceInit); WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&deviceAttributes, DEVICE_CONTEXT); status = WdfDeviceCreate(&DeviceInit, &deviceAttributes, &device); if (NT_SUCCESS(status)) { deviceContext = DeviceGetContext(device); deviceContext->Device = device; […]

远程计算机设置失败:无法创build目录

我正在尝试使用运行Windows 10的主机(x86)笔记本电脑和x64桌面目标来debugging设备驱动程序。 我按照说明在笔记本电脑上从Visual Studio Community 2015configuration目标。 它会在目标上创build并打开一个WDKRemoteUser帐户。 主机然后报告它不能创buildC:\ DriverText \ Setup和设置失败。 看着目标电脑,我可以看到C:\ DriverText \ Setup确实已经被创build,似乎有相关的权限。 该驱动器具有千兆字节的可用空间。 有什么错误的build议? 主机日志的开始如下(我假设第一个错误后的其余部分是不相关的): 名称:安装驱动程序testing组件path:C:\ Users \ Peter \ AppData \ Roaming \ Microsoft \ WDKTestInfrastructure \ InfrastructureTaskGroups \ Install驱动程序testingComponents.xml目标计算机:新计算机安装驱动程序testing组件:主计算机:PETER-10-LAPTOP安装驱动程序testing组件:主机架构:x86安装驱动程序testing组件:主机64位操作系统:假安装驱动程序testing组件:主机操作系统版本:10.0.10586.0安装驱动程序testing组件:进程pipe理员权限:False进度事件:当前:1,最大:14,消息:“”进度事件:当前:1,最大值:14,消息:“复制所需文件”[15:31:35:936]:复制所需文件[15:31:35:947]复制所需文件“被中止,因为执行期间目标机器上发生错误。 从主机复制文件时目标机器发生错误。 错误代码:0错误消息:无法创build目录:C:\ DriverTest \ Setup。 进度事件:当前:1,最大:14,消息:“任务”复制所需文件“被中止,因为执行期间目标机器上发生错误。 从主机复制文件时目标机器发生错误。 错误代码:0错误消息:无法创build目录:C:\ DriverTest \ Setup。“任务结果状态更新:中止结果已完成testing过程退出代码:0

WiX驱动程序元素是否被弃用?

由于DIFx指南指出:“ 驱动程序安装框架(DIFx)工具已从Windows 10版本1607 WDK中移除 ”,并且WiX驱动程序元素依赖于WixDifxAppExtension,因此使用驱动程序元素仍然是安装的方式一个司机? 或者我应该直接使用SetupAPI (例如作为一个在MSI中调用的DLL )?

为什么不能configuration一个xps驱动程序的redirect端口

我安装了Redmon 1.9。 我正在尝试configuration基于XPS的打印机驱动程序到redirect端口,但出现以下错误: 但是对于其他基于Unidrv和Postscript的驱动程序来说,它工作正常。 我如何添加一个XPS驱动程序的redirect端口?

MSVAD虚拟驱动程序丢失audio数据包在MS Windows 10 1703呈现

我在WDK 8.0的MSVAD的基础上编写了一个虚拟audio驱动程序。 司机工作在MS Win XP,Vista,8.x和10。 但是在Windows Creators Update(1703)开始之后,我注意到一个声音开始丢失,并且落后于我的驱动程序。 我做了一些研究,并检测到以下内容:驱动程序复制的audio数据less于我的预期。 例如: CMiniportWaveCyclicStreamMSVAD :: CopyTo()收到1920个字节,CMiniportWaveCyclicStreamMSVAD :: CopyFrom()在输出中发送较less的audio数据(1764)。 为什么???? 请任何想法!

Memory&Disk有哪些不同的地方?

我不确定如果这是一个正确的地方问,也不知道如何把我的查询。 让我这样说吧: 主内存从0x00000到0xFFFFF。 磁盘空间从0x00000000开始到0xFFFFFFFF。 但是我们能够访问的内容不会是从第0字节到最后一个字节的权利? 硬盘上,我猜在第0个字节,我们有MBR。 &在某个地方我们有文件系统(我们只能访问这个)。 还有什么? 与主内存类似。 我们有一些内核内存和用户内存(每个进程都在其中)。 还有什么? 我的问题是从第0字节到最后一个字节的所有区域是什么? 我不知道要search什么或在哪里find这样的信息? 如果任何人可以张贴一些链接,这将是伟大的。 编辑: 我在Windows上使用x86 32位。 其实我正在读一本关于计算机安全的书,作者提到恶意软件可以存在于磁盘或内存中(这是非常正确的)。 但是当我们说计算机感染并不意味着只有文件(文件系统的一部分)被感染。 还有其他的区域对于用户来说并不意味着像MBR一样。 或内核内存。 所以,这个问题出现在我的脑海里。 我可能没有意识到的所有这些领域是什么?

使用VS编译器和链接器来构buildWindows驱动程序

当我重新思考使用Visual Studio的编译器和链接器构buildWindows驱动程序的主题时,有两件事情浮现在脑海中: 这是不正式的支持。 事实上,互联网上的共识是,构buildWindows驱动程序的正确方法是使用Windows Driver Kit中包含的编译器,链接器和BUILD工具。 但是,Visual Studio 2008包含/ DRIVER链接程序选项,如下所述: Use the /DRIVER linker option to build a Windows NT kernel mode driver. 它有什么作用? 为什么包含在Visual Studio中,如果使用它来build立驱动程序不推荐? 有用。 我几乎不敢大声说出来,以免引起正义的内核开发者的愤怒,但事实上,使用Visual Studio构build的驱动程序确实可行。 我们在工作场所多年来一直以这种方式build造它们,生产的二进制文件已经在数百台机器上部署,而且没有任何问题。 但我知道,缺乏证据并不是缺乏证据,至今没有任何问题并不意味着驾驶VS的驾驶员是安全的。 这里真正困扰我的是缺乏信息。 在网上有几个post是使用VS构build驱动程序的人,总是会得到相同的响应 – 不支持,不这样做,通过makefile项目将VSK与VS集成,如果你真的想使用VS的IDE。 但是,我还没有find一个答复,指出你不应该用VS编译驱动程序的具体原因。 那么,有没有人知道如果你使用VS来build立你的驱动程序会发生什么? 有什么可能出错? 在什么情况下? 我知道你必须自己设置所有的编译器和链接器选项,这是好的,但是如果我把它们设置错了,会发生什么? 司机不能编译,否则将无法链接,或如果它build立好,它会直接崩溃,或只有当星星alignment时? 为什么会这样做,是什么原因造成的? 有没有什么理由停止build立我们的司机与VS已经像多年的魅力,除了它没有正式支持的事实? 如果它没有正式的支持,为什么把VSDRIVER开关?

如何让窗户在短时间内冻结

我可以使Windows 7冻结一段时间,在这段时间,我希望它执行绝对没有行动。 特别是,操作系统不应该访问任何存储设备。 我原来的想法是创造一个中断,但是,我认为长时间的中断将导致蓝屏(我想要防止)。

你有没有在x86上使用ObRegisterCallbacks?

我正在尝试使用ObRegisterCallbacks来防止我的应用程序被终止。 在Windows 7的64位系统,它的效果和我的计划一样。 但在Windows 7 x86系统中,存在一些问题。 我必须链接我的驱动程序与/INTEGRITYCHECK链接器选项,或者我不能使用ObRegisterCallbacksfunction。 它返回ACCESS_DENIED 。 但如果我用/INTEGRITYCHECK链接器选项构build它,我无法加载我的驱动程序。 当我调用StartService() ,它返回ERROR_INVALID_IMAGE_HASH 。 当然,我在编译后签了我的驱动程序。 所以我的驱动文件有二进制数字签名。 但是它仍然返回ERROR_INVALID_IMAGE_HASH 。 如果我用x64平台的相同来源构build,它工作正常。 此外,如果我用testing引导模式启动我的PC(x86),它也可以。 我想知道是可以在x86系统上使用ObRegisterCallbacks (而不是testing启动模式)。 任何答复将不胜感激。

如何区分Windows驱动程序与DLL

我需要区分两个二进制文件 – 一个驱动程序和一个普通的dll。 据我所知,我需要查看这个文件的部分(例如通过DumpBin),看看是否有一个INIT部分。 这个标准是否完整?