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


Метод IBackgroundCopyJob3::SetFileACLFlags (bits2_0.h)

Указывает сведения о владельце и ACL, которые необходимо сохранить при использовании SMB для скачивания или отправки файла.

Синтаксис

HRESULT SetFileACLFlags(
  [in] DWORD Flags
);

Параметры

[in] Flags

Флаги, определяющие владельца и сведения ACL, которые необходимо сохранить при передаче файла с помощью SMB. Последующие вызовы этого метода перезаписывают предыдущие флаги. Укажите значение 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 копирует сведения о владельце и списке управления доступом. Это то же самое, что установка всех флагов по отдельности.

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

Этот метод возвращает следующие значения HRESULT , а также другие.

Код возврата Описание
S_OK
Флаги успешно заданы.
BG_E_INVALID_STATE
Этот метод необходимо вызвать до перехода задания в состояние BG_JOB_STATE_TRANSFERRED .
E_INVALIDARG
Параметр Flags содержит флаг, который отсутствует в списке.

Комментарии

Эти флаги применяются к именам удаленных файлов, определяющим протокол SMB. BITS игнорирует флаги для передачи по протоколу HTTP.

BITS распространяет метки времени файла и атрибуты (не расширенные атрибуты) для файлов SMB.

BITS применяет сведения о владельце и ACL к файлу во время завершения передачи файла, а не при создании временного файла передачи. BITS не указывает дескриптор безопасности при создании временного файла передачи (файл наследует сведения ACL от целевого каталога). Если передаваемые данные являются конфиденциальными, приложение должно указать соответствующий список управления доступом в целевом каталоге, чтобы предотвратить несанкционированный доступ.

Чтобы убедиться, что для всех файлов в задании заданы правильные сведения о владельце и ACL, вызовите этот метод после создания задания и перед вызовом метода IBackgroundCopyJob::Resume . В противном случае те файлы, которые были переданы до установки флагов, не будут содержать сведения о соответствующем владельце и ACL.

Этот метод смоделирован после команды XCopy DOS.

Сведения о владельце и ACL не сохраняются при скачивании в файловую систему FAT.

Если у пользователя нет прав на локальном и удаленном компьютерах для копирования сведений о владельце или ACL, BITS переводит задание в состояние временной ошибки и задает код ошибки E_ACCESSDENIED.

Примеры

В следующем примере показано, как вызвать метод SetFileACLFlags , чтобы указать, какие сведения о владельце и ACL следует хранить в файлах, загружаемых BITS. В примере предполагается, что переменная 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 с пакетом обновления 2 (SP2), KB842773 в Windows Server 2003 и Windows XP
Минимальная версия сервера Windows Server 2008, Windows Server 2003 с пакетом обновления 1 (SP1)
Целевая платформа Windows
Header bits2_0.h (включая Bits.h)
Библиотека Bits.lib
DLL BitsPrx3.dll

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

IBackgroundCopyJob3

IBackgroundCopyJob3::GetFileACLFlags