0

ウェブサイトのコンテンツを masm の文字列として取得したいのですが、wininet を使用していますが、ページは正常に要求されますが、InternetReadFile を使用してコンテンツを読み取る場合、すべてを同じバッファーに入れる方法がわかりません。一気読み。

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

.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

....

それはターミナルでページ全体を印刷しますが、最後に読み取ったチャンクだけでなく、ページ全体を Buffer に入れたいです。

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でそれを行うにはどうすればよいですか?

4

1 に答える 1

1

これを使用できます:

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

ebx が検索間で変更されないと仮定します。別の変数を使用することもできます。

于 2011-07-31T23:55:06.580 に答える