wglCreateContext GetLastError() 0xc007001f

wglCreateContext GetLastError() 0xc007001f

本文关键字:0xc007001f GetLastError wglCreateContext      更新时间:2023-10-16

我有一个打开许多窗口的应用程序。有时,我得到 wglCreateContext() 返回 0 和 GetLastError() 返回 0xc007001f。

它只发生在英特尔显卡上。

有人看到了吗?有人知道它是什么吗?

您可以将错误代码分解为多个部分。 0xC使它成为一个致命的错误,007 产生的设施代码 7 是 winapi。 这使得最后四位数字 Windows 错误 31:

//
// MessageId: ERROR_GEN_FAILURE
//
// MessageText:
//
// A device attached to the system is not functioning.
//
#define ERROR_GEN_FAILURE                31L

这使得它成为一个非常基本的设备驱动程序类型的问题,假设您将正确的设备上下文句柄传递给 wglCreateContext()。 通常需要更新视频驱动程序并确保安装了正确类型的 OpenGL 驱动程序的类型。 当然,您无法解决任何问题,这是用户需要解决的问题。

>我相信错误0xc007001f是当SetPixelFormat()失败时。这意味着,您正在尝试使用该卡不支持的像素格式的某些功能。如果我没记错的话,英特尔显卡几乎不支持OpenGL(仅[编辑:2.1])。

您也可以使用 FormatMessage 获取错误描述的字符串:

DWORD err = GetLastError();
char* msg;
FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_ALLOCATE_BUFFER, 0, err, 0, (LPCSTR)&msg, 0, 0);
MessageBoxA(0, msg, "Error", 0);
LocalFree(msg);