CoInitializeSecurity()与Media Foundation编码器之间的怪异连接

问题描述 投票:1回答:1

此问题与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的影响?

c++ winapi ms-media-foundation
1个回答
0
投票

MFTEnumEx需要较高的令牌才能达到ANONYMOUS级别。此问题的解决方法是,您可以为匿名创建另一个线程并实现,并照常使用主线程中的默认级别。

有关此问题的详细信息,您也可以参考下面的链接:

Media Foundation API primitive styling of WinRT windows.mediaCodec

© www.soinside.com 2019 - 2024. All rights reserved.