gpt4 book ai didi

c++ - Windows Task Scheduler : IAction. QueryInterface() 返回一个错误我找不到定义

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:59:24 25 4
gpt4 key购买 nike

我正在尝试使用 C++ win32 安排任务(在特定时间打开 .exe)。但是在一个特定的时间点我遇到了一个错误,我已经搜索并尝试找到这个错误的定义但是我找不到它?

你知道这个错误是什么意思吗:十六进制:80004003 十进制:2147500035

我不会发布整个函数,因为它相当长(除非您可能需要它来确定错误上下文?)。

我正在使用的代码(导致错误)如下:

//  QI for the executable task pointer.
hr = action -> QueryInterface( IID_IExecAction, (void**) execAction );
action -> Release();

if( FAILED(hr) )
{
printf("QueryInterface call failed for IExecAction: %x %X %u \n", hr, hr, hr );
rootFolder -> Release();
task -> Release();
CoUninitialize();
return false;
}

输出为:IExecAction 的 QueryInterface 调用失败:80004003 80004003 2147500035

最佳答案

0x80004003 是一个“无效指针”错误,又名 E_POINTER

我假设 execAction 的声明是这样的:

IExecAction* execAction = NULL;

但是,QueryInterface 需要一个指向接口(interface)指针的指针。换句话说,您传递了一个存储位置,在其中放置一个 IUnknown*... 或者,在这种特定情况下,一个 IExecAction*

因此,您需要传递execAction地址,以便QueryInterface 可以将接口(interface)指针返回给您。如:

hr = action -> QueryInterface( IID_IExecAction, (void**) &execAction );

我假设这是正在发生的事情,因为将指针值初始化为 NULL 是一种常见的编码实践,并且 QueryInterface is documented当第二个参数为 NULL 时返回 E_POINTER。如果不是,请使用 execAction 的声明更新您的问题。

关于c++ - Windows Task Scheduler : IAction. QueryInterface() 返回一个错误我找不到定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4675704/

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