2012-10-02 2 views
0

dll을 호출하는 두 개의 프로그램이 있습니다. 둘 다 dll의 동일한 인스턴스를 호출하여 앞뒤로 정보를 전달하는 데 사용할 수있게하려고합니다.dll의 올바른 인스턴스를 pinvoke

두 프로그램이 동일한 dll을 사용하고 dv를 역방향 pinvokes 및 콜백으로 앞뒤로 전달할 수 있도록 동일한 인스턴스를 정확하게 pinvoke 할 수 있습니까?

pinvoke가이 방법이 아닙니까? 더 좋은 방법이 있습니까?

+1

DLL이 작동하는 방식이 아니기 때문에 하나의 DLL을 두 프로세스에로드해도 데이터가 공유되지 않습니다. 데이터를 공유하도록 명시 적으로 프로그램하지 않는 한 메모리 매핑 된 파일은 일반적인 접근 방식입니다. –

+0

WCF를 사용할 수없는 이유가 있습니까? 그것은 응용 프로그램 간의 통신을위한 나의 선택 일 것입니다. – briantyler

답변

2

"DLL의 공유 섹션"이라고하며이를 통해 DLL을로드하는 모든 프로세스간에 데이터를 공유 할 수 있습니다.

코드가 다른 프로세스에서 실행 중일 때 콜백을 공유 할 수 없습니다. 이를 위해서는 일종의 IPC (프로세스 간 통신) 메커니즘이 필요합니다.

전반적으로 나는 응용 프로그램간에 데이터를 공유하는 특별한 방법이 아니므로 전반적으로 권장하지 않습니다. 도움을받을 방법을 모색하고 샘플을 작성하는 방법을 배우고 독자적으로 올바르게 수행하려면 책 (Windows Internals, 유용한 어쨌든 읽음)을 읽을 필요가 있습니다.