LoliDeveloper
@LoliDeveloper
Линейная алгебра как смысл жизни

Что такое и зачем lpNumberOfBytesWritten в WINAPI функции WriteFile?

BOOL WriteFile(
  [in]                HANDLE       hFile,
  [in]                LPCVOID      lpBuffer,
  [in]                DWORD        nNumberOfBytesToWrite,
  [out, optional]     LPDWORD      lpNumberOfBytesWritten,
  [in, out, optional] LPOVERLAPPED lpOverlapped
);

Не понимаю за что тут отвечает четвёртый параметр. Это указатель на переменную, хранящую колличество записанных байт, но в примере тут просто какая-то магия и ничего не объясняется, как эти байты хранятся и откуда они там вообще берутся.
asm - NASM
; DWORD  bytes;    
    mov     ebp, esp
    sub     esp, 4

    ; hStdOut = GetstdHandle( STD_OUTPUT_HANDLE)
    push    -11
    call    _GetStdHandle@4
    mov     ebx, eax    

    ; WriteFile( hstdOut, message, length(message), &bytes, 0);
    push    0
    lea     eax, [ebp-4] ; ВОТ ЭТА СТРОКА ЭТО ЧТО? ПОЧЕМУ ТАК?
    push    eax ; и тут он передаёт как четвёртый аргумент. 
    push    (message_end - message)
    push    message
    push    ebx
    call    _WriteFile@20
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Дык английским же по белому написано - long pointer на переменную, в которой вернётся количество записанных байт.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы