安装程序设备接口错误 259 用于显示
SetupDiEnumDeviceInterfaces error 259 for display
我正在尝试检索一组与显示相关的接口,但似乎总是收到 259 错误。由于我对WinApi
非常缺乏经验,因此我可能需要一些提示:)
#include <atlstr.h>
#include <SetupApi.h>
#pragma comment(lib, "setupapi.lib")
#include <stdio.h>
#include <windows.h>
#include <setupapi.h>
#include <devguid.h>
#include <regstr.h>
const GUID GUID_CLASS_MONITOR = {0x4d36e96e, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18};
const GUID GUID_DEVINTERFACE_MONITOR = {0xe6f07b5f, 0xee97, 0x4a90, 0xb0, 0x76, 0x33, 0xf5, 0x7b, 0xf4, 0xea, 0xa7};
int main( int argc, char *argv[ ] )
{
HDEVINFO hDevInfo;
SP_DEVICE_INTERFACE_DATA ifData;
ifData.cbSize = sizeof(ifData);
DWORD dwError;
hDevInfo = SetupDiGetClassDevs(NULL /*&GUID_CLASS_MONITOR*/, NULL, NULL, DIGCF_ALLCLASSES);
dwError = GetLastError();
BOOL bRtn = SetupDiEnumDeviceInterfaces(hDevInfo, NULL, &GUID_CLASS_MONITOR, 0, &ifData); // GUID_DEVINTERFACE_MONITOR did not work either
dwError = GetLastError();
return 0;
}
我看不出我做错了什么SetupDiGetClassDevs
没有错误,但我尝试SetupDiEnumDeviceInterfaces
返回 259。我一直在尝试设备设置以及设备界面 GUID,但没有运气。
编辑:澄清:bRtn 返回 0,这意味着SetupDiEnumDeviceInterfaces
失败。259
错误意味着没有更多项目,但我的系统连接了两个屏幕,由于我在没有 GUID 的情况下调用SetupDiGetClassDevs
,我希望至少获得我的两个屏幕项目。
编辑:根据建议添加了cbSize
调用SetupDiEnumDeviceInterfaces
之前必须正确设置ifData.cbSize
吗?
(http://msdn.microsoft.com/en-us/library/windows/hardware/ff551015(v=vs.85).aspx)
调用方必须在调用此函数之前将 DeviceInterfaceData.cbSize 设置为 sizeof(SP_DEVICE_INTERFACE_DATA)。
(http://msdn.microsoft.com/en-us/library/windows/hardware/ff552342(v=vs.85).aspx)
将SP_DEVICE_INTERFACE_DATA结构的实例作为参数的 SetupAPI 函数验证所提供结构的 cbSize 成员是否等于结构的大小(以字节为单位)。
您没有在代码中显示设置此值。
出于某种原因,我通过尝试和错误找到的答案对我来说并不直观,但它似乎有效。
由于我无法检索设备设置 GUID,但我必须将DIGCF_DEVICEINTERFACE
添加到设备接口 GUID GUID_DEVINTERFACE_MONITOR
以便能够检索接口。
感谢您的提示,因为缺少cbSize也会导致另一个错误:/
- 程序应该显示文件的最后5行,但它不适用于大文件
- WinDBG适用于从Visual Studio 2015保存的转储,但不适用于任务管理器。显示异常代码"not found"
- 用于检测特定频率的直接显示滤波器
- 递归解决方案,用于显示线性链表数组
- 回调方法显示错误,类型为"void(*)"的值不能用于初始化类型的实体
- c ++ 是否有任何用于列出 Windows 驱动程序管理器控制台中显示的设备驱动程序的 Windows API?
- 单个模板功能,用于显示不同容器的内容
- 如何显示用于车辆分类的 Blob 大小
- 如果我尝试将 graphics.h 用于 c/c++ 时显示错误,我该怎么办?
- 用于显示矩阵元素的C 函数显示垃圾值
- 递归函数,用于使用位掩码 c++ 显示集合的所有子集
- 合适的C 小部件,用于显示静态HTML页面
- 用于显示字符串每个字符的 for 循环 |C++
- 从QT,Win7下,如何知道哪种窗口样式用于显示
- 为什么我的输出没有显示"while"语句。while 语句用于显示所有信息
- QTableView 和 ItemDelegate,用于显示进度条
- 嵌套循环,用于显示 25 个字符的行 c++
- 安装程序设备接口错误 259 用于显示
- 用于显示不同数字类型的函数重载
- 用于显示文本模式菜单的库