2009-04-15 2 views
0

전역 임계 섹션을 생성하고 초기화하고 사용하는 DLL이 있습니다.중요 섹션 재 초기화 방지

이제 타사 응용 프로그램이 dll을 두 번 이상 사용 /로드하고있어 힙 손상이 발생합니다. 0x1470을 PID : 중요한 부분은 이미 초기화> 검증 STOP 00000211 -

appverifier

저를 경고합니다. < -

크리티컬 섹션 개체가 이미 초기화되었는지 확인하기 위해 글로벌 플래그를 사용하면 동일한 아이디어를 얻는 데 도움이되지 않습니까?

감사

+0

가능한 중복 초기화 [프로세스에 대해 한 번만 중요 섹션 초기화] (http://stackoverflow.com/questions/724560/initialize-critical-section-only-once-for-a-process) –

답변

0

이제 타사 응용 프로그램을 사용하여/같은 DLL을 여러 번 다시하지 않는 한 번

윈도우보다 dll을 더로드. 여기서 과 같음을 의미합니다. 타사 앱이 다른 위치에서로드하는 경우 문제가 발생합니다.

+0

Windows는 같은 DLL을 여러 번. DLL은 참조 횟수입니다. 프로세스 및 스레드 시작 중지에 대한 호출도 있습니다. 로딩 응용 프로그램이 라이브러리를 해제하고 다시로드하면 이는 전적으로 가능합니다. DLL이 해제 될 때 중요한 섹션에 클린업 코드가 없음을 나타냅니다. –

+1

DLL이 다른 LoadLibrary 호출로 다시로드되지 않고 참조가 증가하지만 DllMain이 호출되지 않습니다 *. – Richard

0

"setAtom"및 "getAtom"API 도움말을 사용할 수 있습니까? 나는 그들이 조금 오래된 학교라는 것을 알고 있지만 결코 알 수 없다.

관련 문제