The constants are actually binary powers:
Value Description
0 Normal (vbNormal)
1 Read-only (vbReadOnly)
2 Hidden (vbHidden)
4 System (vbSystem)
16 Directory or folder (vbDirectory)
32 File has changed since last backup (vbArchive)
What you're showing as Normal in your list is actually a file that has its
Archive flag set (to indicate that the file has not been backed up yet).
A Read-only file that hasn't been backed up is vbReadOnly Or vbArchive, or
33.
A read-only, hidden, system file that hasn't been backed up is vbRead-only
Or vbHidden Or vbSystem Or vbArchive, or 38.
To determine whether a particular file is read-only, you'd And its
attributes with vbReadOnly. If the result is non-zero (or, more
specifically, if the result is equal to vbReadOnly), then the file is
read-only.
Now, the list above is the "official" list that comes from the documentation
(see, for instance,
http://msdn.microsoft.com/library/en-us/vbenlr98/html/vafctgetattr.asp but
it does seem incomplete.
For example, in NT and up, you can have compressed files. That attribute is
2048. You can also have encrypted files, which are designated with an
attribute of 8192. (a file can be either compressed or encrypted, not both).
There's a gap there: I would expect attributes of 64, 128, 256, 512, 1024
and 4096, but I don't see any definitions for those in any of the
documentation I've read.