我想获取Windows Schedule Task信息。我从MSDN source复制了此代码。
///////////////////////////////////////////////////////////////////
// Call ITaskScheduler::Activate to get the Task object.
///////////////////////////////////////////////////////////////////
ITask *pITask;
LPCWSTR lpcwszTaskName;
lpcwszTaskName = L"Test Task";
hr = pITS->Activate(lpcwszTaskName,
IID_ITask,
(IUnknown**) &pITask);
pITS->Release();
if (FAILED(hr))
{
wprintf(L"Failed calling ITaskScheduler::Activate; error = 0x%x\n",hr);
CoUninitialize();
return 1;
}
它在我的Win10 X64计算机上很好地工作。但是它在另一台Win7 X86计算机上失败。
当我使用远程调试器时,错误代码为0x80070002
。 VS调试器告诉我,意思是ERROR_FILE_NOT_FOUND
。但是我去定义ERROR_FILE_NOT_FOUND
#define ERROR_FILE_NOT_FOUND 2L
这是不同的代码。
然后当我直接在Win7 x86计算机上运行程序时。它给了我另一个错误代码
0x8007007b
我找不到含义。 因此,我不知道为什么在Win7计算机上调用失败。
答案 0 :(得分:0)
0x80070002
等于HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND)
,因此含义与ERROR_FILE_NOT_FOUND
相同。
0x8007007b
等于HRESULT_FROM_WIN32(ERROR_INVALID_NAME)
。
因此,两个错误代码似乎都表明您要查找的任务不存在。
将来,当您看到以0x8
开头的错误代码时,很可能是一个HRESULT
值。按Wikipedia所述剖析HRESULT
代码可以得出:
0x80000000
位表示失败。(hr & 0x07FF0000 ) >> 16
),这意味着Win32错误hr & 0xFFFF
-> 0x0002
和0x007b
)是可以在reference中查找的实际错误值。 Firegiant提供了nice web service,用于直接查找HRESULT
值和其他类型的错误代码。