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 |
---|---|
|
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. |
|
O valor atual do ponteiro do arquivo é o ponto de partida. |
|
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.
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 |