添加到masm中的缓冲区?

Posted

技术标签:

【中文标题】添加到masm中的缓冲区?【英文标题】:Adding to buffer in masm? 【发布时间】:2011-07-30 02:33:50 【问题描述】:

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

你可以用这个:

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

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

【讨论】:

以上是关于添加到masm中的缓冲区?的主要内容,如果未能解决你的问题,请参考以下文章

在缓冲区中添加 2 个正弦波会产生噪音

Linux shell之sed

将包含循环缓冲区的类添加到 Vector

R:当点重叠/在距离内时追加数据;将缓冲区矩形添加到 set1,将半径添加到 set2

在链接时间内在特定部分添加变量

C++ 中的高效循环缓冲区,将传递给 C 风格的数组函数参数