Compartilhar via


Método IBackgroundCopyJob::AddFile (bits.h)

Adiciona um único arquivo ao trabalho.

Sintaxe

HRESULT AddFile(
  [in] LPCWSTR RemoteUrl,
  [in] LPCWSTR LocalName
);

Parâmetros

[in] RemoteUrl

Cadeia de caracteres terminada em nulo que contém o nome do arquivo no servidor. Para obter informações sobre como especificar o nome remoto, consulte o membro RemoteName e a seção Comentários da estrutura BG_FILE_INFO .

[in] LocalName

Cadeia de caracteres terminada em nulo que contém o nome do arquivo no cliente. Para obter informações sobre como especificar o nome local, consulte o membro LocalName e a seção Comentários da estrutura BG_FILE_INFO .

Retornar valor

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

Código de retorno Descrição
S_OK
O arquivo foi adicionado com êxito ao trabalho.
BG_E_TOO_MANY_FILES
Os trabalhos de upload só podem conter um arquivo; não é possível adicionar outro arquivo ao trabalho.
BG_E_TOO_MANY_FILES_IN_JOB
A configuração de Política de Grupo MaxFilesPerJob determina quantos arquivos um trabalho pode conter. Adicionar o arquivo ao trabalho excede o limite de MaxFilesPerJob.
E_INVALIDARG
Você pode receber esse erro por um dos seguintes motivos:
  • O nome do arquivo local ou remoto não é válido.
  • O nome do arquivo remoto usa um protocolo sem suporte.
  • O nome do arquivo local foi especificado usando um caminho relativo.
E_ACCESSDENIED
O usuário não tem permissão para gravar no diretório especificado no cliente.

Comentários

Para adicionar mais de um arquivo por vez a um trabalho, chame o método IBackgroundCopyJob::AddFileSet . É mais eficiente chamar o método AddFileSet ao adicionar vários arquivos a um trabalho do que chamar o método AddFile em um loop. Para obter mais informações, consulte Adicionando arquivos a um trabalho.

Para adicionar um arquivo a um trabalho do qual o BITS baixa intervalos de dados do arquivo, chame o método IBackgroundCopyJob3::AddFileWithRanges .

Trabalhos de upload só podem conter um arquivo. Se você adicionar um segundo arquivo, o método retornará BG_E_TOO_MANY_FILES.

Para downloads, o BITS garante que a versão de um arquivo (com base no tamanho e na data do arquivo, não no conteúdo) que ele transfere será consistente; no entanto, ele não garante que um conjunto de arquivos será consistente. Por exemplo, se o BITS estiver no meio do download do segundo de dois arquivos no trabalho no momento em que os arquivos são atualizados no servidor, o BITS reiniciará o download do segundo arquivo; no entanto, o primeiro arquivo não é baixado novamente.

Observe que, se você tiver o arquivo que está sendo baixado do servidor, deverá criar uma nova URL para cada nova versão do arquivo. Se você usar a mesma URL para novas versões do arquivo, alguns servidores proxy poderão fornecer dados obsoletos do cache porque não verificam com o servidor original se o arquivo está obsoleto.

Para uploads, o BITS gerará um erro se o arquivo local for alterado enquanto o arquivo estiver sendo transferido. O código de erro é BG_E_FILE_CHANGED e o contexto é BG_ERROR_CONTEXT_LOCAL_FILE.

O BITS transfere os arquivos dentro de um trabalho sequencialmente. Se ocorrer um erro durante a transferência de um arquivo, o trabalho será movido para um estado de erro e nenhum arquivo no trabalho será processado até que o erro seja resolvido.

Por padrão, um usuário pode adicionar até 200 arquivos a um trabalho. Esse limite não se aplica a administradores ou contas de serviço. Para alterar o padrão, defina as políticas de grupo MaxFilesPerJob .

Antes do Windows Vista: Não há limite para o número de arquivos que um usuário pode adicionar a um trabalho.

Para saber mais sobre escalabilidade, confira Práticas recomendadas ao usar BITS.

Exemplos

Para obter um exemplo que adiciona um único arquivo a um trabalho, consulte Adicionando arquivos a um trabalho.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP
Servidor mínimo com suporte Windows Server 2003
Plataforma de Destino Windows
Cabeçalho bits.h
Biblioteca Bits.lib
DLL QmgrPrxy.dll

Confira também

IBackgroundCopyJob3::AddFileWithRanges

IBackgroundCopyJob::AddFileSet

IBackgroundCopyJob::EnumFiles

IBackgroundCopyJob::GetState

IBackgroundCopyJob::Resume