Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ IThumbnailProvider和IInitializeWithItem_C++_Com_Thumbnails_Windows Shell - Fatal编程技术网

C++ IThumbnailProvider和IInitializeWithItem

C++ IThumbnailProvider和IInitializeWithItem,c++,com,thumbnails,windows-shell,C++,Com,Thumbnails,Windows Shell,我正在尝试开发一个用于Windows7的IThumbnailProvider。由于这个特定的缩略图还依赖于同一目录中的其他一些文件,因此我需要使用除IInitializeWithStream之外的其他内容来处理路径,即IInitializeWithItem。(或者,我可以使用IInitializeWithFile,但这显然更不受欢迎。) 不管我做什么,我都不能让它工作。我有微软的FileTypeVerifier.exe工具,它为使用IInitializeWithItem打开了绿灯,但当explo

我正在尝试开发一个用于Windows7的
IThumbnailProvider
。由于这个特定的缩略图还依赖于同一目录中的其他一些文件,因此我需要使用除
IInitializeWithStream
之外的其他内容来处理路径,即
IInitializeWithItem
。(或者,我可以使用
IInitializeWithFile
,但这显然更不受欢迎。)

不管我做什么,我都不能让它工作。我有微软的
FileTypeVerifier.exe
工具,它为使用
IInitializeWithItem
打开了绿灯,但当explorer调用它时,它似乎只尝试了
IInitializeWithStream
。(这是通过临时实现所述接口并在其
Initialize()
中发出蜂鸣声()来测试的)我是否忘记配置某些东西了


简言之:我该如何让它工作?

好的,我终于发现了问题所在。要引用MSDN网站上的构建缩略图提供程序链接:

在某些情况下,无法使用流进行初始化。在缩略图提供程序未实现IIInitializeWithStream的场景中,当流发生更改时,它必须选择不在系统索引器默认放置它的隔离进程中运行。要退出进程隔离功能,请设置以下注册表值

  • HKEY_类_根

    • CLSID
    • {66742402-F9B9-11D1-A202-0000F81FEDEE}

      禁用进程隔离=1

我知道我的进程快用完了,因为我在别处读到thumbnailproviders总是用完进程。但是,由于这个特定的代码片段几乎在所有的shell扩展处理程序上,我将其解释为一个非常愉快的复制粘贴作业,因为它是以我理解的方式在进程内运行的

我错了。我希望这将在不久的将来帮助其他人。:)