我正在尝试将事件日志记录添加到我的自定义 KSP(密钥存储提供程序),该 KSP 是从 Microsoft Cryptographic 示例中选取的。但是,日志记录失败,并导致 lsass.exe 崩溃,无法访问
我正在尝试将事件日志记录添加到从 Microsoft Cryptographic 示例中选取的自定义 KSP(密钥存储提供程序)。但是,日志记录失败并导致 lsass.exe 崩溃,并出现访问冲突错误 c0000005。删除日志记录有效,但我不确定我的代码中是否存在任何问题。
void EventLogger() {
_hEventLog = RegisterEventSource(NULL, eventProviderName);
DWORD pid = GetCurrentProcessId();
HRESULT hr = StringCbPrintfW(processId, sizeof(processId), L"PID: %u", pid);
if (FAILED(hr)) {
*processId = L'\0';
}
}
void LogInfo(LPCWSTR message)
{
if (_hEventLog != INVALID_HANDLE_VALUE)
{
LPCWSTR insertStrings[2] = { message, processId };
ReportEvent(_hEventLog, EVENTLOG_INFORMATION_TYPE, KSP_DEBUG_CATEGORY, MSG_DEBUG_INFO, NULL, 2, 0, insertStrings, NULL); //Fails here.
}
}
我已打印出发送给 ReportEvent 的所有值,它们都是有效的。我的注册表项也已使用 dll 信息更新。这可能是什么原因造成的?TIA。