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 回答