- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我遇到了一个问题,我找不到相关信息。以下代码导致了问题(为简洁起见,我省略了很多代码,但正如我将解释的那样,这段代码似乎工作正常):
mHDC = GetDC(mHWnd);
int format = ChoosePixelFormat(mHDC, &pixelFormat);
SetPixelFormat(mHDC, format, &pixelFormat);
mHGLRC = wglCreateContext(mHDC);
wglMakeCurrent(mHDC, mHGLRC);
mHWnd
是通过CreateWindow()
const HINSTANCE hInstance(static_cast<HINSTANCE>(::GetModuleHandle(NULL)));
mHWnd = CreateWindow(wndClass.lpszClassName, L"Test Application", style, CW_USEDEFAULT, CW_USEDEFAULT, clientRect.right, clientRect.bottom, NULL, NULL, hInstance, NULL);
ChoosePixelFormat()
当我使用仅启用 Handles 和 Cuzz 的应用程序验证器时,在调试器中导致无效句柄第一次机会异常。这两个一起导致异常触发。如果不启用这两个(即使我只执行一个或另一个),则不会抛出异常并且一切正常。当我在没有连接到调试器的情况下运行应用程序时,应用程序反而崩溃了。
即使引发了异常,一旦我点击了 wglMakeCurrent()
(通过在之后继续调试并忽略异常),所有变量似乎都以有效值结束:
mHWnd == 0x1a1064e
mHDC == 0x440119c0
format == 7
mHGLRC == 0x10000
堆栈跟踪看起来像这样:
ntdll.dll!00000000772012f7()
vfbasics.dll!000007feedaa81b4()
KernelBase.dll!000007fefd1610dc()
vfbasics.dll!000007feedaa7ce9()
vfcuzz.dll!000007fee5075179()
nvoglv64.dll!000000006979b732()
vfbasics.dll!000007feedaac1d5()
kernel32.dll!0000000076fa652d()
ntdll.dll!00000000771dc521()
事件线程是 vfcuzz.dll
线程,这显然允许 Cuzz 执行其业务。堆栈跟踪中的 vfbasics.dll
是句柄检查器所在的位置,正如我所说,仅启用了句柄检查器。
为完成起见,这里是实际的异常消息:
First-chance exception at 0x00000000772012F7 (ntdll.dll) in Tests.exe: 0xC0000008: An invalid handle was specified.
我假设不是应用程序验证器中的错误导致它抛出不应该存在的异常并导致程序崩溃。当我清楚地从函数调用中获取有效值时,我只是对为什么它抛出异常感到困惑。在我了解发生了什么之前,我真的不想忽略它。
最佳答案
看起来你的代码没有问题。 ChoosePixelFormat
唯一的句柄是一个 HDC
并且你给它的那个可能是有效的(尽管在你展示的代码中没有检查 GetDC
成功了,我想你只是为了简洁而忽略了它)。
第一次出现的异常不一定是问题。它只是意味着发生了异常,这是第一次处理它的机会。我的猜测是异常很可能发生在 ChoosePixelFormat
函数本身(或在 ChoosePixelFormat
调用的函数内)并在那里被处理 - 这只是因为你正在调试你实际了解一下。在日常使用中,异常会被安静地处理,您甚至不会知道它已经发生。
关于c++ - 句柄无效(使用应用程序验证程序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18061192/
我设置了 Helm 柄和 Helm 柄。我有tiller-deploy。昨天,我可以定期运行了。但今天我收到此错误消息 Error: could not find a ready tiller pod
我以前已将分er安装到特定的 namespace 中。 我设置了一个环境变量来设置'tiller'命名空间-但我不记得该环境变量的名称-而且似乎无法通过网络搜索找到它。 这是什么 key ? 最佳答案
当我在 View 模型中使用如下界面时 class MainViewModel @ViewModelInject constructor( private val trafficImagesR
我正在尝试找到如何在某个 fragment 相关场景中定义 Hilt 的解决方案。我有以下设置: Activity 父 fragment 1 子 fragment 1 子 fragment 2 ...
Hilt 指出如果没有@Provides 注解就不能提供这个接口(interface): interface PlannedListRepository { fun getAllLists()
我的问题非常简单明了:两个注释/示例之间有什么区别: 例子一 @Singleton class MySingletonClass() {} @Module @InstallIn(FragmentCom
我是一名优秀的程序员,十分优秀!