与shell扩展的情况一样,命名空间扩展被实现为COM进程内服务器DLL。即使是最简单的扩展,在尝试实现命名空间扩展之前,需要使用COM,OLE和Windows资源管理器的体验。这也意味着您必须在系统注册表中正确输入,否则它将无法正常工作。
作为提醒,构建进程内服务器DLL需要实现导出以下功能的DLL:
*DllMain
*DllGetClassObject
*DllUnloadNow
该DLL还实现了一个对象,用于创建包含在DLL中的其他对象的IClassFactory.这些对象将暴露IUnknown和实现命名空间扩展所需的其他接口,包括IPersistFolder,IShellFolder,IEnumIDList和IShellView.这些接口允许资源管理器和您的扩展显示,交互和通信。
请务必记住,Explorer通过使用您在扩展程序中实现的IShellFolder和IShellView接口来呼叫您的分机。IShellBrowser界面(由Explorer实现)允许您的扩展回调到资源管理器。它非常类似于在OLE场景中常见的“Site”类型接口。
除了这些必需的接口之外,您的扩展将需要实现将由IShellFolder对象创建的其他接口。这些包括IExtractIcon提供图标IContextMenu为您的项目提供上下文菜单,拖放界面(IDropSource和IDropTarget)和IDataObject进行数据传输。
进程内服务器DLL的示例,特别是包含命名空间或扩展名的任何内容,显然有助于学习构建命名空间扩展DLL。