问题标签 [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.
c++ - DeviceIoControl 后访问冲突错误
我正在尝试将 INOUT_PARAM 发送到我的内核驱动程序,看来我已经成功了。当我尝试对其进行编辑并将其发送回应用程序时,我收到以下错误:
这是应用程序代码:
这是驱动程序 IOCTL 函数:
我似乎无法找到问题所在,任何帮助将不胜感激。
先感谢您。
注意:当我发送没有 wp->RStr = "Test"; 的 INOUT_PARAM 时 它成功地回显了初始值,这意味着驱动程序编辑或读取编辑的内存无法正常工作。
注意 2:仅当我回显/计算 n.RStr PCHAR 值时才会出现错误。
重要提示:如果我有 wp->PID = 6969; 在驱动程序中,然后 echo(n.PID); 它实际上有效......我不知道为什么 PCHAR 会导致问题,但这很可能是它。任何想法如何解决这个问题?
c - 在 WDK 驱动程序中包含 hidpi.h 会导致编译错误
我正在尝试从 Github 上的 Windows 驱动程序示例中修改 KMDF vhidmini2 示例(https://github.com/Microsoft/Windows-driver-samples/tree/97cf8edcaddff4fdbc5cc48d56b7d7eb2c39b749/hid/vhidmini2)。我的一项修改需要包含 hidpi.h 头文件。但是,当我这样做时,会出现编译器错误,其中大部分是:
连同几个:
以及一些语法错误。
为了尝试排除错误,我尝试编译 vhidmini2 驱动程序(工作正常),然后在 vhidmini.h 文件中插入 include 语句(这会导致编译失败)。这是我修改后的 vhidmini.h 文件的包含部分;其余代码保持不变。
顺便说一句,我在这里发现了一个在 Stack Overflow 上发布的类似问题:WDK (Windows Driver Kit) and VC++ headers problem。这个问题的解决方案似乎是告诉 Visual Studio 在加载 SDK 头之前加载 WDK 头。不过,这个问题已经存在几年了,Visual Studio 2015 不允许以同样的方式编辑 VC++ 目录。如果这确实是我的问题的解决方案,那么如何在新的 Visual Studio 中进行此编辑?我试过查看项目的属性表,但格式完全不同。
kernel - Kernel Mode Win10 Driver BSOD,如何在c++中捕捉?
我正在尝试通过内核模式驱动程序读取另一个进程的内存。它正在工作,我将驱动程序注入另一个驱动程序的空间以使其工作(或者可以只启用测试模式)。
但是,它运行良好,但是当给出错误的地址时,我会导致 BSOD。
以下是关于一个示例 BSOD 的信息:
当我将驱动程序注入另一个驱动程序时,无法解析符号等。还有一些额外的信息:
现在我正在做的事情:我给驱动程序 4 个值并有一个全局缓冲区来将读出的值写入:
字符缓冲区[5000];NTSTATUS DevioctlDispatch( In struct _DEVICE_OBJECT *DeviceObject, Inout struct _IRP *Irp ) 我在驱动程序中所做的一切都在多个 __try __catch/__except/__finally 块中,我希望我能抓住错误的读出......我得到了这个过程处理然后将其(在 ProbeForRead 之后)传递给 RtlCopyMemory:
我经常这样做,但无论如何我都确保我分离。
我应该使用 KeStackAttachProcess 吗?蓝屏死机从何而来?我抓错了吗?谢谢!是的,我正在阅读用户空间应用程序。
inf - kdmf pnp驱动安装时找不到设备
我正在尝试创建一个 pnp 驱动程序,但是当我运行时sc start driver-name
出现系统错误 1058(禁用禁用或没有关联的启用设备)。但是,如果我修改 nonpnp 的代码WDF_DRIVER_CONFIG_INIT(&config, WDF_NO_EVENT_CALLBACK);
并且config.DriverInitFlags |= WdfDriverInitNonPnpDriver;
服务启动并且我能够调试。
我已经为通过设备管理器验证的设备尝试了不同的 hwid 值。DriverEntry 运行良好,我使用了 windbg,但从未调用过设备添加函数。
pnp 的驱动程序输入代码。
windows - CreateFileMapping 返回错误 193(%1 不是有效的 Win32 应用程序)
我有一个打开文件然后调用 CreateFileMapping 的用户应用程序。我有一个驱动程序可以创建/打开我跟踪并成功执行的文件。问题是 CreateFileMapping 总是返回错误 193。我已经成功映射到其他文件,所以我认为一定是驱动程序方面的问题。Windows 8.1 x64(驱动程序显然是 64 位)和应用程序也是如此。我已经使用dependency walker来检查任何dll问题,一切似乎都很好。
驱动程序片段:
用户应用程序片段:
编辑1:驱动程序中的文件名是#define DEV_PATH L"\\DosDevices\\C:\\testdisk.txt"
符号链接正在#define DEV_SYMBOLIC_LINK L"\\DosDevices\\testdrive.txt"
使用该功能WdfDeviceCreateSymbolicLink
,我将设备名称设置为#define DEV_NAME L"\\Device\\testdrive.txt"
使用该功能WdfDeviceInitAssignName
编辑 2:我已经更新了设备和文件路径。从用户空间访问文件时,我仍然收到 193 错误\\.\qqdevice\test.txt
,如果我使用C:\qqdevice\test.txt
该文件,则会创建文件,但驱动程序永远不会收到通知。
windows - 使用 WDK 10 构建(在 WDK 7 上)的等效命令
我有一些非常旧的脚本使用 build 命令来编译 WDK 7。构建静态库的示例命令是:
我可以使用什么等效命令来编译 WDK 10?另外,我在哪里可以找到有关 build 命令用法的文档。
windows - DeviceIoControl 错误 1 函数不正确
CreateFile
我已经在内核空间中创建了一个设备,并使用我能够将 ioctl 发送到驱动程序并正确执行它们在用户空间中访问它。不知道如何跟踪返回后WdfRequestComplete
和返回后发生的情况,我以错误 1(无效函数)结束。在将其标记为 dup 之前,请注意这与我编写驱动程序 ioctl 以及使用的是同步 io 而不是异步的不同之处。
在用户空间:
在内核空间
更新1:
我试过WdfRequestCompleteWithInformation(Request, status, OutputBufferLength);
但结果相同。
另外,我注意到 inputBuffer 和 outputBuffer 的地址是相同的。
更新2:我试着做
仍然得到错误1
windbg - windows kdmf 驱动程序 virtio 调用 virtqueue_add_buf 导致系统致命错误
我有一个 Windows VM 驱动程序,它允许用户空间应用程序通过 IOCTL 进行通信。我需要向主机公开一个结构(使用 virtio),并且在using函数virtqueue_add_buf
中初始化 virt 设备后尝试使用。调用时出现致命错误。EvtDevicePrepareHardware
VirtIODeviceInitialize
virtqueue_add_buf
下面是一段代码
我得到的错误是致命系统错误:0x000000d1(0x0000000000000014,0x0000000000000002,0x0000000000000000,0xFFFFF80109FC0637)
中断指令异常 - 代码 80000003(第一次机会)
然后windbg 无法加载符号和崩溃使我的调试会话无用。有什么想法可以调试这个或我可能缺少什么吗?
c++ - Visual Studio 2015 内核调试器卡住
我正在尝试使用 Visual Studio 2015 编写 KMDF 驱动程序。当我尝试部署驱动程序并启动调试器时,一切似乎都正常工作:Visual Studio 能够构建解决方案并将其部署到目标计算机(这是虚拟机),但是在部署文件之后,似乎卡住了:我无法暂停调试器并执行调试器的命令。
我的问题:如何让调试器中断/暂停?
我试过的:
我已经尝试通过网络和管道连接到目标计算机,但似乎都没有改变任何东西。
我尝试将测试证书设置为“WDKTestCert”。
我尝试将包项目添加到解决方案中。
附加信息:
我的项目配置与 MSDN here上显示的完全相同。
我的主机和目标计算机都运行 windows 8.1 64 位。
目标计算机是 VMWare 虚拟机。
我正在使用 Visual Studio 2015 版本 14.0.25123.00 更新 2。
我正在使用 WDK 10。
调试器的日志:
在这一点之后,似乎什么都没有发生。
任何帮助,将不胜感激。
driver - .reload 命令后与目标的连接丢失
在 WinDbg 中:文件->符号文件路径?我将路径设置为:
Srv*c:\symbols*https://msdl.microsoft.com/download/symbols
在此路径文件设置之后,我正在尝试制作此示例:
https ://msdn.microsoft.com/en-us/library/windows/hardware/mt269367
在第 5 节第 2 步中。当我键入.reload /f
调试器失去了与目标的连接。如果我不设置符号文件路径,WinDbg 也会在同一点分解。
对我来说,windbg 似乎失去了与目标的连接并且不再建立它。即使我在 VM 上重新启动目标系统。
有人可以告诉我发生了什么,我做错了什么或为什么会发生这种情况?
我正在使用 VMWare Player。我的主机和目标操作系统是 Windows 10 Pro。VMWare 配置为在 NAT 中使用网络。Echo 驱动安装成功。
在下面,您可以看到 WinDbg 日志:
问候。