gpt4 book ai didi

c++ - 检查并关闭 HANDLE

转载 作者:太空宇宙 更新时间:2023-11-04 16:21:21 26 4
gpt4 key购买 nike

我正在使用 HANDLES,第一个 nextColorFrameEvent 是事件处理程序,第二个是流处理程序。它们在以下代码中被初始化:

nextColorFrameEvent = CreateEvent( NULL, TRUE, FALSE, NULL );
hr = nui->NuiImageStreamOpen(
NUI_IMAGE_TYPE_COLOR,
NUI_IMAGE_RESOLUTION_640x480,
0,
2,
nextColorFrameEvent,
&videoStreamHandle);

我想在销毁时正确处理它们,同时不产生错误。有时初始化器不会被调用,所以当软件结束时两个 HANDLEs 仍然是 NULL。这就是为什么我想首先检查 HANDLE 是否已正确初始化等,如果是,我想关闭它们。为此,我得到了以下代码:

    if (nextColorFrameEvent && nextColorFrameEvent != INVALID_HANDLE_VALUE)CloseHandle(nextColorFrameEvent);
#ifdef QT_DEBUG
DWORD error = GetLastError();
qDebug()<< error;
#endif
if (videoStreamHandle && videoStreamHandle != INVALID_HANDLE_VALUE)CloseHandle(videoStreamHandle);
#ifdef QT_DEBUG
error = GetLastError();
qDebug()<< error;
#endif

但这显然是不正确的:如果我不运行初始化程序然后关闭软件,这段代码运行并给我一个 6:

Starting C:\...\Qt\build-simpleKinectController-Desktop_Qt_5_0_2_MSVC2012_64bit-Debug\debug\simpleKinectController...
6
6
C:\...\Qt\build-simpleKinectController-Desktop_Qt_5_0_2_MSVC2012_64bit-Debug\debug\simpleKinectController exited with code 0

这意味着:

ERROR_INVALID_HANDLE 6 (0x6) The handle is invalid. Which means that closeHandle ran anyway despite the tests. What tests should I do to prevent closing when the handle is not a valid HANDLE?

额外的问题:如果我运行初始化程序,仅关闭 colorFrameEvent 时将不再出现此错误,但在关闭 videoStreamHandle 时仍会出现:

Starting C:\...\Qt\build-simpleKinectController-Desktop_Qt_5_0_2_MSVC2012_64bit-Debug\debug\simpleKinectController...
0
6
C:\...\Qt\build-simpleKinectController-Desktop_Qt_5_0_2_MSVC2012_64bit-Debug\debug\simpleKinectController exited with code 0

我需要一个不同的函数来关闭流处理程序吗?

最佳答案

nui->NuiImageStreamOpen(...) 不会为流创建有效的 Windows 句柄,而是在驱动程序端创建一个内部句柄。
所以你不能使用windows API来释放/关闭流句柄!!!

  • 为此只需调用 nui->NuiShutdown()。我还没有使用回调事件,但我认为它是一个有效的窗口句柄,应该可以正常关闭。
  • 如果您只需要更改设置,您可以随时使用新设置调用nui->NuiImageStreamOpen(...)。无需关机...
  • 我也欢迎函数 nui->NuiImageStreamClose(...);,因为 API 的当前状态随着传感器配置的变化而使长期运行的 ap 变得复杂。

关于c++ - 检查并关闭 HANDLE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16358727/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com