2011-08-26 3 views
1
  • 내가 서명을 수행하기 위해 스마트 카드를 사용하면 내가 C를 사용하여 ++ 및 Visual Studio 2010

하고있다가 나타납니다 : "프로그램이 완료되면. " 출력에잘못된 주소

Windows has triggered a breakpoint in MyProgram.exe. 

This may be due to a corruption of the heap, and indicates a bug in MyProgram.exe or any of the DLLs it has loaded. 

The output window may have more diagnostic information 

HEAP[MyProgram.exe]: Invalid Address specified to RtlFreeHeap(003C0000, 01BBFEA0) 
Windows has triggered a breakpoint in MyProgram.exe. 

This may be due to a corruption of the heap, which indicates a bug in MyProgram.exe or any of the DLLs it has loaded. 

This may also be due to the user pressing F12 while MyProgram.exe has focus. 

The output window may have more diagnostic information. 

myprogram.exe로 프로그램은 DLL "signer.dll을."사용

"스마트 카드 없음"으로 서명하려고합니다. Windows 인증서 만 사용하십시오. 정상적으로 종료됩니다.
스마트 카드를 사용하여 서명하려고하면 PIN을 묻는 창이 나타납니다. 프로그램이 끝나면. ERROR - RtlFreeHeap에 잘못된 주소가 지정되었습니다.
"NOT"이라고 표시된 PIN을 물어볼 때 스마트 카드를 사용합니다. 프로그램이 끝나면. ERROR - RtlFreeHeap에 잘못된 주소가 지정되었습니다.

PIN을 묻는 창이 나타나면 오류가 발생하는 것으로 나타났습니다. http://www.codeproject.com/KB/debug/windbg_quick_start.aspx

나는 "CryptSignMessage"에서 중단 점을 넣어가 나타납니다 : "사용 스마트 카드"

(150c.17fc): C++ EH exception - code e06d7363 (first chance) 
(150c.17fc): C++ EH exception - code e06d7363 (first chance) 

더 사용 스마트 카드는이하지 않습니다

그래서, 나는이 기사 다음, WinDbg를 사용하려고 발생하지 않습니다.

나는 그가 키에 대한 컨텍스트를 얻으 려하지만 메모리를 손상시킬 수는 없다고 생각한다. "첫 번째 기회"가 끝나면 PIN 창을 표시합니다.

이것이 문제입니까? CryptSignMessage를 사용하기 전에 주요 컨텍스트에서 인증서를받는 방법?

어떻게 수정할 수 있습니까?

스마트 카드가 없으면 정상적으로 서명 할 수 있습니다. 스마트 카드를 사용하면 정상적으로 서명 할 수 있지만 프로그램이 끝나면 오류가 나타납니다.

스마트 카드의 기호에 어떤주의를 기울여야합니까? 이 나타납니다 사전

답변

1

덕분라는 메시지가 것처럼 힙 손상 될 수 있습니다. 추적하기가 쉽지 않습니다. 가장 좋은 방법은 원인을 찾는 데 도움이되는 메모리 프로파일 링 도구를 사용하는 것입니다.

+0

답장을 보내 주셔서 감사합니다. 독자의 소프트웨어를 이전 버전으로 변경하고 작동합니다. 나는 벌레가 싫어. – Cobaia

+0

죄송합니다. 내 대답이 도움이되지 못했습니다. –