# Table of contents:
# Introduction
This page goes on about various (usually client-related) things that don't really have a home as their own page (yet?).
Sections that are deemed complete enough may be migrated to a dedicated page in the files category.
# Object Reference
Otherwise known as an "MSNObject" or msnobj, an Object Reference is a reference to an Object stored in the Object Store.
Introduced in Client Version 6.0 with MSNP9.
# msnobjThis element has six attributes:
Creator: The user handle that created the Object Reference. Usually the current user.Size: The file size of the Object.Type: The category number of the Object:1: ?2: A custom emoticon.3: A (static) display picture.4: ?5: A (static) background6: ?7: A Dynamic Display Picture.8: A Wink.9: ?10: A Dynamic Background.11: A voice clip.12: ?13: ?14: Location XML OR A Signature Sound15: ?16: ?17: ?
Location: A filename to give this Object. Only used in version 1 Object Stores.Friendly: The friendly (display) name of the Object. Usually in the format of UTF-16 encoded as base64.SHA1D: The SHA1 hash of the Object's data. Converted to base64. Used as the base filename in version 2 Object Stores.
This element has twelve optional attributes:
Url: Unknown.SHA1C: A SHA1 hash of all field names and data combined in order BEFORE this attribute without delimination.Endpoint: The machine GUID that created this Object Reference.contenttype: The content avaliability mode:D: Downloadable. Allows copying.P: Premium. Copying is prohibited.M: Merchant. Seems to allow copying.
contentid: The content's ID. This uses the respective<item>element'scontentidattribute.packid: The pack's ID. This uses the respective<item>element'spackidattribute.partnerid: The content partner ID. If one is not set in the Messenger Content Package Document, a value of-1is used.stamp: The PKCS#7 signature. Required for signed content, like Winks, Dynamic Display Pictures and Dynamic Backgrounds.avatarid: Used in down-level Dynamic Display Pictures. This is always set to6AD16E96-BC60-401B-89E2-5BB545DD2BF0.avatarcontentid: Used in down-level Dynamic Display Pictures. This is the SHA1 hash of the Dynamic Display Picture cabinet associated with the down-level image.PlaybackLength: Signature sounds only. The number of milliseconds the sound will play for.DisplayNamePostFix: signature sounds only. Unknown. Usually set to0.
# Examples
NOTE: The XML in these examples has been exploded for visibility and formatting reasons.
# Plain
<msnobj
Creator="example@hotmail.com"
Size="889"
Type="2"
Location="example.png"
Friendly="AAA="
SHA1D="L/Q/zm2QjISFKvv2HBmxLr9lox8="
SHA1C="MA0ktY4VStXZ0amX5uQyosUTOak="
/>
# URL Encoded
%3Cmsnobj
%20Creator%3D%22example%40hotmail.com%22
%20Size%3D%2225235%22
%20Type%3D%223%22
%20Location%3D%22uexA4DE.dat%22
%20Friendly%3D%22AAA%3D%22
%20SHA1D%3D%22vP1ppB+xiFQ8ceZivRe0uCaYLIU%3D%22
%20SHA1C%3D%22DBRJPnGb+wBYawENkdor1bOdYUs%3D%22
%2F%3E
# XML Encoded
<msnobj
Creator="example%40hotmail.com"
Type="14"
SHA1D="2KLAaGhA2etdJPm61taqpbuGyd8="
Size="267"
Location="0"
Friendly="RQB4AGEAbQBwAGwAZQAgAEwAbwBjAGEAdABpAG8AbgAgADEAAAA="
/>
# Object Store
The Object Store stores Objects based on their category.
A list of object categories the Object Store accepts:
Default: Unknown. ID0.Avatar: Unknown. ID1.CustomEmoticons: Custom emoticons. ID2.UserTile: Profile pictures. ID3.SharedFile: Unknown. ID4.Backgrounds: Backgrounds. ID5.History: Unknown. ID6.DeluxeDisplayPictures: Dynamic Display Pictures. ID7.Winks3: Winks. ID8.MapFile: Unknown. ID9.DynamicBackgrounds: Dynamic Backgrounds. ID10.VoiceClip: Voice clips. ID11.PlugInState: Unknown. ID12.RoamingObjects: Unknown. ID13.Location: Location XML. ID14. Replaced withSignatureSoundsin Client Version 9.0.SignatureSounds: Signature Sounds. ID14. ReplacedLocation.Photoshare: Unknown. ID15.Scenes: Scenes. ID16.WebcamDDP: Webcam-based Dynamic Display Pictures. ID17.
# Version 1
Version 1 Object Stores use map.dat files in each category folder.
Filenames are generated based of TFRxxxx.dat, where xxxx is up to 4 nybbles of hexadecimal. Leading zeros are truncated.
# Version 2
Version 2 Object Stores contain the file objectstore.v2 in their root directory.
Instead of map.dat files, the format of SHA1D.id2 is used,
where SHA1D is the base64-encoded SHA-1 hash of the object's data.
Filenames are based off the the SHA1D as well, as the format SHA1D.dt2.
NOTE: Version 2 Object Stores require that the MemberIdLow and MemberIdHigh fields
of the initial profile to be a non-zero value.
If they are set to 0, trying to use the Object Store returns in a E_FAIL (0x80004005) HRESULT.
# Location XML
Sent by Client Versions 8.1.0064 to 8.1.0068 for the "Share my location" feature.
# RootThis element has two children:
<Name>: Described below.<Location>: Described below.
This element has only one attribute:
name: The display name of the location.
This element has two children:
<Latlong>: Described below.<Address>: Described below.
This element has five attributes:
lat: The latitude.long: The longitude.precision: The precision of the location information.3works.
This element has five attributes:
street: The street address.city: The city name.state: The state name.code: The post code or ZIP code.country: The country name.
# Example
NOTE: The XML in this example has been exploded for visibility and formatting reasons.
<Root>
<Name
name="Example Location 1"
></Name>
<Location>
<Latlong
lat="0.000000"
long="0.000000"
precision="3"
></Latlong>
<Address
street="123 Example Street"
city="Example City"
state="Example State"
code="123456"
country="Example Country"
></Address>
</Location>
</Root>