Compartilhar via


Método IBackgroundCopyJob3::SetFileACLFlags (bits2_0.h)

Especifica as informações de proprietário e ACL a serem mantidas ao usar o SMB para baixar ou carregar um arquivo.

Sintaxe

HRESULT SetFileACLFlags(
  [in] DWORD Flags
);

Parâmetros

[in] Flags

Sinalizadores que identificam o proprietário e as informações de ACL a serem mantidas ao transferir um arquivo usando SMB. Chamadas subsequentes para esse método substituem os sinalizadores anteriores. Especifique 0 para remover os sinalizadores do trabalho. Você pode especificar qualquer combinação dos sinalizadores a seguir.

Valor Significado
BG_COPY_FILE_OWNER
Se definido, as informações de proprietário do arquivo serão mantidas. Caso contrário, o usuário que chama o método Complete é o proprietário do arquivo.

Você deve ter SeRestorePrivilege para definir esse sinalizador. O grupo de administradores contém o privilégio SeRestorePrivilege.

BG_COPY_FILE_GROUP
Se definido, as informações de grupo do arquivo serão mantidas. Caso contrário, o BITS usará o grupo primário do proprietário do trabalho para atribuir as informações do grupo ao arquivo.

Você deve ter SeRestorePrivilege para definir esse sinalizador. O grupo de administradores contém o privilégio SeRestorePrivilege.

BG_COPY_FILE_DACL
Se definido, o BITS copia os ACEs explícitos do arquivo de origem e aces herdáveis da pasta de destino. Caso contrário, o BITS copia os ACEs herdáveis da pasta de destino. Se a pasta de destino não contiver ACEs herdáveis, o BITS usará a DACL padrão da conta do proprietário.
BG_COPY_FILE_SACL
Se definido, o BITS copia os ACEs explícitos do arquivo de origem e aces herdáveis da pasta de destino. Caso contrário, o BITS copia os ACEs herdáveis da pasta de destino.

Você deve ter SeSecurityPrivilege nos computadores locais e remotos para definir esse sinalizador. O grupo de administradores contém o privilégio SeSecurityPrivilege.

BG_COPY_FILE_ALL
Se definido, o BITS copia as informações de proprietário e ACL. Isso é o mesmo que definir todos os sinalizadores individualmente.

Retornar valor

Esse método retorna os seguintes valores HRESULT , bem como outros.

Código de retorno Descrição
S_OK
Defina os sinalizadores com êxito.
BG_E_INVALID_STATE
Você deve chamar esse método antes que o trabalho faça a transição para o estado BG_JOB_STATE_TRANSFERRED .
E_INVALIDARG
O parâmetro Flags contém um sinalizador que não está na lista.

Comentários

Esses sinalizadores se aplicam a nomes de arquivos remotos que especificam o protocolo SMB. O BITS ignora os sinalizadores para transferências HTTP.

O BITS propaga os carimbos de data/hora do arquivo e os atributos (atributos não estendidos) para arquivos SMB.

O BITS aplica as informações de proprietário e ACL ao arquivo no momento em que a transferência de arquivo é concluída, não quando ele cria o arquivo de transferência temporária. O BITS não especifica um descritor de segurança quando cria o arquivo de transferência temporária (o arquivo herda as informações de ACL do diretório de destino). Se os dados transferidos forem confidenciais, o aplicativo deverá especificar uma ACL apropriada no diretório de destino para impedir o acesso não autorizado.

Para garantir que as informações adequadas de proprietário e ACL sejam definidas em todos os arquivos no trabalho, chame esse método depois de criar o trabalho e antes de chamar o método IBackgroundCopyJob::Resume . Caso contrário, os arquivos transferidos antes da definição dos sinalizadores não conterão as informações apropriadas de proprietário e ACL.

Esse método é modelado após o comando XCopy DOS.

As informações de proprietário e ACL não serão mantidas se você baixar para um sistema de arquivos FAT.

Se o usuário não tiver privilégios nos computadores locais e remotos para copiar as informações do proprietário ou da ACL, o BITS colocará o trabalho em um estado de erro transitório e definirá o código de erro como E_ACCESSDENIED.

Exemplos

O exemplo a seguir mostra como chamar o método SetFileACLFlags para especificar quais informações de proprietário e ACL devem ser mantidas com os arquivos baixados pelo BITS. O exemplo pressupõe que a variável IBackgroundCopyJob , pJob, é válida, aponta para um novo trabalho e está suspensa.

     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.
     }

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista, Windows XP com SP2,KB842773 no Windows Server 2003 e Windows XP
Servidor mínimo com suporte Windows Server 2008, Windows Server 2003 com SP1
Plataforma de Destino Windows
Cabeçalho bits2_0.h (inclua Bits.h)
Biblioteca Bits.lib
DLL BitsPrx3.dll

Confira também

IBackgroundCopyJob3

IBackgroundCopyJob3::GetFileACLFlags