问题标签 [iddcx]

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 投票
2 回答
316 浏览

windbg - “检测到 PNP/INF 版本与图形适配器上的 KMD 文件版本不匹配”

我一直在测试 UMDF IddCx 视频驱动程序,并且这条消息刚刚开始出现(在安装 devcon.exe ...之后)以及 WinDbg 中的断点:

堆栈信息(Windows 10 专业版 | 测试模式 | 内部版本 19041.vb_release.191206-1406):

我不明白这是什么意思;我没有更改 INF 中的任何内容,这是一个 UMDF 驱动程序,那么它指的是什么“KMD 文件版本”?我搜索了消息本身以及 DpiFdoValidateKmdAndPnpVersionMatch,但结果为空。

编辑:(添加版本信息)

任何人都可以阐明这一点吗?

0 投票
0 回答
68 浏览

winapi - 使用 IOCTL_VIDEO_QUERY_AVAIL_MODES 获取视频适配器支持的模式列表

我正在尝试从视频适配器驱动程序中查询支持的模式列表:

FALSE返回第一个DeviceIoControl调用,并将 LastError 设置为ERROR_INVALID_FUNCTION(0x1)。

我成功地使用相同的代码在我的驱动程序中调用自定义 IOCTL 内容,因此我确信实现本身是合理的。但是,当我打开设备的句柄时,我应该使用一个包含有关设备和我将要使用的接口的信息的字符串。我为我的自定义 IOCTL 接口定义了 GUID,并使用类似以下的内容来发送自定义 IOCTL 命令:

但是IOCTL_VIDEO_QUERY_NUM_AVAIL_MODESIOCTL_VIDEO_QUERY_AVAIL_MODES的文档没有提到它们属于哪个接口(GUID)。

我假设我必须使用GUID_DEVINTERFACE_DISPLAY_ADAPTER接口打开适配器设备,但是在第一次 DeviceIoControl 调用时我得到了不正确的功能。如果我用 . 打开适配器或其显示器之一,结果相同GUID_DEVINTERFACE_MONITOR

我在网上搜索了任何代码示例,但我发现的都是来自驱动程序方面的查询。

如果有帮助的话,我要针对的显示适配器驱动程序是 IddCx 驱动程序。有什么线索吗?

0 投票
1 回答
45 浏览

c++ - IddCX 标头导致纯 C 编译出错

我正在尝试将纯 C 用于我正在研究的 Windows 驱动程序。它是使用 IddCx (um/iddcx/iddcx.h) 的驱动程序。这个头文件有一个 'extern "c"` 包装器以允许 C 编译。问题是'extern“C”'块中的代码不是C。我得到了这两个问题。

像这样的枚举声明:

这会导致这样的错误(在 C 中,我认为您不能为 Enum 定义类型): error C2059: syntax error: ':'

和这样的函数声明:

这会导致这样的错误(由于没有给定 typedef 的结构,因此需要以“struct”为前缀): error C2143: syntax error: missing ')' before '*'

error C2143: syntax error: missing '{' before '*'

error C2143: syntax error: missing ';' before '*'

warning C4218: nonstandard extension used: must specify at least a storage class or a type error C2059: syntax error: ')'

warning C4218: nonstandard extension used: must specify at least a storage class or a type

如果标头没有任何外部 C 包装器,我会假设它是仅 Cpp 的 API 并改用 Cpp。但它确实有它们,所以它应该编译得很好。要么我需要设置一些标志才能使其正常工作,要么这是微软的错误。如果这是他们的错误,请报告错误并创建我自己的标题以供现在使用。

另外,如果这是一个错误,我应该在哪里向微软报告这个问题?