<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8787361</id><updated>2011-04-21T14:45:56.036-07:00</updated><title type='text'>Moore's Mind</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8787361.post-114650747876854907</id><published>2006-05-01T11:16:00.000-07:00</published><updated>2006-05-01T11:18:15.273-07:00</updated><title type='text'>Peer Collaboration - Inviting</title><content type='html'>My third article about &lt;a href="http://www.codeproject.com/aspnet/PeerCollabInviting.asp"&gt;Peer Collaboration - Inviting&lt;/a&gt; in Windows Vista has been posted at Code Project.  Next topic will be about Contacts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-114650747876854907?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/114650747876854907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=114650747876854907' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114650747876854907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114650747876854907'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2006/05/peer-collaboration-inviting.html' title='Peer Collaboration - Inviting'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-114591338374625477</id><published>2006-04-24T14:14:00.000-07:00</published><updated>2006-04-24T14:16:23.746-07:00</updated><title type='text'>Peer Collaboration - Application Registration</title><content type='html'>My second article about &lt;a href="http://www.codeproject.com/csharp/PeerCollaborationApps.asp"&gt;Peer Collaboration - Application Registration&lt;/a&gt; has been posted at &lt;a href="http://www.codeproject.com"&gt;Code Project&lt;/a&gt;.  Next up is Invitations to People Near Me. Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-114591338374625477?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/114591338374625477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=114591338374625477' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114591338374625477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114591338374625477'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2006/04/peer-collaboration-application.html' title='Peer Collaboration - Application Registration'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-114589597463758274</id><published>2006-04-24T09:20:00.000-07:00</published><updated>2006-04-24T14:14:31.496-07:00</updated><title type='text'>People Near Me Article Posted</title><content type='html'>My first article about &lt;a href="http://www.codeproject.com/dotnet/PeerCollabPeopleNearMe.asp"&gt;Peer Collaboration - People Near Me&lt;/a&gt; has just been posted on &lt;a href="http://www.codeproject.com"&gt;Code Project&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here's a &lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=165133"&gt;video and useful comments&lt;/a&gt; about Vista Collaboration over at Channel 9.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-114589597463758274?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/114589597463758274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=114589597463758274' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114589597463758274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114589597463758274'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2006/04/people-near-me-article-posted.html' title='People Near Me Article Posted'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-114544962944703244</id><published>2006-04-19T05:27:00.000-07:00</published><updated>2006-04-19T05:27:09.503-07:00</updated><title type='text'>Well-known security identifiers in Windows operating systems</title><content type='html'>If you ever poke around the registry like I do from time to time and wondered what all those SID's are under HKEY_USERS, then this KB article will be useful: &lt;a href="http://support.microsoft.com/kb/243330"&gt;Well-known security identifiers in Windows operating systems&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-114544962944703244?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114544962944703244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114544962944703244'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2006/04/well-known-security-identifiers-in.html' title='Well-known security identifiers in Windows operating systems'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-114541772127471064</id><published>2006-04-18T20:24:00.000-07:00</published><updated>2006-04-18T20:35:21.726-07:00</updated><title type='text'>PEER_APPLICATION_ALL_USERS</title><content type='html'>I've been using the PeerCollabRegisterApplication API to register applications.  When the registration type is PEER_APPLICATION_CURRENT_USER it makes sense.  However, when the registration type is PEER_APPLICATION_ALL_USERS, I see an odd behavior.  Under User1 account, I register Notepad for All Users.  When I login to User2 account and enumerate what's registered for All Users, I would expect to see Notepad, however, I don't.&lt;br /&gt;&lt;br /&gt;I'm using the February CTP of Windows Vista.  Any comments is appreciated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-114541772127471064?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/114541772127471064/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=114541772127471064' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114541772127471064'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114541772127471064'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2006/04/peerapplicationallusers.html' title='PEER_APPLICATION_ALL_USERS'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-114519788104353132</id><published>2006-04-16T07:31:00.000-07:00</published><updated>2006-04-19T05:46:22.066-07:00</updated><title type='text'>PEER_EVENT_PEOPLE_NEAR_ME_CHANGED</title><content type='html'>So in my first article about the new peer-to-peer collaboration features in Windows Vista, I came across something interesting.&lt;br /&gt;&lt;br /&gt;After registering for events, I successfully get notifications when a user account on the subnet signs into People Near Me.  &lt;br /&gt;&lt;br /&gt;I noticed that when the screen saver kicks in, collaboration applications receieve a DELETED event.  I suppose this makes sense, since the screen saver is set to force the user to re-login.&lt;br /&gt;&lt;br /&gt;I also noticed that when remote user accounts that are signed-in, log out, there is no DELETED event.  I think this might be a bug.  I'm only testing with multiple virtual machines on one computer, but the behavior is inconsistent with what I'd expect.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-114519788104353132?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/114519788104353132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=114519788104353132' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114519788104353132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114519788104353132'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2006/04/peereventpeoplenearmechanged.html' title='PEER_EVENT_PEOPLE_NEAR_ME_CHANGED'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-114519774542084437</id><published>2006-04-16T07:29:00.000-07:00</published><updated>2006-04-16T07:29:05.526-07:00</updated><title type='text'>Writing Article Again and MVP</title><content type='html'>After a couple of months break, I'm finally back to writing peer-to-peer articles.  Expect the next one in a couple of days.&lt;br /&gt;&lt;br /&gt;During this break, I was awarded a Microsoft MVP for Windows Networking.  Besides recognition of my contribution to the public domain, it comes with some goodies, including a much needed MSDN media set.&lt;br /&gt;&lt;br /&gt;Tripp / Ravi, if you had anything to do with this, a BIG thanks to you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-114519774542084437?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114519774542084437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114519774542084437'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2006/04/writing-article-again-and-mvp.html' title='Writing Article Again and MVP'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-114104793058463253</id><published>2006-02-27T05:33:00.000-08:00</published><updated>2006-02-27T05:45:30.656-08:00</updated><title type='text'></title><content type='html'>Just installed the February CTP of Vista, when I call PeerCollabSignin to sign-in, a PEER_E_PRIVACY_DECLINED error is returned.  There is no documentation on this error code.&lt;br /&gt;&lt;br /&gt;I'm guessing, its because I haven't visited Control Panel, People Near Me and agreed to the privacy statement.&lt;br /&gt;&lt;br /&gt;When I run the Windows Collaboration application, it appears to launch a COM surrogate process that pops up the "Set up People Near Me" window and gets me to set my display name and agree to the privacy statement.  &lt;br /&gt;&lt;br /&gt;In my opinion, this same behavior should be built-in to the PeerCollabSignin method when the sign-in flags are either NEARME or ALL.&lt;br /&gt;&lt;br /&gt;Comments are welcome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-114104793058463253?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/114104793058463253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=114104793058463253' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114104793058463253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114104793058463253'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2006/02/just-installed-february-ctp-of-vista.html' title=''/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-114088363889448493</id><published>2006-02-25T07:17:00.000-08:00</published><updated>2006-02-26T11:46:37.380-08:00</updated><title type='text'>Bug in PeerGroupIssueCredentials</title><content type='html'>After trying to figure out how this function works for nearly a week now, I've come to the conclusion, its not working as advertised.  Part of the problem, is that none of Microsoft's example code uses this function.&lt;br /&gt;&lt;br /&gt;There are three ways to use PeerGroupIssueCredentials:&lt;br /&gt;&lt;br /&gt;1) PeerGroupIssueCredentials(hGroup, pwzSubjectIdentity, NULL, 0, ppwzInvitation)&lt;br /&gt;&lt;br /&gt;In this form, NULL credentials are passed.  The information (member data and credentials) stored in the peer database is used.  This is a useful way to re-issue a lost invitation.&lt;br /&gt;&lt;br /&gt;2) PeerGroupIssueCredentials(hGroup, pwzSubjectIdentity, pCredentialInfo, 0, ppwzInvitation)&lt;br /&gt;&lt;br /&gt;In this form, new credentials can be passed in order to generate a new invitation.  Typically, this would extend the expiry date of the member or change their role or friendly name.  I get a valid invitation. However, when I use this invitation to re-join the group, the updated credentials are not taken.&lt;br /&gt;&lt;br /&gt;3) PeerGroupIssueCredentials(hGroup, pwzSubjectIdentity, pCredentialInfo, &lt;strong&gt;1&lt;/strong&gt;, ppwzInvitation)&lt;br /&gt;&lt;br /&gt;Same as 2) except the newly created GMC (invitation) is published to the group and automatically picked up by the member.  When the member connects or is connected, I see the PEER_GROUP_EVENT_MEMBER_CHANGED event with changeType=PEER_MEMBER_JOINED.  However, again, the updated credentials are not taken.&lt;br /&gt;&lt;br /&gt;If anyone has a working example, showing the expiry date of a member being updated correctly using PeerGroupIssueCredentials, I would really appreciate some help.&lt;br /&gt;&lt;br /&gt;The other interesting limitation that I came across is that there doesn't appear to be a way to send a change to PEER_MEMBER.pwzAttributes back to the group.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-114088363889448493?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/114088363889448493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=114088363889448493' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114088363889448493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/114088363889448493'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2006/02/bug-in-peergroupissuecredentials.html' title='Bug in PeerGroupIssueCredentials'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-113612535812940120</id><published>2006-01-01T06:12:00.000-08:00</published><updated>2006-01-01T06:39:36.403-08:00</updated><title type='text'>Bug in PEER_RECORD.pszAttributes</title><content type='html'>I've been implementing a class to simplify setting and managing the XML attributes associated with a PEER_RECORD. I figured a useful approach to associating attributes is to implement a method that allows you to simply provide an instance of a run-time object, and use reflection to get a list of properties and their current values.&lt;br /&gt;&lt;br /&gt;So everything was working great, until I decided to try extracting the attributes of the current PEER_RECORD properties. Whenever I did this and called PeerGraphAddRecord, the error PEER_E_INVALID_ATTRIBUTES. Here is the pszAttribute XML fragement:&lt;br /&gt;&lt;br /&gt;&amp;lt;attributes&amp;gt;&lt;br /&gt;&amp;lt;attribute name=&amp;quot;Type&amp;quot; &lt;br /&gt;type=&amp;quot;string&amp;quot;&amp;gt;4d5b2f11-6522-433b-84ef-a298e60757b0&amp;lt;/attribute&amp;gt;&lt;br /&gt;&amp;lt;attribute name=&amp;quot;ID&amp;quot; &lt;br /&gt;type=&amp;quot;string&amp;quot;&amp;gt;00000000-0000-0000-0000-000000000000&amp;lt;/attribute&amp;gt;&lt;br /&gt;&amp;lt;attribute name=&amp;quot;Version&amp;quot; type=&amp;quot;int&amp;quot;&amp;gt;0&amp;lt;/attribute&amp;gt;&lt;br /&gt;&amp;lt;attribute name=&amp;quot;CreationTime&amp;quot; &lt;br /&gt;type=&amp;quot;date&amp;quot;&amp;gt;1600-12-31T17:00:00.0000000-07:00&amp;lt;/attribute&amp;gt;&lt;br /&gt;&amp;lt;attribute name=&amp;quot;ExpirationTime&amp;quot; &lt;br /&gt;type=&amp;quot;date&amp;quot;&amp;gt;2006-01-01T07:18:31.0507500-07:00&amp;lt;/attribute&amp;gt;&lt;br /&gt;&amp;lt;attribute name=&amp;quot;LastModifiedTime&amp;quot; &lt;br /&gt;type=&amp;quot;date&amp;quot;&amp;gt;1600-12-31T17:00:00.0000000-07:00&amp;lt;/attribute&amp;gt;&lt;br /&gt;&amp;lt;attribute name=&amp;quot;DataAsStream&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;System.IO.MemoryStream&amp;lt;/attribute&amp;gt;&lt;br /&gt;&amp;lt;attribute name=&amp;quot;DataAsString&amp;quot; type=&amp;quot;string&amp;quot;&amp;gt;a&amp;lt;/attribute&amp;gt;&lt;br /&gt;&amp;lt;/attributes&amp;gt;&lt;br /&gt;&lt;br /&gt;Turns out, that when I remove the two dates with year 1600, the error no longer occurs.&lt;br /&gt;&lt;br /&gt;I've confirmed these are valid XML dates by loading them into a Dataset with a column type of DateTime. They are interpreted and converted correctly.&lt;br /&gt;&lt;br /&gt;I'm using Windows XP SP2. Guess I'll report the bug to Microsoft.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-113612535812940120?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/113612535812940120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=113612535812940120' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113612535812940120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113612535812940120'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2006/01/bug-in-peerrecordpszattributes.html' title='Bug in PEER_RECORD.pszAttributes'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-113590013968546692</id><published>2005-12-29T15:48:00.000-08:00</published><updated>2005-12-29T15:48:59.696-08:00</updated><title type='text'>Peer Graph - Records</title><content type='html'>Posted another article at Code Project: &lt;a href="http://www.codeproject.com/soap/PeerGraphRecords.asp"&gt;Peer Graph - Records&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-113590013968546692?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113590013968546692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113590013968546692'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/12/peer-graph-records.html' title='Peer Graph - Records'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-113572422669920301</id><published>2005-12-27T14:57:00.000-08:00</published><updated>2005-12-27T14:57:06.746-08:00</updated><title type='text'>Windows &lt;3 P2P</title><content type='html'>&lt;a href="http://blogs.msdn.com/vbobov/default.aspx"&gt;Windows &lt;3 P2P&lt;/a&gt;.  I think I'll be watching this blog closely.  Looks like Vladimir will have some interesting content in the coming months as Windows Collaboration in Vista is completed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-113572422669920301?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113572422669920301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113572422669920301'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/12/windows-3-p2p.html' title='Windows &lt;3 P2P'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-113443316095116419</id><published>2005-12-12T16:19:00.000-08:00</published><updated>2005-12-12T18:34:36.230-08:00</updated><title type='text'>Peer Graph - Exchanging Private Data - The Code Project - C# Programming</title><content type='html'>Posted another article at Code Project: &lt;a href="http://www.codeproject.com/csharp/ExchangingPrivateData.asp"&gt;Peer Graph - Exchanging Private Data&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-113443316095116419?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/113443316095116419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=113443316095116419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113443316095116419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113443316095116419'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/12/peer-graph-exchanging-private-data.html' title='Peer Graph - Exchanging Private Data - The Code Project - C# Programming'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-113275357179209592</id><published>2005-11-23T05:46:00.000-08:00</published><updated>2005-11-23T05:46:11.836-08:00</updated><title type='text'>World Community Grid - Research - FightAIDS@Home</title><content type='html'>Now if someone would help this group to write a screen saver for the new XBOX 360's, I'd run it.&lt;br /&gt;&lt;br /&gt;http://www.worldcommunitygrid.org/projects_showcase/viewFaahResearch.do&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-113275357179209592?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113275357179209592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113275357179209592'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/11/world-community-grid-research.html' title='World Community Grid - Research - FightAIDS@Home'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-113224522892900611</id><published>2005-11-17T08:33:00.000-08:00</published><updated>2005-11-17T11:05:48.156-08:00</updated><title type='text'>Peer Graph - Peers and Connections</title><content type='html'>Posted another article over at Code Project: &lt;a href="http://www.codeproject.com/dotnet/PeerGraph-PeersConnection.asp"&gt;Peer Graph - Peers and Connections&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-113224522892900611?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/113224522892900611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=113224522892900611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113224522892900611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113224522892900611'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/11/peer-graph-peers-and-connections.html' title='Peer Graph - Peers and Connections'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-113223460246797194</id><published>2005-11-17T05:06:00.000-08:00</published><updated>2005-11-17T05:36:42.543-08:00</updated><title type='text'>Blogging via Peer-to-Peer</title><content type='html'>I've often wondered if peer-to-peer would be a good solution for blogging.&lt;br /&gt;&lt;br /&gt;Given an application that can generate and maintain an RSS formatted XML file, it should be possible to publish its existence in a peer-to-peer network.  I'm not suggesting adding a record to the graph, but rather the node's precense in a common graph would allow searching.   The node would also need to register a unique, static name in the PNRP in order for others to be able to find the node again.&lt;br /&gt;&lt;br /&gt;Search requests would be published as records to the graph with a short time-to-live (short enough that it couldn't propagate to all nodes in a large network). Any peer close enough to the originator would see this search request and compare its data to the request. &lt;br /&gt;&lt;br /&gt;If there is a match, they could open a direct connection to the originator and send a quick response.  Its unclear if this would overload the originator.   The results could be arranged for presentation.  The originator could then decide if they wanted to look at the full blog of each responder or subscribe for any changes or new blog entries from the responder.  The static name in the PNRP is needed in order to allow the originator to contact the responder at a later date (if they available).&lt;br /&gt;&lt;br /&gt;Blogging via peer-to-peer would allow anyone from their desktop to start blogging.  No need for a web-site and no need for a central search engine.&lt;br /&gt;&lt;br /&gt;Opinions are welcomed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-113223460246797194?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/113223460246797194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=113223460246797194' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113223460246797194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113223460246797194'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/11/blogging-via-peer-to-peer.html' title='Blogging via Peer-to-Peer'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-113158804219845032</id><published>2005-11-09T18:00:00.000-08:00</published><updated>2005-11-09T18:00:42.256-08:00</updated><title type='text'>An introduction to Microsoft's Peer-to-Peer Graphing technology</title><content type='html'>My article &lt;a href="http://www.codeproject.com/csharp/PeerGraph-Introduction.asp"&gt;introducing Microsoft's Peer-to-Peer Graphing technology&lt;/a&gt; was posted today over at Code Project.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-113158804219845032?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113158804219845032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113158804219845032'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/11/introduction-to-microsofts-peer-to.html' title='An introduction to Microsoft&apos;s Peer-to-Peer Graphing technology'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-113044474555511534</id><published>2005-10-27T13:25:00.000-07:00</published><updated>2005-10-27T13:25:45.610-07:00</updated><title type='text'>Peer Name Resolution (PNRP) - The Code Project - C# Programming</title><content type='html'>My article about PNRP was just posted &lt;a href="http://www.codeproject.com/csharp/PeerNameResolution.asp"&gt;here&lt;/a&gt; on the Code Project web site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-113044474555511534?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113044474555511534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/113044474555511534'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/10/peer-name-resolution-pnrp-code-project.html' title='Peer Name Resolution (PNRP) - The Code Project - C# Programming'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-112964026363161312</id><published>2005-10-18T05:44:00.000-07:00</published><updated>2005-10-18T05:57:43.636-07:00</updated><title type='text'>New PNRP Functions</title><content type='html'>Windows Vista October CTP contains some new PNRP functions that remove the previous complexity of having to use the underlying WSAxxx functions.  Since the Windows SDK won't be updated until Beta 2, here's a guess at what these functions probably do.&lt;br /&gt;&lt;br /&gt;PeerPnrpGetCloudInfo - probably returns a PNRPCLOUDINFO structure.  Not sure how to Enum clouds though.  Equivalent to &lt;a href="http://windowssdk.msdn.microsoft.com/library/en-us/P2PSDK/p2p/enumerating_clouds.asp?frame=true"&gt;this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;PeerPnrpGetEndpoint - probably converts a peer name to an endpoint&lt;br /&gt;&lt;br /&gt;PeerPnrpRegister, PeerPnrpUnregister - probably registers and unregisters a peer name in the serverless DNS.  Equivalent to &lt;a href="http://windowssdk.msdn.microsoft.com/library/en-us/P2PSDK/p2p/registering_a_peer_name.asp?frame=true"&gt;this&lt;/a&gt; and &lt;a href="http://windowssdk.msdn.microsoft.com/library/en-us/P2PSDK/p2p/unregistering_a_peer_name.asp?frame=true"&gt;this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;PeerPnrpUpdateRegistration - probably allows info such as address and comment to be updated for a previously registered peer name&lt;br /&gt;&lt;br /&gt;PeerPnrpResolve - probably determines if a peer name exists.  Equivalent to &lt;a href="http://windowssdk.msdn.microsoft.com/library/default.asp?url=/library/en-us/P2PSDK/p2p/resolving_a_peer_name.asp"&gt;this&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;PeerPnrpStartResolve, PeerPnrpEndResolve - asynchronous version&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-112964026363161312?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/112964026363161312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=112964026363161312' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112964026363161312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112964026363161312'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/10/new-pnrp-functions.html' title='New PNRP Functions'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-112960878355212351</id><published>2005-10-17T21:06:00.000-07:00</published><updated>2005-10-17T21:13:03.560-07:00</updated><title type='text'>Windows Vista October CTP (Ultimate Edition)</title><content type='html'>Install was very easy, and finally provided drivers for all my hardware.&lt;br /&gt;&lt;br /&gt;The Windows Collaboration is still busted due to a missing file (RPCSHIM.DLL) referenced by RPCHTTP.DLL.  If anyone knows of a quick fix, drop me a comment.&lt;br /&gt;&lt;br /&gt;A quick check using dependency walker shows that this build has all the good stuff; new PeerCollab API's and some new Pnrp helper API's.  Can't wait for an updated SDK header file to get these exposed to managed code.&lt;br /&gt;&lt;br /&gt;Overall, Explorer is a little buggier, but the UI is looking much better.&lt;br /&gt;&lt;br /&gt;Keep up the good work Microsoft.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-112960878355212351?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/112960878355212351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=112960878355212351' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112960878355212351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112960878355212351'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/10/windows-vista-october-ctp-ultimate.html' title='Windows Vista October CTP (Ultimate Edition)'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-112940350512662610</id><published>2005-10-15T12:06:00.000-07:00</published><updated>2005-10-15T16:00:28.863-07:00</updated><title type='text'>PeerPnrpToDnsName and PeerDnsToPnrpName</title><content type='html'>In case anyone is interested, the C# DllImports are below...&lt;br /&gt;&lt;br /&gt;[DllImport("pnrpnsp.dll", CharSet=CharSet.Unicode)]internal static extern int PeerPnrpToDnsName(string pwszPnrpNameStr, System.Text.StringBuilder pwszDnsNameStr, ref int pcchDnsName);&lt;br /&gt;&lt;br /&gt;[DllImport("pnrpnsp.dll", CharSet=CharSet.Unicode)]&lt;br /&gt;internal static extern int PeerDnsToPnrpName(string pwszDnsNameStr, System.Text.StringBuilder pwszPnrpNameStr, ref int pcchPnrpName);&lt;br /&gt;&lt;br /&gt;Use the following code to call the first function...&lt;br /&gt;&lt;br /&gt;int length = 255;&lt;br /&gt;System.Text.StringBuilder DnsName = new System.Text.StringBuilder(length);&lt;br /&gt;int err = PnrpNative.PeerPnrpToDnsName(PnrpName, DnsName, ref length);&lt;br /&gt;&lt;br /&gt;In the first case, take any Peer Name, for example, 0.test (zero.test) previously registered to get the equivalent serverless DNS name. In this case, test-p.p0.pnrp.net is returned. Passing this into the second function returnes the original 0.test peer name. Use&lt;br /&gt;&lt;br /&gt;netsh p2p pnrp cloud&gt;show names&lt;br /&gt;&lt;br /&gt;to see other peer name examples that may be registered on your computer. I'm still not sure what the benefit of getting the DNS name gives me.&lt;br /&gt;&lt;br /&gt;What I'd like to know though is what parameters do you need to pass to PNRP lookup to get the equivalent of netsh p2p pnrp cloud&gt; show names list of registered names? If anyone knows, please leave a comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-112940350512662610?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/112940350512662610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=112940350512662610' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112940350512662610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112940350512662610'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/10/peerpnrptodnsname-and.html' title='PeerPnrpToDnsName and PeerDnsToPnrpName'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-112938374269939272</id><published>2005-10-15T06:30:00.000-07:00</published><updated>2005-10-15T06:42:23.563-07:00</updated><title type='text'>Software Development Manager</title><content type='html'>You'd think that being a software development manager, I'd have my sleeves rolled up every day churning out code.  Actually, its the opposite.  Once you become a "manager", you do very little coding.  Instead, my job is to plan and think ahead to eliminate as many obstacles and risks to the people who do the real coding.  My job is to make sure the development "process" is followed to increase the odds that we deliver what the customer wants with a minimum number of deficiencies as possible (oh! and on schedule and on budget).  Its an interesting balancing act.&lt;br /&gt;&lt;br /&gt;I've been on vacation this week.  With two young children in daycare/pre-school/kindergarten, the bills are high so we don't have much money left to go anywhere.  Besides, it was a chance to get a break from work and kids.  It has been a excellent opportunity to do some coding...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-112938374269939272?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/112938374269939272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=112938374269939272' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112938374269939272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112938374269939272'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/10/software-development-manager.html' title='Software Development Manager'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-112915025436985249</id><published>2005-10-12T13:40:00.000-07:00</published><updated>2005-10-12T14:13:30.320-07:00</updated><title type='text'>Thread was being stopped.</title><content type='html'>While debugging a test application that is using my managed wrapper for Microsoft's Peer-to-Peer API's, I kept getting the following error: "Thread was being stopped."&lt;br /&gt;&lt;br /&gt;A quick search via Google shows that others have had the same problem. I found the answer at the end of &lt;a href="http://www.xtremedotnetalk.com/showthread.php?t=74509"&gt;this link&lt;/a&gt;. Turns out I was watching a listbox control.  I removed this from the Watch Window and suddenly the problem went away.&lt;br /&gt;&lt;br /&gt;Hope this helps someone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-112915025436985249?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112915025436985249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112915025436985249'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/10/thread-was-being-stopped.html' title='Thread was being stopped.'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-112851624455349300</id><published>2005-10-05T05:44:00.000-07:00</published><updated>2005-10-05T05:49:20.560-07:00</updated><title type='text'>Tripp Parks's WebLog : Most Annoying API</title><content type='html'>Tripp Park posted &lt;a href="http://blogs.msdn.com/tparks/archive/2005/10/05/477210.aspx"&gt;this message&lt;/a&gt; about the most annoying Windows API to use.&lt;br /&gt;&lt;br /&gt;All I can say is: " I feel your pain ".&lt;br /&gt;&lt;br /&gt;I've been working on implementing the Peer Name Resolution functions from C# via Interop and this one is definitely giving me some trouble.   PNRP is the foundation for finding peers via the PeerGraph and PeerGroup API sets.&lt;br /&gt;&lt;br /&gt;The following code *does not* appear to work.&lt;br /&gt;&lt;br /&gt;CSADDR_INFO csaAddr = new CSADDR_INFO();&lt;br /&gt;PNRPINFO pnrpInfo = new PNRPINFO();&lt;br /&gt;BLOB blPnrpData = new BLOB();&lt;br /&gt;WSAQUERYSET querySet = new WSAQUERYSET();&lt;br /&gt;//&lt;br /&gt;// fill a CSADDR_INFO structure from the address&lt;br /&gt;//&lt;br /&gt;csaAddr.iProtocol = 6; // IPPROTO_TCP&lt;br /&gt;csaAddr.iSocketType = 1; // SOCK_STREAM;&lt;br /&gt;csaAddr.LocalAddr.iSockaddrLength = Marshal.SizeOf(typeof(SOCKADDR_IN6));&lt;br /&gt;SOCKADDR_IN6 address = new SOCKADDR_IN6();&lt;br /&gt;address.sin6_addr = Registration.Address.GetAddressBytes();&lt;br /&gt;csaAddr.LocalAddr.lpSockaddr = Marshal.AllocHGlobal(csaAddr.LocalAddr.iSockaddrLength);&lt;br /&gt;Marshal.StructureToPtr(address, csaAddr.LocalAddr.lpSockaddr, false);&lt;br /&gt;//&lt;br /&gt;// build the WSAQUERYSET required to register&lt;br /&gt;//&lt;br /&gt;pnrpInfo.dwSize = Marshal.SizeOf(typeof(PNRPINFO));&lt;br /&gt;pnrpInfo.dwLifetime = Lifetime;&lt;br /&gt;pnrpInfo.lpwszIdentity = Registration.PeerId;&lt;br /&gt;blPnrpData.cbSize = Marshal.SizeOf(typeof(PNRPINFO));&lt;br /&gt;blPnrpData.pBlobData = Marshal.AllocHGlobal(blPnrpData.cbSize);&lt;br /&gt;Marshal.StructureToPtr(pnrpInfo, blPnrpData.pBlobData, false);&lt;br /&gt;querySet.dwSize = Marshal.SizeOf(typeof(WSAQUERYSET));&lt;br /&gt;querySet.dwNameSpace = 38; // NS_PNRPNAME&lt;br /&gt;querySet.dwNumberOfCsAddrs = 1; // one address&lt;br /&gt;&lt;br /&gt;querySet.lpServiceClassId = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Guid)));&lt;br /&gt;Marshal.StructureToPtr(SVCID_PNRPNAMEV1, querySet.lpServiceClassId, false);&lt;br /&gt;&lt;br /&gt;querySet.lpszServiceInstanceName = Registration.Name;&lt;br /&gt;querySet.lpszContext = Registration.CloudName;&lt;br /&gt;querySet.lpszComment = Registration.Comment;&lt;br /&gt;&lt;br /&gt;querySet.lpcsaBuffer = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(CSADDR_INFO)));&lt;br /&gt;Marshal.StructureToPtr(csaAddr, querySet.lpcsaBuffer, false);&lt;br /&gt;&lt;br /&gt;querySet.lpBlob = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(BLOB)));&lt;br /&gt;Marshal.StructureToPtr(blPnrpData, querySet.lpBlob, false);&lt;br /&gt;&lt;br /&gt;IntPtr qryptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(WSAQUERYSET)));&lt;br /&gt;Marshal.StructureToPtr(querySet, qryptr, false);&lt;br /&gt;&lt;br /&gt;uint hr = PnrpNative.WSASetService(qryptr, WSAESETSERVICEOP.Register, 0);&lt;br /&gt;if (hr != 0) throw new System.Net.Sockets.SocketException((int)hr);&lt;br /&gt;&lt;br /&gt;Here are the structure definitions:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[StructLayout(LayoutKind.Sequential)]&lt;br /&gt;internal struct SOCKET_ADDRESS&lt;br /&gt;{&lt;br /&gt;public IntPtr lpSockaddr; // LPSOCKADDR&lt;br /&gt;public int iSockaddrLength;&lt;br /&gt;};&lt;br /&gt;[StructLayout(LayoutKind.Sequential)]&lt;br /&gt;internal struct CSADDR_INFO&lt;br /&gt;{&lt;br /&gt;public SOCKET_ADDRESS LocalAddr;&lt;br /&gt;public SOCKET_ADDRESS RemoteAddr;&lt;br /&gt;public int iSocketType;&lt;br /&gt;public int iProtocol;&lt;br /&gt;};&lt;br /&gt;[StructLayout(LayoutKind.Sequential)]&lt;br /&gt;internal struct BLOB&lt;br /&gt;{&lt;br /&gt;public int cbSize;&lt;br /&gt;public IntPtr pBlobData;&lt;br /&gt;}&lt;br /&gt;[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]&lt;br /&gt;internal struct WSAQUERYSET&lt;br /&gt;{&lt;br /&gt;public int dwSize;&lt;br /&gt;public string lpszServiceInstanceName;&lt;br /&gt;public IntPtr lpServiceClassId; // LPGUID&lt;br /&gt;public IntPtr lpVersion; // LPWSAVERSION&lt;br /&gt;public string lpszComment;&lt;br /&gt;public int dwNameSpace;&lt;br /&gt;public IntPtr lpNSProviderId; // LPGUID&lt;br /&gt;public string lpszContext;&lt;br /&gt;public int dwNumberOfProtocols;&lt;br /&gt;public IntPtr lpafpProtocols; // LPAFPROTOCOLS&lt;br /&gt;public IntPtr lpszQueryString; // can be NULL&lt;br /&gt;public int dwNumberOfCsAddrs;&lt;br /&gt;public IntPtr lpcsaBuffer; // LPCSADDR_INFO&lt;br /&gt;public int dwOutputFlags;&lt;br /&gt;public IntPtr lpBlob; // LPBLOB&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]&lt;br /&gt;internal struct PNRPINFO&lt;br /&gt;{&lt;br /&gt;public int dwSize;&lt;br /&gt;public string lpwszIdentity;&lt;br /&gt;public int nMaxResolve;&lt;br /&gt;public int dwTimeout;&lt;br /&gt;public int dwLifetime;&lt;br /&gt;public PNRP_RESOLVE_CRITERIA enResolveCriteria;&lt;br /&gt;public int dwFlags;&lt;br /&gt;public SOCKET_ADDRESS saHint;&lt;br /&gt;public PNRP_REGISTERED_ID_STATE enNameState;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;If anyone get's this working, please share...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-112851624455349300?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/112851624455349300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=112851624455349300' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112851624455349300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112851624455349300'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/10/tripp-parkss-weblog-most-annoying-api.html' title='Tripp Parks&apos;s WebLog : Most Annoying API'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-112818040600908199</id><published>2005-10-01T08:16:00.000-07:00</published><updated>2005-10-01T08:26:46.616-07:00</updated><title type='text'>PeerCollabEnumCapabilities</title><content type='html'>Why does PeerCollabEnumCapabilities return "The parameter is incorrect" when I pass the PEER_ENDPOINT part of a PEER_ENDPOINT_NEAR_ME data structure.  Does this function allow enumerating the capabilities of a endpoint near me that isn't in my list of contacts?&lt;br /&gt;&lt;br /&gt;Below is the managed definition for this function:&lt;br /&gt;&lt;br /&gt;[DllImport("p2p.dll", PreserveSig=true)]&lt;br /&gt;internal static extern uint PeerCollabEnumCapabilities(IntPtr pcContact, IntPtr pcEndpoint, IntPtr pCapabilityId, ref IntPtr phPeerEnum);&lt;br /&gt;&lt;br /&gt;Since some parameters can be NULL, I'm using IntPtr and having to Marshal each data structure. The structure definition for a PEER_ENDPOINT is:&lt;br /&gt;&lt;br /&gt;[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]&lt;br /&gt;internal struct PEER_ENDPOINT&lt;br /&gt;{&lt;br /&gt;public PEER_ADDRESS address;&lt;br /&gt;[MarshalAs(UnmanagedType.LPWStr)] public String pwzEndpointName;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;[StructLayout(LayoutKind.Sequential)]&lt;br /&gt;internal struct PEER_ADDRESS&lt;br /&gt;{&lt;br /&gt;public uint dwSize;&lt;br /&gt;public SOCKADDR_IN6 sin6;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;[Serializable, StructLayout(LayoutKind.Sequential)]&lt;br /&gt;internal struct SOCKADDR_IN6&lt;br /&gt;{&lt;br /&gt;public short sin6_family;&lt;br /&gt;public ushort sin6_port;&lt;br /&gt;public uint sin6_flowinfo;&lt;br /&gt;[MarshalAs(UnmanagedType.ByValArray, SizeConst=0x10)]&lt;br /&gt;public byte[] sin6_addr;&lt;br /&gt;public uint sin6_scope_id;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;I'm calling this function in the following way...&lt;br /&gt;&lt;br /&gt;IntPtr conptr = IntPtr.Zero;&lt;br /&gt;if (contact != null)&lt;br /&gt;{&lt;br /&gt;PEER_CONTACT ncon = contact.Convert();&lt;br /&gt;conptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(PEER_CONTACT)));&lt;br /&gt;Marshal.StructureToPtr(ncon, conptr, true);&lt;br /&gt;}&lt;br /&gt;IntPtr epptr = IntPtr.Zero;&lt;br /&gt;if (endpoint != null)&lt;br /&gt;{&lt;br /&gt;PEER_ENDPOINT nep = endpoint.Convert();&lt;br /&gt;epptr = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(PEER_ENDPOINT)));&lt;br /&gt;Marshal.StructureToPtr(nep, epptr, true);&lt;br /&gt;}&lt;br /&gt;IntPtr capptr = IntPtr.Zero;&lt;br /&gt;result = PeerCollabNative.PeerCollabEnumCapabilities(conptr, epptr, capptr, ref hPeerEnum);&lt;br /&gt;&lt;br /&gt;Any help is appreciated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-112818040600908199?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/112818040600908199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=112818040600908199' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112818040600908199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112818040600908199'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/10/peercollabenumcapabilities.html' title='PeerCollabEnumCapabilities'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-112791755427916480</id><published>2005-09-28T07:02:00.000-07:00</published><updated>2005-09-28T07:26:06.983-07:00</updated><title type='text'>Problems Enumerating EndPoints</title><content type='html'>I'm trying to put together a demo application that uses all the capabilities of the new PeerCollab Managed Wrapper. However, enumerating endpoints for a given contact is giving me problems.&lt;br /&gt;&lt;br /&gt;When I call PeerCollabEnumEndpoints passing in what appears to be valid PEER_CONTACT info, I get an E_INVALIDARG result. At first, I was trying to pass in contact info for a PEER_NEAR_ME. Figuring, maybe the contact needs to be added to my list of contacts, I did this, but the same error occurs.&lt;br /&gt;&lt;br /&gt;The defintion of PEER_CONTACT works for all the other API calls, so I don't think its the problem.&lt;br /&gt;&lt;br /&gt;[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]&lt;br /&gt;internal struct PEER_CONTACT&lt;br /&gt;{&lt;br /&gt;[MarshalAs(UnmanagedType.LPWStr)] public String pwzPeerName;&lt;br /&gt;[MarshalAs(UnmanagedType.LPWStr)] public String pwzFriendlyName;&lt;br /&gt;public int fWatch;&lt;br /&gt;public int WatcherPermissions;&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;The API is the following:&lt;br /&gt;&lt;br /&gt;HRESULT WINAPI PeerCollabEnumEndpoints(&lt;br /&gt;IN const PCPEER_CONTACT pcContact,&lt;br /&gt;OUT HPEERENUM * phPeerEnum);&lt;br /&gt;&lt;br /&gt;My DllImport definition is:&lt;br /&gt;&lt;br /&gt;[DllImport("p2p.dll", PreserveSig=true)]&lt;br /&gt;internal static extern uint PeerCollabEnumEndpoints(ref PEER_CONTACT pcContact, ref IntPtr phPeerEnum);&lt;br /&gt;&lt;br /&gt;Yet, when I pass the same PEER_CONTACT info to PeerCollabDeleteContact, there is not error.&lt;br /&gt;&lt;br /&gt;I'm trying to enumerate the list of endpoints in order to send an invitation.&lt;br /&gt;&lt;br /&gt;Any help is appreciated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-112791755427916480?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/112791755427916480/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=112791755427916480' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112791755427916480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112791755427916480'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/09/problems-enumerating-endpoints.html' title='Problems Enumerating EndPoints'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-112771913419146074</id><published>2005-09-26T00:04:00.000-07:00</published><updated>2005-09-26T00:20:20.026-07:00</updated><title type='text'>Finished Managed PeerCollab Wrapper</title><content type='html'>I finally finished implementing the last PeerCollab API function.&lt;br /&gt;&lt;br /&gt;The whole wrapper is implemented in C# using DllImport's and InteropServices. I've managed to verify that most functions work correctly. Once I've verified all functions work correctly, I'll probably refactor the classes a little bit and create a custom extension to the My namespace.&lt;br /&gt;&lt;br /&gt;I believe need a second Windows Vista computer in order to see another contact besides myself and to monitor changes. I'm not sure why if I Sign-In to the Internet, I don't see other contacts. Is there some port I'm supposed to open on my network firewall?&lt;br /&gt;&lt;br /&gt;If anyone knows of an easy way to create a second contact using only one computer, that would be helpful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-112771913419146074?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/112771913419146074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=112771913419146074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112771913419146074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112771913419146074'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/09/finished-managed-peercollab-wrapper.html' title='Finished Managed PeerCollab Wrapper'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-112757128921562022</id><published>2005-09-24T07:01:00.000-07:00</published><updated>2005-09-24T08:06:42.786-07:00</updated><title type='text'>PeerGetNextItem Trick</title><content type='html'>I'm wrapping the PeerCollab SDK using C#/DllImport.&lt;br /&gt;&lt;br /&gt;I was struggleing with PeerGetNextItem returning garbage data until I finally realized its was returning an array of pointers.&lt;br /&gt;&lt;br /&gt;HRESULT WINAPI PeerGraphGetNextItem(&lt;br /&gt;IN HPEERENUM hPeerEnum,&lt;br /&gt;IN OUT PULONG pCount,&lt;br /&gt;OUT PVOID * ppvItems);&lt;br /&gt;&lt;br /&gt;[DllImport("p2p.dll", PreserveSig=true)]&lt;br /&gt;internal static extern uint PeerGetNextItem(IntPtr hPeerEnum, ref uint count, ref IntPtr ppItems);&lt;br /&gt;&lt;br /&gt;To call this function and extract the data, you'll need to do the following...&lt;br /&gt;&lt;br /&gt;uint ulItem = 1;&lt;br /&gt;IntPtr capptr = IntPtr.Zero;&lt;br /&gt;uint result = PeerCollabNative.PeerGetNextItem(hPeerEnum, ref ulItem, ref capptr );&lt;br /&gt;&lt;br /&gt;The trick is to marshal the first item in the array as a pointer before marshalling the type...&lt;br /&gt;&lt;br /&gt;IntPtr itemptr = Marshal.ReadIntPtr(capptr);&lt;br /&gt;PEER_CAPABILITY ncap = (PEER_CAPABILITY)Marshal.PtrToStructure(itemptr, typeof(PEER_CAPABILITY));&lt;br /&gt;&lt;br /&gt;Hope this helps someone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-112757128921562022?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/112757128921562022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=112757128921562022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112757128921562022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112757128921562022'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/09/peergetnextitem-trick.html' title='PeerGetNextItem Trick'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-112687922380446692</id><published>2005-09-16T07:00:00.000-07:00</published><updated>2005-09-16T07:01:54.520-07:00</updated><title type='text'>Microsoft Peer-to-Peer Blog Links</title><content type='html'>The following links are people at Microsoft working on the Peer-to-Peer technology and gave recent talks at Microsoft's PDC 2005:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/ravirao/"&gt;Ravi Rao's blog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/noahh/"&gt;Noah Horton's WebBlog&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/tparks/default.aspx"&gt;Tripp Parks's WebLog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-112687922380446692?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/112687922380446692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=112687922380446692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112687922380446692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112687922380446692'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/09/microsoft-peer-to-peer-blog-links.html' title='Microsoft Peer-to-Peer Blog Links'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8787361.post-112660424255637926</id><published>2005-09-13T02:36:00.000-07:00</published><updated>2005-09-13T02:37:22.556-07:00</updated><title type='text'>Peer Collaboration Infrastructure</title><content type='html'>I've started to investigate the new PeerCollab* methods included in the Windows Vista version of the Platform SDK.  So far the documentation isn't really good.  The best, but limited source of information is Tripp Parke's blog (&lt;a href="http://blogs.msdn.com/tparks/default.aspx"&gt;http://blogs.msdn.com/tparks/default.aspx&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;The SDK documentation is confusing.  The term's Peer, Peer Application, Contact and Local Peer are used interchangable.&lt;br /&gt;&lt;br /&gt;I'm working on a Managed C++ wrapper for the API's to simplify using this functionality from managed code.  The problem is, I'm not much of a C++ programmer, so it slow going.&lt;br /&gt;&lt;br /&gt;The other thing I've noticed is that after calling the PeerCollabSignIn method, a Collaboration Host icon appears in the system tray.  A p2phost.exe appears in the task manager.  I'm not sure what the purpose of this is yet.&lt;br /&gt;&lt;br /&gt;Hopefully more inforamtion will be released at next weeks PDC.  I have lots of ideas for some great peer applications if I can just get the darn API's to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8787361-112660424255637926?l=mooresmind.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://mooresmind.blogspot.com/feeds/112660424255637926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8787361&amp;postID=112660424255637926' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112660424255637926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8787361/posts/default/112660424255637926'/><link rel='alternate' type='text/html' href='http://mooresmind.blogspot.com/2005/09/peer-collaboration-infrastructure.html' title='Peer Collaboration Infrastructure'/><author><name>Ad.</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
