源代码下载

如果你用过Borland Developer Studio 2006,就会发现在Welcome Page的地址中显示的URL为"bds:/default.htm"。在Visual Studio 2003,同样会发现在起始页中联机资源的URL为"vs:/default.htm"(可以通过使用IE Source Viewer查看);另外在Microsoft Office InfoPath中设计或填写表单时,使用IE Source Viewer查看,其URL为"x-view://xxxx/default.htm"。

为什么会有这些奇怪的URL哪?

还有一些如下:
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/dnmsdn2/html/msdnstart.htm
mk:@MSITStore:C:\WINDOWS\Help\iis.chm::/iint1.htm
……

但是上面的两个URL可以在IE中访问,而bds:、vs:和x-view:则无法在IE中访问。为什么出现这么奇怪的现象哪?

带着这些疑问在Google上尝试了NN次关键字的组合,终于发现了一个技术很有嫌疑,名为"Asynchronous Pluggable Protocols"。

常见的应用层协议包括http、FTP等。另外,微软还允许用户在标准的应用层协议之外,扩展自己的协议,称为Asynchronous Pluggable Protocols(APPs)。APPs可以指定对所有进程有效,在注册表HKEY_CLASSES_ROOT\PROTOCOLS\Handler中进行协议定义;也可以指定只在某个进程内有效,不过这个时候微软就不叫它APPs了,而是称之为Pluggable Namespace Handler。

前面我们提到的bds:、vs:和x-view:是Pluggable Namespace Handler的实现。这些协议只允许在各自的进程中使用,所以无法在IE中访问。而ms-help:和mk:则是Asynchronous Pluggable Protocols的实现,可以在HKEY_CLASSES_ROOT\PROTOCOLS\Handler中找到,所以可以在IE中访问。解释了这些疑问之后,我饶有兴趣地实现了一个自定义协议tpp:。

如果继续研究APPs会发现,该技术还可以用于MIME过滤等。不过要求有IE 4.0或更高版本支持和URL monikers支持。

更多信息:
Build Simple Asynchronous Pluggable Protocols for Windows

Asynchronous Pluggable Protocols Reference
Asynchronous Pluggable Protocols Overview
IInternetProtocolRoot
IInternetProtocol
IInternetProtocolSink
EtcProtocol Demonstrates Pluggable Protocol Handler (From KnowledgeBase: never got this sample to work in VC5 or 6)

转载于:https://www.cnblogs.com/voidclass/archive/2005/12/10/294201.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐