2011-07-30 3 views
0

Je veux récupérer un contenu de site Web sous forme de chaîne en masm, j'utilise wininet et la page est demandée bien, mais quand j'utilise InternetReadFile pour lire le contenu je ne sais pas comment mettre tout dans le même tampon, parce que ce n'est pas tout à la fois lu.Ajouter au tampon dans masm?

Le code ressemble à:

.data? 
Bufferlen dd ? 
Buffer db 65536 dup(?) 

.... 


get_page: 
    invoke InternetReadFile, hRequest, addr Buffer, sizeof Buffer, addr Bufferlen 

    .if Bufferlen != 0 
     invoke StdOut, offset Buffer 
     jmp short get_page 
    .endif 

.... 

Ce imprimerait la page entière dans le terminal, mais je veux avoir la page entière dans le tampon, non seulement le dernier morceau lu.

En C++ je l'utiliser comme ceci:

int BufferPointer = 0; 
get_page: 
    invoke InternetReadFile, hRequest, addr Buffer+BufferPointer, sizeof Buffer, addr Bufferlen 

    .if Bufferlen != 0 
     BufferPointer += Bufferlen; <- PSEUDO CODE : This is how I do it in C++ 
     jmp short get_page 
    .endif 

invoke StdOut, offset Buffer 

Comment puis-je faire cela dans MASM?

Répondre

1

Vous pouvez utiliser ceci:

mov ebx, offset Buffer 
get_page: 
    add ebx, Bufferlen 
    invoke InternetReadFile, hRequest, ebx, sizeof Buffer, addr Bufferlen 

EBX En supposant ne changera pas entre la récupération. Vous pouvez utiliser aussi une autre variable.