0

I have an application that opens many windows. Sometimes, I get wglCreateContext() returns 0 and GetLastError() returns 0xc007001f.

It happens on Intel graphic cards only.

Did someone see it? Someone knows what it is?

4

3 回答 3

3

您可以将错误代码分解为其部分。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 驱动程序。当然,您无法解决任何问题,这是用户需要解决的问题。

于 2012-05-06T14:25:09.667 回答
0

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

于 2012-05-06T12:53:27.230 回答
0

您还可以使用 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);
于 2012-05-06T19:51:09.587 回答