在masm中添加缓冲区?

时间:2011-07-30 02:33:50

标签: http buffer wininet masm masm32

我想在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

....

那会打印终端中的整个页面,但我希望将整个页面放入缓冲区,而不仅仅是最后一个块读取。

在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 个答案:

答案 0 :(得分:1)

您可以使用:

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

假设ebx在检索之间不会改变。你也可以使用另一个变量。