Добавление в буфер в MASM? - PullRequest
0 голосов
/ 30 июля 2011

Я хочу получить содержимое веб-сайта в виде строки в 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 Ответ

1 голос
/ 01 августа 2011

Вы можете использовать это:

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

Предполагая, что ebx не изменится между поиском.Вы можете использовать и другую переменную.

...