此问题与this question有关。
使用此代码:
CoInitializeSecurity(0, -1, 0, NULL, RPC_C_AUTHN_LEVEL_NONE, RPC_C_IMP_LEVEL_ANONYMOUS, 0, EOAC_NONE, NULL);
UINT32 count = 0;
IMFActivate** ppActivate = NULL; // Array of activation objects.
MFTEnumEx(
MFT_CATEGORY_VIDEO_ENCODER,
MFT_ENUM_FLAG_ALL,
0, // Input type
0, // Output type
&ppActivate,
&count
);
CoTaskMemFree(ppActivate);
没有CoInitializeSecurity
,在我的系统中计数为9。当使用RPC_C_IMP_LEVEL_ANONYMOUS调用CoInitializeSecurity
时,某些编解码器将不再可用。
问题是,我需要将安全性设置为匿名以加载远程插件。无论如何,有没有要超越这种行为?
如果没有,当尝试使用其中一个MF编码器时,是否有办法逆转CoInitializeSecurity的影响?
MFTEnumEx需要较高的令牌才能达到ANONYMOUS级别。此问题的解决方法是,您可以为匿名创建另一个线程并实现,并照常使用主线程中的默认级别。
有关此问题的详细信息,您也可以参考下面的链接:
Media Foundation API primitive styling of WinRT windows.mediaCodec