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 메서드는 다음 값 중 하나를 반환합니다.

반환 코드 Description
S_OK
작업이 완료되었습니다.
ERROR_FILE_EXISTS
지정된 이름의 작업 항목이 이미 있습니다. 실제 반환 값은 HRESULT_FROM_WIN32(ERROR_FILE_EXISTS)입니다.
E_INVALIDARG
하나 이상의 인수가 잘못되었습니다.
E_OUTOFMEMORY
메모리가 부족 하 여 작업을 완료할 수 없습니다.
E_ACCESSDENIED
호출자에게 작업을 수행할 수 있는 권한이 없습니다. 자세한 내용은 예약된 작업 항목을 참조하세요.

설명

이 메서드는 새 작업 항목을 만들 때 메모리 할당을 자동으로 처리합니다.

작업 항목을 디스크에 저장하려면 IPersistFile::Save 를 호출합니다. 이 COM 인터페이스는 모든 작업 항목 인터페이스에서 지원됩니다(현재 ITask 는 유일하게 지원되는 작업 항목 인터페이스임).

작업 스케줄러는 작업 항목을 추가하는 두 가지 방법인 NewWorkItemAddWorkItem을 제공합니다. 이러한 메서드 중 각각에는 특정 이점이 있습니다. AddWorkItem 은 명명 충돌을 방지하지만 호출당 두 개의 디스크 쓰기 작업이 필요합니다. AddWorkItem 호출에서 디스크에 빈 작업 항목 개체를 만든 다음 IPersistFile::Save가 호출될 때 다른 쓰기 작업이 수행됩니다.

AddWorkItem 또는 NewWorkItem을 호출하여 작업을 만들 수 있습니다. AddWorkItem을 사용하는 경우 Task 개체의 instance 만든 다음(ITask 인터페이스를 지원) 제공한 이름으로 작업을 추가해야 합니다.

NewWorkItem 은 명명 충돌을 방지하지 않지만 IPersistFile::Save 가 호출되면 하나의 디스크 쓰기 작업만 필요합니다. NewWorkItem은 디스크 쓰기 작업과 관련하여 더 효율적이지만 IPersistFile::Save를 호출하기 전에 다른 애플리케이션이 동일한 이름의 작업 항목을 만들 위험이 있습니다.

의 전체 예제는 다음과 같습니다. 참조
새 작업 만들기 NewWorkItem 예제를 사용하여 작업 만들기

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 mstask.h
라이브러리 Mstask.lib
DLL Mstask.dll
재배포 가능 파일 Windows NT 4.0 및 Windows 95에서 인터넷 Explorer 4.0 이상

추가 정보

IPersistFile::Save

Itask

ITaskScheduler

ITaskScheduler::AddWorkItem