テクニカル色々
デバイス相互接続関連
Windows Rally(http://www.microsoft.com/japan/whdc/rally/default.mspx)の動きをはじめここらはやはり面白いですね。コアなテクニカルを理解するためにはパワーがいりますが。
WS-DiscoveryやP2P APIまわりについての整理として次を参照。
- Device Connectivity: Vision And Evolution
- Web Services On Devices In Windows Vista
- Web Services On Devices (The protocol now and for the future)
- Extending Windows Vista Native Wi-Fi Capabilities
http://www.microsoft.com/japan/whdc/winhec/pres06.mspx
これをざっと見るだけでもなかなか勉強になります。WinHEC 2007に行きたい!
- Developing P2P Applications in Windows XP, Windows Vista, and Windows Communication Foundation
http://gamepipe.usc.edu/~zyda/courses/ZydaNetworkedGamesFall2005/SandeepSinghal-USC-20050927-P2P-Overview.ppt
セッション中にDHTの記述があるってことはPNRPは分散ハッシュを実装しているようですね。そういやMSは分散ハッシュまわりの特許をとってた気がします。
PNMでのObjectChangedの扱い
VS Orcas Beta 1を入れてみて、再度System.Net.PeerToPeer.Collaborationまわりをいじくってみました。いつも思うのはPeerNearMeクラスになぜObjectChangedイベントがないのか?ということ。ObjectChangedイベントはPeerObjectクラスにのみ実装されているようで、つまり、PNMにはじめからサインインした状態である時点オブジェクトを公開する、時のオブジェクトAddのイベントが取れないということになります。
foreach (PeerNearMe pnm in pnms) { pnm.RefreshData(); foreach (PeerObject obj in pnm.GetObjects(new Guid(__GUID_OBJECT))) { string szObj = Encoding.Unicode.GetString(obj.Data); //↓ここはOK obj.ObjectChanged += new EventHandler<ObjectChangedEventArgs>(PeerCollaboration_RemoteObjectChanged); } }
つまり上はできるけど下のようなことはできない。
PeerNearMe.PeerNearMeChanged += new EventHandler<PeerNearMeChangedEventArgs(PeerNearMe_PeerNearMeChanged); //↓ここはBAD PeerNearMe.ObjectChanged += new EventHandler<ObjectChangedEventArgs(PeerNearMe_ObjectChanged);
(注)ここはまだAPI referenceも不十分な部分なので間違った記述もあるかも知れません。とりあえずUSのMSDN Forumにも質問中です。
XPSDrvドライバの実装
最近XPSDrvドライバをいじくってはいるもののなかなか理解がはかどらず。WDKのXPSDrvSmplのビルドはしてみたものの、WinDbgの扱いに手こずる始末。最近.NETに手を出して軟弱になってきたということか。。。