2011-10-17 4 views
1

타사 응용 프로그램을 내 DLL과 통합하려고합니다. DLL은 제 3 자 소프트웨어가 실행될 때마다 여러 번 만들어지고 파괴됩니다.어떤 프로세스가 내 DLL 프로세스를 생성합니까?

내 DLL에서 동일한 제 3 자의 실행인지 아니면 나를 만드는 다른 DLL인지를 알아야합니다. 제 3 자 소프트웨어의 어떤 프로세스가 나를 창조하고 있는지 인식 할 수있는 방법이 있습니까?

답변

2

DLL을 매번 언로드하는 경우로드 될 때마다 영구 저장 장치가 필요합니다. 호출하는 응용 프로그램이이 정보를 제공하지 않으면 DLL 자체가이를 수행해야합니다.

가능성은 named shared memory 일 수 있습니다. 존재하지 않는 경우, 그것을 작성한 다음이를 "플래그"로 사용하여 동일한 실행에서 다시 호출됨을 알 수 있습니다. 프로세스가 끝나면 프로세스가 종료됩니다. 물론 이것과 관련된 보안 관련 사항도 고려해야합니다. 다른 프로세스는 잠재적으로 공유 메모리를 만들어 DLL이 실제로 첫 번째 호출 일 때 같은 실행에서 다시 호출되고 있다고 생각하게 만들 수 있습니다.

+1

명명 된 뮤텍스 또는 이벤트 만 사용하십시오. 뮤텍스 + OpenMutex를 만듭니다. –

+1

@ 한스 : 좋은 지적입니다. 공유 메모리를 사용하면 필요한 경우 일부 상태 정보를 저장할 수 있다고 생각했습니다. –

+0

@ 한스 : CreateMutex + OpenMutex를 사용하는 방법에 대해 자세히 알고 싶습니까? 감사. – Peretz

관련 문제