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