Не удалось вызвать ITaskScheduler :: Activate - PullRequest
0 голосов
/ 07 сентября 2018

Я хочу получить информацию о расписании задач Windows. Я скопировал этот код из 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.

1 Ответ

0 голосов
/ 07 сентября 2018

0x80070002 равно HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND), поэтому оно означает то же, что и ERROR_FILE_NOT_FOUND.

0x8007007b равно HRESULT_FROM_WIN32(ERROR_INVALID_NAME).

Таким образом, оба кода ошибок указывают на то, что искомая задача не существует.

В будущем, когда вы увидите код ошибки, начинающийся с 0x8, скорее всего, это значение будет HRESULT. Рассечение кода HRESULT, как описано в Википедии, дает:

  • Бит 0x80000000 означает сбой.
  • У нас есть значение объекта 7 ((hr & 0x07FF0000 ) >> 16), что означает ошибку Win32
  • Младшие 16 бит (hr & 0xFFFF -> 0x0002 и 0x007b в этих случаях) - это фактическое значение ошибки, которое вы можете посмотреть в справочнике .

Firegiant предоставляет приятный веб-сервис для прямого поиска HRESULT значений и других видов кодов ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...