我开发了自定义凭据提供程序。该凭证提供者使用1)相机2)面部sdk来匹配用户。匹配用户后,将填充帐户名称并触发CredentialsChanged信号。我定制了samplehardwareeventcredentialprovider 实现这一功能。这适用于少数机器(所有窗口10)。当我尝试执行另一台机器(不同品牌)时,我随机获得以下异常并使屏幕变黑,不稳定登录屏幕。所有依赖关系都已到位,但根本不稳定。
我关闭了winbio服务,禁用了许多默认凭据提供程序,但我遇到了同样的问题。
我的流程:
我在CSampleCredential :: Initialize api中启动面部识别流程,一旦识别出来,就更新rgFieldStrings的值[SFI_USERNAME]
在下面的方法中,在完成CSampleCredential :: Initialize之后,我使用CSampleProvider :: OnConnectStatusChanged方法来触发登录窗口。如果一切正常,它会启动登录窗口,并自动填充用户名。整个流程工作文件,但在少数机器中不稳定。
HRESULT CSampleProvider :: SetUsageScenario( __in CREDENTIAL_PROVIDER_USAGE_SCENARIO cpus, __in DWORD dwFlags )
我在这里做了一些根本错误的事吗?
任何指针都会有所帮助!感谢
答案 0 :(得分:1)
我按照Steps to Catch a Simple “Crash Dump” of a Crashing Process
生成了localdump通过分析日志,很明显存在堆损坏。错误地,malloc分配的大小为4.实际上,这个分配的大小应该是260.当访问超出此大小的内存时,它会根据输入数据触发随机崩溃。
带有错误的原始代码:
uint8_t * data =(uint8_t *)malloc(sizeof(MAX_PATH));
固定代码:
uint8_t * data =(uint8_t *)malloc(MAX_PATH * sizeof(uint8_t));