Global IDs
by BMB
Global ID (GID) is the four byte (two words) ID of a form,
atom stream or piece of art that is used by AOL when referencing
objects. Typically each form has a GID. The GID is displayed
in two or three parts with a dash between each part.. The
two part format is always separated into two words (where
each word is two bytes), a hi word (W1) and a lo word (W2).
The left most number is the hi word and the number to the
right of the dash is the lo word. The conversion formula to
a numerical form without a dash would be as follows:
W = (W1*65536) + W2.
For example:
GID = 32-30
W=(32*65536)+30=2097182
For three part GIDs, such as 1-0-2240, the left most number
is the highest byte (B1) of the four byte GID. The next number
is the low byte (B2) of the hi word. The last number is the
lo word (W2). Every time the lo word (W2) of a GID reaches
65536 that number goes back to 0 and the low byte (B2) of
the hi word increases by 1 (instead of going from '0-0-65535'
to '0-0-65536', it goes from '0-0-65535' to '0-1-0'). Similarly,
every time the low byte (B2) of the hi word reaches 256 it
returns to 0 and the highest byte (B1) increases by 1 (instead
of going from '0-255-65535' to '0-256-0', it goes from '0-255-65535'
to '1-0-0'). This means that the absolute highest possible
GID is '255-255-65535'. If you attempt to send '255-255-65536'
along with any token AOL will automatically send back '0-0-0'.
W=(B1*256 + B2)*65536 + W2
For Example, in GID 1-0-2240, B1=1, B2=0, and W2=2240.
W=(1*256+0)*65536 + 2240 =
Using the above equation I was able to determine that there
are 4,294,967,295 possible arguments.
Sometimes having zeros in front of arguments when they aren't
needed fucks things up. I created a form with a list box that
linked to the first 999 software libraries. I found that sending
<"eB", 00001> or <"eB", 00563> would not send back the libraries
that I asked for. I fixed the problem by changing them to
<"eB", 1> or <"eB", 563>.
When the first number or the first two numbers in an argument
are zeros they aren't needed. Sending '0-0-420' or '0-420'
is the same as just sending '420'.
|