IBackgroundCopyJob3::SetFileACLFlags 메서드(bits2_0.h)

SMB를 사용하여 파일을 다운로드하거나 업로드할 때 유지 관리할 소유자 및 ACL 정보를 지정합니다.

구문

HRESULT SetFileACLFlags(
  [in] DWORD Flags
);

매개 변수

[in] Flags

SMB를 사용하여 파일을 전송할 때 유지 관리할 소유자 및 ACL 정보를 식별하는 플래그입니다. 이 메서드에 대한 후속 호출은 이전 플래그를 덮어씁 수 있습니다. 작업에서 플래그를 제거하려면 0을 지정합니다. 다음 플래그의 조합을 지정할 수 있습니다.

의미
BG_COPY_FILE_OWNER
설정하면 파일의 소유자 정보가 유지 관리됩니다. 그렇지 않으면 Complete 메서드를 호출하는 사용자가 파일을 소유합니다.

이 플래그를 설정하려면 SeRestorePrivilege가 있어야 합니다. 관리자 그룹에는 SeRestorePrivilege 권한이 포함됩니다.

BG_COPY_FILE_GROUP
설정하면 파일의 그룹 정보가 유지 관리됩니다. 그렇지 않으면 BITS는 작업 소유자의 기본 그룹을 사용하여 그룹 정보를 파일에 할당합니다.

이 플래그를 설정하려면 SeRestorePrivilege가 있어야 합니다. 관리자 그룹에는 SeRestorePrivilege 권한이 포함됩니다.

BG_COPY_FILE_DACL
설정된 경우 BITS는 원본 파일에서 명시적 ACE를 복사하고 대상 폴더에서 상속 가능한 ACE를 복사합니다. 그렇지 않으면 BITS는 대상 폴더에서 상속 가능한 ACE를 복사합니다. 대상 폴더에 상속 가능한 ACE가 없는 경우 BITS는 소유자 계정의 기본 DACL을 사용합니다.
BG_COPY_FILE_SACL
설정된 경우 BITS는 원본 파일에서 명시적 ACE를 복사하고 대상 폴더에서 상속 가능한 ACE를 복사합니다. 그렇지 않으면 BITS는 대상 폴더에서 상속 가능한 ACE를 복사합니다.

이 플래그를 설정하려면 로컬 컴퓨터와 원격 컴퓨터 모두에 SeSecurityPrivilege가 있어야 합니다. 관리자 그룹에는 SeSecurityPrivilege 권한이 포함됩니다.

BG_COPY_FILE_ALL
설정된 경우 BITS는 소유자 및 ACL 정보를 복사합니다. 이는 모든 플래그를 개별적으로 설정하는 것과 동일합니다.

반환 값

이 메서드는 다음 HRESULT 값과 다른 값을 반환합니다.

반환 코드 설명
S_OK
플래그를 설정했습니다.
BG_E_INVALID_STATE
작업이 BG_JOB_STATE_TRANSFERRED 상태로 전환되기 전에 이 메서드를 호출해야 합니다.
E_INVALIDARG
Flags 매개 변수는 목록에 없는 플래그를 포함합니다.

설명

이러한 플래그는 SMB 프로토콜을 지정하는 원격 파일 이름에 적용됩니다. BITS는 HTTP 전송에 대한 플래그를 무시합니다.

BITS는 SMB 파일에 대한 파일 타임스탬프로 및 특성(확장 특성 아님)을 전파합니다.

BITS는 임시 전송 파일을 만들 때가 아니라 파일 전송이 완료된 시점에 소유자 및 ACL 정보를 파일에 적용합니다. BITS는 임시 전송 파일을 만들 때 보안 설명자를 지정하지 않습니다(파일은 대상 디렉터리에서 ACL 정보를 상속). 전송된 데이터가 중요한 경우 애플리케이션은 무단 액세스를 방지하기 위해 대상 디렉터리에 적절한 ACL을 지정해야 합니다.

작업의 모든 파일에 적절한 소유자 및 ACL 정보가 설정되어 있는지 확인하려면 작업을 만든 후 IBackgroundCopyJob::Resume 메서드를 호출하기 전에 이 메서드를 호출합니다. 그렇지 않으면 플래그가 설정되기 전에 전송된 파일에는 적절한 소유자 및 ACL 정보가 포함되지 않습니다.

이 메서드는 XCopy DOS 명령을 따라 모델링됩니다.

FAT 파일 시스템에 다운로드하는 경우 소유자 및 ACL 정보가 유지 관리되지 않습니다.

사용자에게 소유자 또는 ACL 정보를 복사할 수 있는 로컬 및 원격 컴퓨터에 대한 권한이 없는 경우 BITS는 작업을 일시적인 오류 상태로 설정하고 오류 코드를 E_ACCESSDENIED 설정합니다.

예제

다음 예제에서는 SetFileACLFlags 메서드를 호출하여 BITS가 다운로드하는 파일로 유지 관리할 소유자 및 ACL 정보를 지정하는 방법을 보여 줍니다. 이 예제에서는 IBackgroundCopyJob 변수 pJob 이 유효하고 새 작업을 가리키며 일시 중단되었다고 가정합니다.

     IBackgroundCopyJob *pJob;
     IBackgroundCopyJob3 *pJob3 = NULL;

     //Need to query the IBackgroundCopyJob interface for an IBackgroundCopyJob3
     //interface pointer. The IBackgroundCopyJob3 interface contains the SetACLFlags method.
     hr = pJob->QueryInterface(__uuidof( IBackgroundCopyJob3 ), (void**)&pJob3;);
     if (S_OK == hr)
     {
          pJob->Release(); //No longer need the IBackgoundCopyJob interface pointer.

          //Copy the group and DACL information for each file.
          hr = pJob3->SetACLFlags(BG_COPY_FILE_GROUP | BG_COPY_FILE_DACL);
          if (FAILED(hr))
          {
               //Handle error.
          }

          ... //Add one or more files and resume the job.
          pJob3->Resume();

          //When done, release the interface pointer.
          pJob3->Release();
     }
     else
     {
          //Handle error. QueryInterface will return E_NOINTERFACE if the version of BITS
          //running on the computer is less than BITS 2.0.
     }

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista, Windows XP SP2, windows Server 2003의 KB842773 및 Windows XP
지원되는 최소 서버 Windows Server 2008, Windows Server 2003 with SP1
대상 플랫폼 Windows
헤더 bits2_0.h(Bits.h 포함)
라이브러리 Bits.lib
DLL BitsPrx3.dll

추가 정보

IBackgroundCopyJob3

IBackgroundCopyJob3::GetFileACLFlags