问题标签 [kmdf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
381 浏览

windbg - WinDBG:如何从 WDFFILEOBJECT 句柄中获取底层 FILE_OBJECT?

我有一个 WDFFILEOBJECT 句柄(0x0000057fedd9b8b8),我想知道它的底层 FILE_OBJECT 地址,以便我可以!object xxxx用来查询 FILE_OBJECT.PointerCount.HandleCount. 我可以使用什么 windbg 命令?

!wdfkd.wdfhandle 0x0000057fedd9b8b8 f0似乎没有提供该信息。

在此处输入图像描述

如果它是 WDFDEVICE 句柄,我知道!wdfkd.wdfdevice可以告诉我底层的 DEVICE_OBJECT,但是 WDFFILEOBJECT 呢?

====== 解决(很多天后)=====

根据snoone的提示,我想通了。实时信息如下:

这一次, FileObject= 0x0000057fede811b8

在此处输入图像描述

我必须先使用!wdfkd.handle 0x0000057fede811b8 f0,因为句柄值 0x0000057fede811b8 不是有效的内核地址,!wdfkd.handle它告诉句柄后面的 KMDF FxObject 的真实内核地址。

0 投票
1 回答
91 浏览

windows - FS 开发 - KMDF Windows 驱动程序

我是新来的,正在尝试为 tar '文件系统'(mount tar)开发一个概念 fs 驱动程序。我的问题是,操作系统如何检测到分区具有 TAR 文件系统并自动加载我的驱动程序?

0 投票
0 回答
216 浏览

driver - 当 Windows 进入“连接待机”时,如何让我的驱动程序暂停我的 USB 设备

我正在尝试使用带有 x86 Windows 10 平板电脑的OSR USB FX2 学习套件,但我发现了与省电有关的问题。

软件环境:

  • WDK10 示例代码kmdf_fx2
  • WDK10 10.0.10240 版本
  • 视觉工作室 2015 更新 1
  • 运行 Windows 10 x64 10586 的平板电脑;powercfg /a显示此平板电脑支持“连接待机”。

我可以看到以下行为。在平板电脑上运行

这使得 EXE 块在同步 ReadFile() 中。然后,点击 Windows 开始标志,执行电源 -> 睡眠,平板电脑屏幕关闭,我相信它已经进入睡眠状态(至少很快就会进入睡眠状态)。

等待 10 秒,OSR FX2 板上的 7 段 LED 一直显示“A”,而不是变成“S”(表示挂起)。再等 100 秒,仍然看到“A”。

'A'表示 SOF 帧在 USB 线上仍然处于活动状态,这对节电非常不利,

相反,如果 USB 键盘连接到平板电脑。让平板电脑休眠将停止 SOF 帧(=USB 暂停,我可以用 Beagle USB 480 USB 分析仪确认这一点)。

我的问题很明确:如何修改 osrusbfx2 驱动程序,以便让平板电脑休眠可以停止 SOF 帧。

一些背景资料:

  • 如果我只是将 OSR FX2 连接到平板电脑但不运行 osrusbfx2.exe ,则 FX2 将在等待 10 秒后挂起,无论桌子是工作还是睡眠。键盘驱动程序如何实现这一点?
  • 在不支持“连接待机”但传统 S1 或 S3 待机的 Windows 系统上,当 Windows 进入睡眠状态时,FX2 将始终挂起。

OSR USB FX2 板在 S0 待机平板电脑进入睡眠状态后一直显示“A”

0 投票
0 回答
1056 浏览

windows - 如何在虚拟机上部署通用 hello world windows 驱动程序 (KMDF)

我找不到解决这个问题的答案。我正在尝试学习 kmdf 驱动程序编程,但尝试在同一台机器上的虚拟机上执行此操作。我有我的 VirtualBox 设置,以便我可以从 Visual Studio 附加到一个进程并使用管道调试内核。我可以闯入等。但是,我不太清楚 hello world 驱动程序应该做什么。我可以安装在构建过程中创建的证书。但是我该如何部署驱动程序,并在虚拟机上对其进行测试。我确实发现虚拟机无法自动部署。

任何帮助将不胜感激。

0 投票
1 回答
1155 浏览

windows - 如何配置 Visual Studio 2015 来开发设备驱动应用程序(KMDF)?

我是设备驱动程序开发的新手,并尝试在我的设备上配置Visual Studio 2015开发KMDF项目windows 7,我也安装Visual Studio 2015, Windows Driver Kit(WDK)10SDK10。在 Visual Studio 中,当我创建WDF->KMDF项目时,项目无法找到"device.tmh"文件和其他对象NTSTATUS,似乎项目正在搜索 KMDF 库或头文件。

安装后WDK10SDK10它会在其中创建“windows kits”文件夹以及“8.0、8.1 和 10”文件夹。

请让我知道我哪里出错或如何设置库路径以删除所有错误。

谢谢。

0 投票
1 回答
286 浏览

visual-studio-2015 - 断点不是每次都能在 vs2015 中的 DriverEntry()/Unload() 函数中命中

我在 DriverEntry() 和 Unload() 函数中设置了多个源代码行的断点。在目标站点的设备管理器中,我不断地操作驱动程序的停止/重启功能,但并非每次都能在 DriverEntry()/Unload() 函数中命中断点。有时断点可以在 DriverEntry()/Unload() 中命中,有时断点不能在 DriverEntry()/Unload() 中命中。即使断点可以命中 DriverEntry()/Unload() 的某个源代码行(假设在 Line10),当按 F5 继续前进时,也可以在下一行 line11 上取消命中,我也设置了断点. 关于上述断点的行为,这在 Visual Studio 驱动程序开发环境中是正常的还是不正常的???谢谢 !

注意:目标计算机安装Windows 10 pro,主机安装Window 8.1 home,使用带有WDK10的visual studio 2015 pro update2通过以太网连接目标和主机笔记本电脑。

0 投票
1 回答
331 浏览

driver - Minispy 驱动程序 - 用户模式调用

在花费数小时安装驱动程序之后,我开始研究 minispy 驱动程序:

Windows-driver-samples/filesys/miniFilter/minispy/

我试图捕捉用户打开文件的所有调用。我试图用它打印的所有参数(如 Opr、Major Operation ...)来完成它,但我无法以精确的方式过滤它。

如何仅过滤用户呼叫(打开文件)?如果用户调用了事务,我如何在代码中确定?

非常感谢您的帮助。

0 投票
2 回答
1107 浏览

c++ - KMDF 的多线程 DeviceIOControl

在我提出问题之前,我将回顾一下我目前正在使用的内容,以便您对我已经做过/尝试过的事情有一个不错的了解。

我有一个多线程用户模式 ​​Windows 桌面应用程序,它向 KMDF 驱动程序(纯软件,没有硬件)发出 DeviceIOControl 调用。有 5 个单独的线程不断地对驱动程序进行相同的自定义 IOCTL 调用。该请求包括:

  1. PsLookupProcessByProcessId 获取要从中读取内存的进程。
  2. MmCopyVirtualMemory 将请求的内存复制到提供的缓冲区中。
  3. ObDereferenceObject 减少引用计数。

驱动程序目前正在串行执行此操作,而我的用户模式应用程序的主要瓶颈是等待内存读取完成,并且在场景可以“渲染”之前一切都需要完成。

我已经尽可能地减少了 DeviceIOControl 请求的数量,所以现在我一直在研究重叠的 IO 并允许每个线程异步发送请求。我的问题是这是否值得尝试,因为我不知道是否可以在驱动程序中使用多个线程同时从不同地址读取。

0 投票
0 回答
95 浏览

visual-studio-2010 - Microsoft Visual Studio 2010 Professional 和 wdksetup for wdk8.1

我已经为 wdk8.1 安装了 Microsoft Visual Studio 2010 Professional 和 wdksetup,但在“新建项目”对话框中找不到“Visual C++ > Windows 驱动程序 > WDF”。我必须开发一个微过滤驱动程序。引导我迷路

0 投票
1 回答
36 浏览

registry - 为什么内核驱动程序在抛出异常时无法更新注册表值?

这是一个测试 KMDF 项目。它的功能是读写注册表。

情况1:

1.读取注册表值并将值写入注册表

2.检查windows中的注册表,更新值。

案例2:

1.读取一个注册表值并将一个值写入注册表,最后添加异常。启动窗口时发生蓝屏

2.删除异常,启动窗口,检查注册表,值未更新。

这些是我使用的异常代码。

我尝试了两个注册表路径。

HKEY_LOCAL_MACHINE\SOFTWARE\DELL\test(正常路径)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TEST(服务路径)