Windows 2000で uPnPが 使える理由
Windows 2000には upnp.dllやssdpapi.dll が存在せず、 ユニバーサルプラグアンドプレイAPIが使用できません。
しかし、MSN Messenger などの一部のAPIでは uPnPが使用でき、パケットを監視すると、uPnPのSSDPパケットが流れているのが分かります。
これは、DirectX 8.1以降に実装された、 Microsoft DirectPlay NAT Helper UPnP によるものです。
SSDP Discover Service および Universal Plug and Play Device Host を無効にしても SSDP トラフィックが送信される
何故、8.1かというと、標準実装していた、Windows XPに入っていた DirectX のバージョンが 8.1であり、ダウンレベルバージョンとして Windows 2000にリリースされたものにこのDLLが含まれています。
dpnhupnp.dll の最終Versionは 5.3.0.901(9.0c)ですが、DirectX 8.1に入っているものは、ver. 4.8.1.881になります。
無効に方法がレジストリ操作で書かれていますが、 regsvr32 /u dpnhupnp.dll を実行したほうが確実でしょうか。
通信方式さえわかっていれば、TCP/UDPで通信するプログラムを書いて、HTTP/XMLのやり取りで、uPnPのコントロールが行えるそうなので、dpnhupnp.dll とは関係なく、非対応OSの Windows 95/98等でも、理論上 uPnPの操作をすることは可能です。
関連サイト:
Microsoft Universal Plug and Play MSDN
ユニバーサル プラグ アンド プレイ (UPnP) クライアント サポート
Comments