jjzjj

c++ - Kinect 2 - AcquireLatestFrame() 大部分时间都失败

下面给出了连续从Kinect2获取最新帧的C++代码。intmain(){setupKinect();acquireFrames();return0;}templateinlinestaticvoidsafeRelease(Interface*&interfaceToRelease){if(interfaceToRelease!=nullptr){interfaceToRelease->Release();interfaceToRelease=nullptr;}}voidacquireFrames(){while(true){if(bodyFrameReader!=nullptr){I

c++ - CoCreateInstance 上的 E_ACCESSDENIED,它曾经在这里工作

我有一些代码曾经可以工作,但最近停止了。它位于Adob​​eReader插件中,最新版本的Reader具有导致我出现问题的“保护模式”。我的插件可以加载我的一些正常的dll,这些dll在进程中加载​​:MyNormalLib::IMyClassPtrfoo;HRESULThr=foo.CreateInstance(__uuidof(MyNormalLib::MyClass));但是当我尝试获取指向我的服务的com指针时(在同一台机器上运行):MyOtherLib::IMyServicePtrbar;HRESULThr=bar.CreateInstance(__uuidof(MyOthe

c++ - vc++ 中未处理的异常 - HRESULT 失败

我知道VC++6.0是很古老的语言,但我别无选择,我只是在维护一个现有的程序,我遇到了这个错误UnhandledexceptioninAssess.exe(KERNELBASE.DLL):0xE06D7363:MicrosoftC++Exception这是我的代码HRESULThr=CoInitialize(NULL);//Createtheinterfacepointer.IModulePtrpI(__uuidof(RPTAModuleInterface));//theerrorishere调试并使用f11后,程序转到COMIP.H,这是代码explicit_com_ptr_t(co

c++ - 如何从 C++ 引发将触发脚本异常处理程序的异常

我一直在网上找到这个答案的零碎内容,但不是一个非常清晰的解决方案。这就是我想要做的。1)创建一个ATL简单对象。2)向该对象添加一个返回BOOL而不是HRESULT的方法。调用者想要true/false返回值。3)向将提供e.description和e.number数据的jscript或vbscript调用者抛出异常。RE2)我发现我可以将STDMETHODIMP_(BOOL)与[local]一起使用以允许返回BOOLRE3)我发现我可以通过SetErrorInfo()传递IErrorInfo来填充错误对象我的困境是我无法弄清楚如何构建C++来跨ABI边界抛出异常,而不会导致调用者崩溃

c++ - 为什么要避免在 HRESULT 处理中使用宏?

为什么在定义错误/HRESULT处理/日志记录时会选择或不选择使用宏?我正在处理一个通过接口(interface)调用的错误处理类,因此我可以使用Boost共享指针在我需要的时间和地点调用该类。(老实说;我不知道这是否是最好的方法,但我主要想看看我是否能做到,以及它会是什么样子)。即:typedefstd::shared_ptrError_Handler;Error_HandlerErr_Handler(newErrHandling);if(error){Err_Handler->vDX_ERR(ERR_D3D_INIT_SWAP);}我开始在DirectX中使用该类,由于Direct

c++ - 处理 CoCreateInstance 返回值

这是创建COM对象的代码示例:CComPtrpFilter;autohr=CoCreateInstance(CLSID_DMOWrapperFilter,NULL,CLSCTX_INPROC_SERVER,IID_IBaseFilter,reinterpret_cast(&pFilter));我在某处看到检查CoCreateInstance()是否成功应该如下所示:if(SUCCEEDED(hr)&&pFilter!=nullptr){//codegoeshere}如果我只检查hr会怎样?还不够吗?我还应该检查filter!=nullptr吗?//wouldthisbeenough?i

c++ - 解释 HRESULT 的声明/定义

刚刚看了VS2008中HRESULT的定义。WinNT.h具有以下行:typedef__success(return>=0)longHRESULT;具体是什么意思?在我未经训练的眼中,它甚至不像C或C++ 最佳答案 这是一个注解。简而言之,__success(expr)表示expr描述了函数被认为成功的条件。对于返回HRESULT的函数,该条件是返回值(因为HRESULT是一个long)是非负数。由于这个typedef,所有返回HRESULT的函数都应用了这个注释。在SALAnnotations上的MSDN中可能比您想要的更多详细信

c++ - 如何通过 COM 公开通过结构化异常处理捕获的异常?

我用VisualC++实现的COM服务器使用了大量其他C++代码。其他C++代码有时会将代码包装在__try-__except中,并将结构化异常转换为自定义C++异常。这部分我无法更改。我的COM服务器的任何方法都不应该让这些异常通过COM边界传播,因此它必须捕获它们并将它们转换为HRESULT。这些自定义C++异常包含在翻译过程中获得的原始错误代码-它类似于EXCEPTION_ACCESS_VIOLATION。问题是我如何设计一个合适的HRESULT值,以便客户端在看到一个访问冲突)。假设它是在WinBase.h中定义的EXCEPTION_ACCESS_VIOLATION#defin

c++ - 如何在 E_NOTIMPL 和 E_NOINTERFACE 之间进行选择?

我已经搞不清是应该从我的COM服务器方法返回E_NOTIMPL还是E_NOINTERFACE。我有一个类有两个函数,我从我继承的类中覆盖了这两个函数,这两个函数什么都不做,因为它们目前还没有得到真正的支持,所以我问我应该使用“未实现”还是“否”这些函数返回值的接口(interface)”?有没有人对何时使用它们有一般的经验法则? 最佳答案 如果您未能实现整个接口(interface),那么您的QueryInterface可以显式返回E_NOINTERFACE,这样就没有人会尝试调用它的任何方法,或者您可以直接让所有方法都可以返回E_

c# - 在哪里可以找到 HOST_E_CLRNOTAVAILABLE(类型 HRESULT)常量的声明?

谁能帮我找到头文件,其中包含ExecuteInDefaultAppDomain()返回的HRESULT的声明功能。编译器看不到MSDN中记录的值:HOST_E_CLRNOTAVAILABLE,HOST_E_NOT_OWNER等等注意,包括在内。 最佳答案 这些代码在CorError.h中。就#include他们将可用。 关于c#-在哪里可以找到HOST_E_CLRNOTAVAILABLE(类型HRESULT)常量的声明?,我们在StackOverflow上找到一个类似的问题: