Método IBackgroundCopyFile2::SetRemoteName (bits2_0.h)
Altera o nome remoto para uma nova URL em um trabalho de download.
Sintaxe
HRESULT SetRemoteName(
[in] LPCWSTR Val
);
Parâmetros
[in] Val
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 a seção Membro remoteName e Comentários da estrutura BG_FILE_INFO .
Retornar valor
Esse método retorna os seguintes valores retornados, bem como outros.
Código de retorno | Descrição |
---|---|
|
Êxito |
|
O novo nome remoto é uma URL inválida ou a nova URL é muito longa (a URL não pode exceder 2.200 caracteres). |
|
Você não pode chamar esse método para trabalhos de upload ou upload-reply; chame esse método apenas para trabalhos de download. |
|
O estado do trabalho não pode ser BG_JOB_STATE_CANCELLED ou BG_JOB_STATE_ACKNOWLEDGED. |
Comentários
Normalmente, você chama esse método se quiser alterar o protocolo usado para transferir o arquivo (por exemplo, de SMB para HTTP) ou se quiser alterar o nome ou caminho do arquivo.
Esse método não serializa quando retorna. Para serializar a alteração, suspenda o trabalho, chame esse método (se alterar vários arquivos no trabalho, use um loop) e retome o trabalho. Chamar o método IBackgroundCopyJob::Resume serializa a alteração.
Se o carimbo de data/hora ou o tamanho do arquivo do novo nome remoto for diferente do nome remoto anterior ou o novo servidor não oferecer suporte à retomada de ponto de verificação (para nomes remotos HTTP), o BITS reiniciará o download. Caso contrário, a transferência será retomada da mesma posição no novo servidor. O BITS não reinicia arquivos já transferidos.
Se o nome remoto identificar um caminho SMB (bloco de mensagens do servidor), a tabela a seguir identificará possíveis códigos de erro que podem ocorrer depois que você retomar o trabalho. Esses erros colocam o trabalho no estado BG_JOB_STATE_ERROR .
Código do erro | Descrição |
---|---|
HRESULT_FROM_WIN32(ERROR_PATH_NOT_FOUND) |
O diretório não foi encontrado. |
HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) |
O arquivo não foi encontrado. |
HRESULT_FROM_WIN32(ERROR_ACCESS_DENIED) |
O usuário não tem acesso ao arquivo especificado no Val. |
Exemplos
O exemplo a seguir mostra como chamar o método SetRemoteName para alterar o nome remoto de um arquivo. O exemplo pressupõe que a variável IBackgroundCopyJob , pJob, seja válida e o trabalho contenha um ou mais arquivos.
IBackgroundCopyJob *pJob;
IEnumBackgroundCopyFiles* pFiles = NULL;
IBackgroundCopyFile* pFile = NULL;
IBackgroundCopyFile2* pFile2 = NULL;
WCHAR* pRemoteFileName = NULL;
ULONG cFileCount = 0;
hr = pJob->Suspend();
hr = pJob->EnumFiles(&pFiles);
if (SUCCEEDED(hr))
{
//Get the count of files in the job.
hr = pFiles->GetCount(&cFileCount);
//Enumerate the files in the job.
for (ULONG idx=0; idx<cFileCount; idx++)
{
hr = pFiles->Next(1, &pFile, NULL);
if (S_OK == hr)
{
//Get the local name of the file.
hr = pFile->GetRemoteName(&pRemoteFileName);
if (SUCCEEDED(hr))
{
//Determine if you want to replace the remote name of this file.
if (<CONDITIONGOESHERE>)
{
//Need to query the IBackgroundCopyFile interface for an IBackgroundCopyFile2
//interface pointer. The IBackgroundCopyFile2 interface contains the SetRemoteName method.
hr = pFile->QueryInterface(__uuidof(IBackgroundCopyFile2), (void**)&pFile2);
if (S_OK == hr)
{
hr = pFile2->SetRemoteName(L"<NEWURLGOESHERE>");
if (FAILED(hr))
{
//Handle error.
//Returns E_NOTIMPL if not a download job.
//Returns E_INVALIDARG if invalid URL.
}
}
else
{
//handle error. QueryInterface will return E_NOINTERFACE if the version of BITS
//running on the computer is less than BITS 2.0.
}
}
CoTaskMemFree(pRemoteFileName);
}
pFile->Release();
pFile = NULL;
}
else
{
//Handle error
break;
}
}
pFiles->Release();
pFiles = NULL;
}
hr = pJob->Resume(); //Force the job to serialize.
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 |