Поделиться через


Метод ITaskScheduler::NewWorkItem (mstask.h)

[[Этот API может быть изменен или недоступен в последующих версиях операционной системы или продукта. Вместо этого используйте интерфейсы планировщика задач 2.0 .] ]

Метод NewWorkItem создает новый рабочий элемент, выделяя место для рабочего элемента и извлекая его адрес.

Синтаксис

HRESULT NewWorkItem(
  [in]  LPCWSTR  pwszTaskName,
  [in]  REFCLSID rclsid,
  [in]  REFIID   riid,
  [out] IUnknown **ppUnk
);

Параметры

[in] pwszTaskName

Строка, завершающаяся значением NULL, указывающая имя нового рабочего элемента. Это имя должно соответствовать Windows NT соглашениям об именовании файлов, но не может включать обратную косую черту, так как вложение в объект папки задач запрещено.

[in] rclsid

Идентификатор класса создаваемого рабочего элемента. Единственный поддерживаемый в настоящее время класс задачи имеет идентификатор CLSID_Ctask.

[in] riid

Идентификатор ссылки запрашиваемого интерфейса. Единственный поддерживаемый в настоящее время интерфейс ITask имеет идентификатор IID_ITask.

[out] ppUnk

Указатель на указатель интерфейса, который получает запрошенный интерфейс. Сведения о сохранении рабочего элемента на диск см. в разделе Примечания.

Возвращаемое значение

Метод NewWorkItem возвращает одно из следующих значений.

Код возврата Описание
S_OK
Операция выполнена успешно.
ERROR_FILE_EXISTS
Рабочий элемент с указанным именем уже существует. Фактическое возвращаемое значение — HRESULT_FROM_WIN32 (ERROR_FILE_EXISTS).
E_INVALIDARG
Один или несколько аргументов недопустимы.
E_OUTOFMEMORY
Недостаточно памяти для выполнения операции.
E_ACCESSDENIED
Вызывающий объект не имеет разрешения на выполнение операции. Дополнительные сведения см. в разделе Запланированные рабочие элементы.

Комментарии

Этот метод автоматически обрабатывает выделение памяти при создании нового рабочего элемента.

Чтобы сохранить рабочий элемент на диск, вызовите IPersistFile::Save . Этот COM-интерфейс поддерживается всеми интерфейсами рабочих элементов (в настоящее время ITask является единственным поддерживаемым интерфейсом рабочих элементов).

Планировщик задач предоставляет два метода добавления рабочих элементов: NewWorkItem и AddWorkItem. Каждый из этих методов имеет свое конкретное преимущество. AddWorkItem предотвращает конфликты именования, но также требует двух операций записи на диск для каждого вызова. Одна операция записи выполняется, когда вызов AddWorkItem создает пустой объект рабочего элемента на диске, а затем выполняется другая операция записи при вызове IPersistFile::Save .

Вы можете создать задачу, вызвав Метод AddWorkItem или NewWorkItem. При использовании AddWorkItem вы несете ответственность за создание экземпляра объекта Task (который поддерживает интерфейс ITask ), а затем добавить задачу с указанным именем.

NewWorkItem не предотвращает конфликты именования, но при вызове метода IPersistFile::Save требуется только одна операция записи диска. Несмотря на то, что NewWorkItem является более эффективным в отношении операций записи на диск, приложение рискует создать рабочий элемент с тем же именем другим приложением перед вызовом IPersistFile::Save .

Полный пример См.
Создание задачи Пример создания задачи с помощью NewWorkItem

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header mstask.h
Библиотека Mstask.lib
DLL Mstask.dll
Распространяемые компоненты Internet Обозреватель 4.0 или более поздней версии в Windows NT 4.0 и Windows 95

См. также раздел

IPersistFile::Save

ITask

ITaskScheduler

ITaskScheduler::AddWorkItem