jjzjj

windows - 键盘筛选器驱动程序卸载BSOD

我已经开发了一个键盘过滤驱动程序,可以将键盘按钮“1”(位于q按钮上方)更改为“2”。这个司机工作得很好。但是,在执行卸载后,按键盘按钮会导致bsod。如果在不按键盘按钮的情况下加载和卸载驱动程序,将正常卸载。当我用windbg检查它时,即使在卸载了驱动程序的readCompletion()函数之后,它也会被调用。我不知道为什么会发生这种情况,即使我已经调用了iodetachdevice()和iodeletedevice()。此外,加载驱动程序后,如果按开头的键盘按钮“1”,则不会更改为“2”。然后变化很好。我不知道这和什么有关。我希望你能找到解决这个问题的办法。请回答我的问题。下面是

windows - 插入USB设备时自动加载驱动程序

我在WindowsXP下使用受限用户帐户,在获取Adaptoid(最令人垂涎​​的N64Controller->USB适配器,因为它支持发送原始N64Controller命令+事实上它已经停产)才能顺利运行:安装时,随附的软件需要管理员权限才能加载驱动程序。据推测,通过向驱动程序的INF文件添加一些内容(wishna1.inf),可以安排在插入Adaptoid时自动加载驱动程序:问题是,什么东西?(如果驱动程序可以在任何尝试打开\Device\Wish_NA1时自动加载,或者甚至在每次启动时自动加载它,那也很适合我,真的,但是在插入时执行它似乎是正确的方式。)注意:我确实可以访问管理帐

windows - stdio 的 printf 和 Windows 驱动程序

我想在驱动程序代码(DDK)中使用“printf”,因此我包含了stdio.h。但是编译器说:errorLNK2001:unresolvedexternalsymbol__imp__printf有什么想法吗?我在某处看到这是不可能的——但这太糟糕了——我不敢相信。为什么我不能在内核代码中使用标准C例程?像printf这样的C函数来自一个静态的cstd.lib或什么AFAIK不是吗?为什么WDK会为我提供stdio.h? 最佳答案 Windows内核仅支持部分标准C运行时。特别是,不支持高级功能(如文件流、控制台I/O和网络)。相反,

c - Windows Driver 时间戳函数

我正在修改现有的Windows内核设备驱动程序,我需要在其中捕获时间戳。我打算使用time.h库并调用clock()函数来获取它,但是在windowsvisualstudio下,链接失败了。所以我把它当作我需要在驱动程序库中工作的一种方式。我找到了以下函数,KeInitializeTimer和KeSetTimerEx,但如果我计划设置定时器并在其上唤醒,则会使用这些函数。我真正需要的是能给我一个时间戳的东西。有什么想法吗? 最佳答案 我正在用答案更新我的问题,以便其他人从我的发现中受益。要获得时间戳,您可以使用KeQueryTick

windows - windows如何唯一识别一个USB设备?

即使从USB设备提供的设备数据对于该品牌的所有设备都是通用的,Windows如何唯一地识别USB设备?换句话说,Windows可以区分同一型号的戴尔键盘的两个实例,而无需键盘提供任何唯一的序列号。初始化USB设备时windows搜索的独有数据字段是什么? 最佳答案 Windows使用DeviceInstanceID用于识别。正如您在文档中看到的那样,它包含一个设备部分和一个实例部分。设备部分取自USB设备。如何生成实例部分取决于总线驱动程序。总线驱动程序不能仅仅依赖从usb设备返回的信息。因为两个相同的设备会破坏系统-设备实例ID必

windows - 为什么我们可以在 DISPATCH LEVEL 或更高级别从非分页池访问内存

据我所知,如果IRQL级别是分派(dispatch)的,那么您可以从非分页池访问内存。如果我们将尝试从分页池访问内存。只是想知道为什么? 最佳答案 "whywecanaccessmemoryfromnonpagedpoolatoraboveDISPATCHLEVEL"是一个陈述,问题是为什么我们不能从分页池IRQL>=DISPATCH_LEVEL访问内存?嗯..."AnyroutinethatisrunningatgreaterthanIRQLAPC_LEVELcanneitherallocatememoryfrompagedpoo

Windows 驱动程序中的 C++

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我正在编写一个简单的WDM驱动程序,我想在其中使用C++类。我的问题是我不确定应该将编译后的文件链接到哪个lib文件。链接到msvcrt会创建对ntdll.dll的依赖,这在内核模式下当然无法满足。如果不链接到msvcrt,则没有新/删除运算符-我会收到链接错误。如何为我的驱动程序启用C++功能?

windows - 创建Windows驱动程序以访问网络存储

我正在开发一个应用程序,它需要管理(访问、创建、写入、读取)远程服务器上的文件,并将存储作为虚拟驱动器/卷装载到计算机上的指定位置(例如h:),例如本地usb设备。在linux上,可以使用fuse来做这样的事情。但是,在windows上,没有等价的,唯一的方法是使用驱动程序。所以我开始使用wdf创建一个驱动程序,但我一开始就被inf文件和满足我需要的最小代码调整所困扰。我看了很多官方的驱动程序示例(如nonpnp示例)和许多互联网上的各种资源(如OSROnline),但我没能完成这项工作。我所遵循的步骤为了启动驱动程序项目,我在visualstudio2013中创建了一个内核模式驱动程

c - 如何将整数转换为 LARGE_INTEGER

如何将整数转换为LARGE_INTEGER?例如,当我想立即触发一个定时器时:LARGE_INTEGERzero;zero.QuadPart=0;KeSetTimer(pTimer,zero,pDpc);有什么方法可以将0转换为LARGE_INTEGER?所以我可以这样做:KeSetTimer(pTimer,(SomeType)0,pDpc);我试过:KeSetTimer(pTimer,(LARGE_INTEGER)0,pDpc);但它不起作用。我用Google搜索过,但找不到任何帮助。 最佳答案 LARGE_INTEGER是一个结

windows - 添加或扩展windows下的文件系统支持

我看过MacDrive7为硬盘驱动器和CD添加HFS+和HFS支持,包括处理mac分区格式等问题。显然,这一定意味着Windows中的文件系统支持可以以某种方式扩展,即使它很慢。那么有人可以从哪里开始为Windows编写一个简单的(或不是)文件系统驱动程序呢?我在谷歌搜索时遇到了很多麻烦,因为这些都是常用词。 最佳答案 您需要WindowsDriverKit(WDK)。InstallableFileSystemKit这是WDK的一部分,应该可以帮助您入门。祝你好运! 关于windows-