2011-07-30 3 views
0

私はウェブサイトのコンテンツをmasmの文字列として取得したいと思います。私はwininetを使用していますが、ページはうまくいきますが、InternetReadFileを使用してコンテンツを読むと、同じバッファにすべてを入れる方法がわかりません。一度に読むのではありません。masmのバッファに追加しますか?

の端末でページ全体を印刷し
.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 

.... 

、しかし私はバッファにページ全体を持ちたい、だけでなく、最後のチャンクが読み込ま:

コードは次のようになります。

C++では、私はこのようにそれを使用します。

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 

は、どのように私はMASMでそれを行うことができますか?

答えて

1

あなたはこれを使用することができます:

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

と仮定すると、EBXは、検索の間で変更されません。別の変数も使用できます。

関連する問題