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 |
---|---|
|
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. |
|
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. |
|
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. |
|
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. |
|
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 |
---|---|
|
Defina os sinalizadores com êxito. |
|
Você deve chamar esse método antes que o trabalho faça a transição para o estado BG_JOB_STATE_TRANSFERRED . |
|
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 |