이유는 이것입니다. C# winforms 앱과 다른 프로세스에 삽입 될 C++ DLL이 있습니다. C#을 응용 프로그램에서 CreateRemoteThread() 원격 프로세스 주소 공간 안의 비 멤버 함수의 주소를 호출하려면. DWORD 그때 내가 문을 열어주는 말들 여기에 사용하는 가장 좋은 타입이 아닌 경우비 멤버 함수의 주소를 DWORD로 저장할 수있는 방법은 무엇입니까? (C++)
DWORD AddressOfDllFunction;
: 나는 메모리 맵 파일은 나는 현재에만 포함, 원하는 변수를 포함하는 구조를 공유하기 위해 DLL 및 응용 프로그램을 허용하도록 설정 다른 유형, 난 그냥 포인터를 보유하는 변수에 충분한 공간이 있는지 확인하려면 구조체의 C# 버전은 IntPtr 유형을 제외하고 동일한 변수가 포함되어 있습니다. 원격 프로세스는 32 비트 프로세스이지만 무료로 64 비트 지원을받을 수 있다면 좋을 것입니다. 나는 시도했다 :
struct->AddressOfDllFunction = DllFunction;
그러나 그것은 작동하지 않는다. 나는 그걸로 놀아 보았고, 어떤 타입 캐스팅도 쓸모 없게 만들었다. 내가 한 모든 검색은 동일한 작업을 수행하려는 사람들 이었지만 수집 한 멤버 함수는 개체 인스턴스와 함수의 주소가 필요하기 때문에 가능하지 않습니다. 나는 이것이 매우 간단하고 느낀다는 것을 느낀다. 오랫동안 .Net을 사용해 왔지만 포인터를 사용하지는 않았지만 나는 C++을 처음 접했을 뿐이다. 요약하면 C#에서 MMF를 읽을 때 IntPtr로 자동 해석 될 수 있도록 구조체 데이터 형식의 변수가 필요하며 해당 변수의 내용을 원격 프로세스 주소의 DLL 함수 주소로 필요로합니다 공간.
읽어 주셔서 감사합니다. 모든 건설적인 도움을 주시면 감사하겠습니다.
하하, 고마워! 나는 명백한 것을 간과하고 있다는 것을 알았다. 나는 IPC에 void *를 사용하지 않기 위해 독서하는 데 너무 익숙해 져서 대부분의 사람들이 사용하기를 원하지 않는 이유는 내가 원하는 정확한 이유라고 생각하지 않았습니다. – MitchellKrenz