问题标签 [wdk]

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 回答
180 浏览

windows - 我们开发Windows设备驱动程序时如何共享源代码

TARGETNAME=OneOfMyDrivers
TARGETTYPE=驱动程序
包括=..\inc; ..\..\Common\Crypto
TARGETLIBS=$(SDK_LIB_PATH)\wdmsec.lib
SOURCES=OneOfMyDrivers.c \
OneOfMyDrivers.rc\
..\..\Common \Crypto\aes_modes.c \
..\..\Common \Crypto\aescrypt.c \
..\..\Common \Crypto\aeskey.c \
..\..\Common \Crypto\aestab.c

如果不制作静态库(在本例中为 Crypto 模块),
我可以用这种方式构建这个 makefile。我不知道为什么它不起作用。
我想与其他驱动程序(和应用程序)共享 Crypto 模块的源代码

是否可以?
制作静态库的唯一方法是什么?

0 投票
3 回答
15321 浏览

c++ - 如何使用 ZwQueryInformationProcess 在内核驱动程序中获取 ProcessImageFileName?

我正在为我的应用程序编写一个简单的内核驱动程序(想想一个非常简单的反恶意软件应用程序。)

我已经上钩ZwOpenFile()并习惯于PsGetCurrentProcess()获取调用者进程的句柄。

它返回一个 PEPROCESS 结构:

ZwQueryInformationProcess()用来获取PIDand ImageFileName

并尝试以FullPath这种方式获取流程(但我得到了 BSOD):

DbgView 输出

如您所见str.Buffer,是空的或装满了垃圾。也许在填充str通孔时缓冲区溢出ZwQueryInformationProcess()会触发 BSOD。

替代文字

任何帮助,将不胜感激。

0 投票
3 回答
1337 浏览

windows - 包括 Windows DDK 标头

我正在编写一个用户空间 Win32 应用程序。但是,作为此应用程序的一部分,我需要对DeviceIoWindows 1394 堆栈进行一些调用。包含这些DeviceIo调用原型的头文件作为 Windows DDK 的一部分包含在:

(虽然标题声称是“仅内核模式”,但原型是用于用户空间 IOCTL。)我想知道在我的应用程序中包含这个文件的最佳方法是什么。

直接使用它是不好的做法#include(路径取决于 DDK 版本等),此外,没有真正需要安装 DDK --- 我的应用程序唯一依赖它的是这个非常头文件。

因此,我想知道最好的行动方案是什么?我正在考虑直接在我的应用程序源中包含它的精简版本,但真的不确定。

0 投票
4 回答
11160 浏览

windows - Windows:创建(虚拟)显卡驱动程序*可能*吗?

我想创建一个虚拟监视器。这样做的方式是虚拟监视器将出现在我桌面上的一个窗口中。据 Windows 所知,它只是另一台显示器。

在我看来,实际上,它必须作为视频卡驱动程序来完成(即视频不是通过电线连接到 LCD 面板,而是进入桌面上的另一个窗口)。

从技术上讲,我所描述的声音是否可行?(从 DDK 的角度来看)

注意:我不能使用虚拟 PC,因为没有虚拟 PC 的分辨率足以满足我的需要。也因为这不是我要求的。

注意:我的原因并不重要,但我可以弥补一些:

0 投票
2 回答
3157 浏览

winapi - 确定 PCI 适配器的物理位置

我们有一个可以使用多个 PCI 适配器的 Windows 应用程序。这些适配器都具有与其他硬件或电缆的外部物理连接。我们的软件配置为知道每张卡上的物理连接连接到什么。想象一下支持多种声音输入和输出的音频软件。音频软件配置为知道适配器 1 上的麦克风是主唱,而适配器 2 上的麦克风是吉他。

碰巧的是,该软件通常在带有 ExpressCard 和/或 PC 卡适配器的笔记本电脑上运行。因此,用户可以例行地移除适配器。此外,我们的客户可能拥有比一台笔记本电脑更多的适配器。因此,您可以想象有人在笔记本电脑中安装适配器 A(PC 卡)和 B(ExpressCard)并配置我们的软件。他们现在希望歌手的麦克风连接到 PC 卡适配器,而吉他麦克风连接到 ExpressCard 适配器。然后他们回到办公室,取出适配器,将它们与所有其他适配器放在一起。第二天,当他们使用该软件时,他们会拿起适配器 C(PC 卡)和 D(ExpressCard)。当他们将这些卡插入系统时,我们

如果没有此功能,用户每次更换卡片时都必须重新配置我们的软件,这对用户来说不是特别友好。

有没有办法确定 Windows 中硬件适配器在 PCI 链中的位置?有没有其他方法可以实现这个目标?

我希望这适用于 Windows XP 及更高版本。请注意,我们确实控制硬件驱动程序,因此我们可以在必要时进行更改。

0 投票
2 回答
609 浏览

device-driver - 如何在内核模式下链接到 NTQueryKey

对于我的一生,我无法弄清楚如何在我的设备驱动程序中解析声明的 NTQueryKey 值。我找了一个设备驱动程序论坛,但没有找到。

有人能指出我正确的地方吗?OSR 对如何链接到 NTQueryKey 之类的愚蠢问题反应不快。

这是我的原型:

它编译得很好,但链接器不喜欢它。

谢谢

0 投票
2 回答
8346 浏览

visual-c++ - 在 MS Visual C++ 2008 中加载 WDK 的正确方法?

我有一个包含设备驱动程序的项目,开发人员能够编译它。我安装了 MS Visual C++ 2008,第一个错误是“致命错误 C1083:无法打开包含文件:'ntddk.h':没有这样的文件或目录”。我从微软网站下载了 WDK 并安装了它,我还执行了Start -> All Programs -> Windows Driver Kits -> WDK 7600.16385.1 -> Build Environments -> Windows XP and "x86 Checked Build Environment" and "x86 Free Build环境”。

问题仍然存在,所以我意识到我必须手动添加路径,我不知道要添加什么,所以我尝试了:

MS Visual C++ 2008 -> 工具 -> 选项 -> 项目和解决方案 -> VC++ 目录 -> 包含文件,我添加了C:\WinDDK\7600.16385.1\inc\ddk ,现在我得到:

我确实在ntdef.h下面找到C:\WinDDK\7600.16385.1\inc\api并添加了它,但现在我收到了很多错误和警告。由于该项目在开发人员工作站上编译良好,我认为这是我的配置问题。

添加到 MSVC++ 2008 以编译设备驱动程序的正确路径是什么?

0 投票
2 回答
2008 浏览

c++ - DDK“你好世界”

如何开始为 Windows 编写驱动程序?那里有某种官方的 DDK“Hello World”示例吗?

虽然我确信一开始它会超出我的想象,但最终我想创建一个简单的 MIDI 驱动程序,就像Maple 虚拟 MIDI 电缆一样,其中 MIDI 消息来自用户应用程序而不是物理设备。

(使用现成的 MIDI 环回驱动程序的问题在于输入和输出端的存在常常让用户感到困惑。我的应用程序生成 MIDI 输出,然后发送到其他程序的 MIDI 输入,所以如果我可以创建一个连接到我的程序而不是硬件的假驱动程序,它将消除这种混淆。)

感谢您的时间。

0 投票
1 回答
91 浏览

windows - 是什么导致了磁盘上的驱动程序和映射到内存的驱动程序之间的差异?

嘿,今天我尝试对 NDIS.sys 进行二进制比较,我发现了一些奇怪的东西。我接受了一个函数,并开始区分它。磁盘(使用 IDA)和内存(使用 WinDbg)上的前 30 个字节相同。然后,有些事情发生了变化。我看到了类似“jmp _ imp _XXXXX”的东西。JMP 字节相同,但地址不同。

我的问题是 - 有什么不同?我认为这与搬迁有关。尽管跳转是在同一个模块中寻址,但它是一个长跳转,这使得它相对于模块基地址。如果发生重定位,它也需要重定位这个地址,尽管它在同一个模块上。

我是对的还是完全错的?:-) 谢谢。

0 投票
1 回答
210 浏览

windows - 如何获取 WDM 编译器的包含路径?

我正在阅读一些 Windows XP 设备驱动程序的源代码,我想知道 WDM 编译器的确切包含路径。我知道这些应该包括在内:

但是,我知道 WDM 构建必须使用其他一些路径。例如,我不知道在哪里'__int32'定义。

顺便说一句,同样,我也想知道如何获取 WDM 链接器所需的库路径。