when you push a constant, the assembler assumes it's a dword in a use32 segment
so, you have created the structure, temporarily, on the stack
when you are done using it, pop, pop, it's gone
one thing that is convenient, in this case, is that a pointer to the structure is in ESP
because the structure pointer is the last parameter of the function, you can use it directly
if the function had other parms afterwards, you'd have to move the current stack pointer into a register
ReadFile and WriteFile are examples of this if you want to create a temporary nNumberOfBytes dword
push 0
mov edx,esp
INVOKE ReadFile,hFile,lpFileBuf,uFileSize,edx,NULL
pop ecx
that's because parameters are pushed onto the stack in reverse order
so - when NULL is pushed, ESP changes