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