Função InternetSetFilePointer (wininet.h)

Define uma posição de arquivo para InternetReadFile. Essa é uma chamada síncrona; no entanto, chamadas subsequentes para InternetReadFile poderão bloquear ou retornar pendentes se os dados não estiverem disponíveis no cache e o servidor não oferecer suporte a acesso aleatório.

Sintaxe

DWORD InternetSetFilePointer(
  [in]      HINTERNET hFile,
  [in]      LONG      lDistanceToMove,
  [in, out] PLONG     lpDistanceToMoveHigh,
  [in]      DWORD     dwMoveMethod,
  [in]      DWORD_PTR dwContext
);

Parâmetros

[in] hFile

Identificador retornado de uma chamada anterior para InternetOpenUrl (em uma URL HTTP ou HTTPS) ou HttpOpenRequest (usando o verbo GET ou HEAD HTTP e passado para HttpSendRequest ou HttpSendRequestEx). Esse identificador não deve ter sido criado com o INTERNET_FLAG_DONT_CACHE ou INTERNET_FLAG_NO_CACHE_WRITE valor definido.

[in] lDistanceToMove

A ordem baixa de 32 bits de um número assinado de 64 bits de bytes para mover o ponteiro do arquivo. Internet Explorer 7 e anteriores: InternetSetFilePointer usado para mover o ponteiro somente dentro dos limites de um LONG. Ao chamar essa versão mais antiga da função, lpDistanceToMoveHigh é reservado e deve ser definido como 0. Um valor positivo move o ponteiro para frente no arquivo; um valor negativo o move para trás.

[in, out] lpDistanceToMoveHigh

Um ponteiro para a ordem alta de 32 bits da distância de 64 bits assinada a ser movida. Se você não precisar da ordem alta de 32 bits, esse ponteiro deverá ser definido como NULL. Quando não for NULL, esse parâmetro também receberá a DWORD de ordem alta do novo valor do ponteiro do arquivo. Um valor positivo move o ponteiro para frente no arquivo; um valor negativo o move para trás. Internet Explorer 7 e anteriores: InternetSetFilePointer usado para mover o ponteiro somente dentro dos limites de um LONG. Ao chamar essa versão mais antiga da função, lpDistanceToMoveHigh é reservado e deve ser definido como 0.

[in] dwMoveMethod

Ponto de partida para a movimentação do ponteiro do arquivo. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
FILE_BEGIN
O ponto de partida é zero ou o início do arquivo. Se FILE_BEGIN for especificado, lDistanceToMove será interpretado como um local sem sinal para o novo ponteiro de arquivo.
FILE_CURRENT
O valor atual do ponteiro do arquivo é o ponto de partida.
FILE_END
A posição atual do fim do arquivo é o ponto de partida. Esse método falhará se o comprimento do conteúdo for desconhecido.

[in] dwContext

Esse parâmetro é reservado e deve ser 0.

Valor retornado

Se a função for bem-sucedida, ela retornará a posição atual do arquivo. Um valor retornado de INVALID_SET_FILE_POINTER indica uma possível falha e precisa ser seguido por ser uma chamada para GetLastError.

Como INVALID_SET_FILE_POINTER é um valor válido para o DWORD de baixa ordem do novo ponteiro de arquivo, o chamador deve marcar o valor retornado da função e o código de erro retornado por GetLastError para determinar se ocorreu ou não um erro. Se ocorrer um erro, o valor retornado de InternetSetFilePointer será INVALID_SET_FILE_POINTER e GetLastError retornará um valor diferente de NO_ERROR.

Se a função for bem-sucedida e lpDistanceToMoveHigh for NULL, o valor retornado será o DWORD de baixa ordem do novo ponteiro de arquivo.

Observe que, se a função retornar um valor diferente de INVALID_SET_FILE_POINTER, a chamada para InternetSetFilePointer terá sido bem-sucedida e não haverá necessidade de chamar GetLastError.

Se a função for bem-sucedida e lpDistanceToMoveHigh não for NULL, o valor retornado será o DWORD de ordem inferior do novo ponteiro de arquivo e lpDistanceToMoveHigh conterá o DWORD de ordem alta do novo ponteiro de arquivo.

Se um novo ponteiro de arquivo for um valor negativo, a função falhará, o ponteiro do arquivo não será movido e o código retornado por GetLastErrorserá ERROR_NEGATIVE_SEEK.

Se lpDistanceToMoveHigh for NULL e a nova posição do arquivo não se ajustar a um valor de 32 bits, a função falhará e retornará INVALID_SET_FILE_POINTER.

Comentários

Essa função não pode ser usada depois que o final do arquivo for atingido por InternetReadFile.

Para identificadores HINTERNET criados por HttpOpenRequest e enviados por HttpSendRequestEx, uma chamada para HttpEndRequest deve ser feita no identificador antes que o InternetSetFilePointer seja usado.

InternetSetFilePointer não poderá ser usado de forma confiável se o comprimento do conteúdo for desconhecido.

Como todos os outros aspectos da API WinINet, essa função não pode ser chamada com segurança de dentro de DllMain ou dos construtores e destruidores de objetos globais.

InternetSetFilePointer foi alterado ao longo do tempo. Na Internet Explorer 7 e anteriores, ele usava para mover o ponteiro somente dentro dos limites de um LONG. Ao chamar essa versão mais antiga da função, lDistanceToMove contém o valor inteiro. Um valor positivo move o ponteiro para frente no arquivo; um valor negativo o move para trás. lpDistanceToMoveHigh é reservado e está definido como 0. Nas versões atuais, lpDistanceToMoveHigh é um valor significativo e onde qualquer valor negativo seria indicado.

Nota O WinINet não dá suporte a implementações de servidor. Além disso, ele não deve ser usado de um serviço. Para implementações de servidor ou serviços, use Os Serviços HTTP do Microsoft Windows (WinHTTP).
 

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho wininet.h
Biblioteca Wininet.lib
DLL Wininet.dll

Confira também

Funções comuns

Funções WinINet