I have a function:
VOID GetOSVersion(PDWORD major, PDWORD minor, PDWORD build) { OSVERSIONINFO osver; ZeroMemory(&osver, sizeof(OSVERSIONINFO));
Those are pointers. They are not pointing at any memory you have allocated. They do not get "filled" in the function, they get used to access (uninitialized) memory.