我可以在多线程环境中从NPAPI插件代码调用SetCurrentDirectory吗?

时间:2011-03-17 15:18:58

标签: windows multithreading gstreamer npapi

我需要从NPAPI插件加载gstreamer插件,而不需要添加插件路径 PATH环境变量,而不使用GStreamer的插件注册表。

我发现的唯一方法是:
调用Windows API SetCurrentDirectory,
使用gst_plugin_load_file加载每个插件,
调用SetCurrentDirectory 设置原始目录(通常是浏览器的可执行文件夹)。
在多线程设置中使用此方法有什么问题吗?

2 个答案:

答案 0 :(得分:1)

不,你应该避免这种情况。当前目录是按进程而不是每个线程 - 如果任何其他线程中的任何内容依赖于当前目录,则会出现随机错误。

gst_plugin_load_file看起来应该支持绝对路径 - 这将是正确的方式。

答案 1 :(得分:0)

感谢您的回复。 我想我找到了一个更好的方法:
我调用SetDllDirectory而不是SetCurrentDirectory 加载gstreamer插件后,我调用SetDllDirectory(NULL),
为了恢复默认的dll搜索顺序。