Protocols/MSNP/MSNP13/SDrive
MSNP Protocol |
Version 13 |
General |
Overview • Changes |
Challenges • Sharing Folders |
Example Session |
SOAP Address Book |
Retrieving the lists |
Updating the membership lists |
Updating the AB |
Other features using SOAP |
Offline Messaging |
Passport 3.0 authentication |
Overview |
Introduction • Terms • Clients |
Reference |
Error List • Commands • Relying Party Suite • Spotlife |
Services |
XMPP • HTTP Gateway • Tabs • Activities |
Documentation |
Development Tools • MSNP Grid |
Polygamy • URLs used by MSN |
Documents |
Protocol Versions |
Version 21 |
Version 18 |
Version 16 |
Version 15 |
Version 14 |
Version 13 |
Version 12 |
Version 11 |
Version 9 |
Version 8 |
Version 2 |
MSNC |
Introduction • P2P • Object Descriptor • Display Pictures • File Transfer |
Scenarios |
Microsoft Messenger for Mac |
MSNP on WebTV (MSNTV) |
WLM 8.0 introduces a new feature called Sharing Folders.
The Client ID
In order to show to others client that yours supports Sharing Folders, you have to OR its Protocols/MSNP/Client ID with 0x400000
(4194304
) :
ClientID |= 4194304
XML messages
They are exchanged through the notification server. Warning : you CANNOT use this method to exchange plain-text messages.
Sending
This is done via the notification server, with the UUN command, what is a payload command:
UUN (TrId) destination@email.addr.ess 1 7\r\n message
Receiving
When someone sends you a XML message, the notification server sends :
UBN source@email.addr.ess 1 7\r\n message
The SNM tag
It takes these attributes :
- opcode : The operation code
- csid : A GUID that identifies the operation
- priority : Still unknown (sent only when the opcode is set to
SNM
) - reason : A HResult that gives more information (sent only when the opcode is set to
NAK
orINFO
)
Synchronization requests
They are done with a SNM tag having its opcode set to SNM
.
Example :
<SNM opcode="SNM" csid="{aaaaaaaa-bbbb-cccc-ddee-ffgghhiijjkk}" priority="n" />
Accepting a request
This is done with a SNM tag having its opcode set to ACK
.
Rejecting a request
This is done with a SNM tag having its opcode set to NAK
.
Example :
<SNM opcode="NAK" csid="{aaaaaaaa-bbbb-cccc-ddee-ffgghhiijjkk}" reason="0x80070000" />
Information ??
The opcode has been observed to be set to INFO
. The meaning of this opcode is still unknown.
Example :
<SNM opcode="INFO" csid="{aaaaaaaa-bbbb-cccc-ddee-ffgghhiijjkk}" reason="0x8F450005" />
Generating HResults
Some expressions
Logical (OR/AND/LSH) expression :
HResult = (Severity << 30) | ((Facility & 0x3FFF) << 16) | (Code & 0xFFFF)
"Graphical" expression :
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0| +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ |Sever| Facility | Code | | ity | | | +-----+-----------------------------------------+-----------------------------------------------+
Successes
Severity = 0 (0 << 30 = 0x00000000)
Warnings
Severity = 1 (1 << 30 = 0x40000000)
Errors
Severity = 2 (2 << 30 = 0x80000000)
When an operation raises a Windows error
Facility = 7 Code = WindowsErrorCode
You can get an error description for most of the Windows errors with the command-line utility Net.exe (case-insensitive) :
Net HelpMsg WindowsErrorCode
Facility = 0x0F45
Values of Code
:
0x0001
: Sharing Folders are disabled0x0002
: unknown, discovered by sniffing0x0005
: Sharing Folders are suspended
Critical errors
Severity = 3 (3 << 30 = 0xC0000000)
Examples
0x80070002
: File not foundSeverity = 2
Facility = 0x0007
Code = 0x0002
0x8F450001
: Sharing Folders are disabledSeverity = 2
Facility = 0x0F45
Code = 0x0001
Future
According to wikipedia, "The Sharing Folder feature has been discontinued in the latest version of Windows Live Messenger (2009), and replaced with access to Protocols/MSNP/Windows Live SkyDrive instead."