it does not do anything.
the struct here is a variable type. Its only method is a constructor, which assists in creating a variable of the type.
then below the struct, you use it by creating a variable of the type (deduced by the compiler using auto) that is initialized via the other (unnecessary) variable "address" which is of a nonstandard type "dword" which is an alias for some sort of integer.
likely the struct will later be used in some binary soup routine that jacks the address and filler bytes together into some other monstrosity to ensure the bits are all correct in some binary pattern, possibly something used by networking tools.
it is not uncommon to see this kind of thing used to build up something bigger for a precise binary/byte arrangement, like standard file types, network packets, etc. Its likely there is some pragma command nearby that forces a struct alignment that makes this happen correctly, as struct members are padded, or the user is relying on the existing padding method and the filler helps make things work there, not sure (it looks like microsoft code).
This is ill-formed, though the compiler is not required to issue a diagnostic.
In addition, some identifiers are reserved for use by C++ implementations and shall not be used otherwise; no diagnostic is required.
-- Each identifier that contains a double underscore __ or begins with an underscore followed by an uppercase letter is reserved to the implementation for any use.
... https://eel.is/c++draft/lex.name#3