2013-02-20 1 views
0

C#에서 EasyHook을 사용하여 COM 개체의 메서드 (관리되지 않음)에 제대로 연결하려고합니다.후크 함수 처리

COM 개체의 메서드 주소를 확인할 수 있었고 제대로 후크 기능을 트리거 할 수있었습니다. 그들은 난 그 같지 않은 사람들을 (한 번 내 후크 안에, 모든 매개 변수가 뒤섞여 그러나

SendHook = LocalHook.Create(0x12345678, new DMyFunc(MyFunc_Hooked), this); 

: 나는 자습서에있는 것과 거의 비슷한 코드의 나머지되고, 이런 식으로했다 원래 전달).

또한 반환 할 수 없습니다 (단락을 반환하고 값이 제대로 반환되지 않는 다른 함수를 연결하려고 시도했음을 유의하십시오). 내가 eXescope을 열 때

,이 함수 서명 중 하나입니다

function MyFunc(out ParamA:^BSTR; out ParamB:^bool): ^TypeA; 

그리고 나는 C#에서 일반적으로 COM 개체를 사용하는 경우이 함수의 서명은 다음과 같습니다

TypeA MyFunc(ref string ParamA, ref bool ParamB); 

어떤 아이디어 ? 미리 감사드립니다!

+2

COM 개체에 대한 포인터가되는 호출에 대한 첫 번째 매개 변수를 고려하고 있습니까? COM 호출의 예를 보려면 다음을 참조하십시오. http://www.codeproject.com/Articles/13601/COM-in-plain-C –

+0

그 사실을 알지 못했지만 계정, 감사합니다 !!!!! –

답변

1

Dark Falcon이 제공 한 기사를 읽은 후 5 분 만에 문제를 해결할 수있었습니다. 나는 그것을 완전히 읽는 것이 좋습니다! 그러므로 대답에 대한 모든 신용은 그에게 돌아갑니다!

+0

안녕하세요 슬프게도이 기사에서 설명하는 것처럼 쉽지 않습니다. 이것은 모든 복잡한 것들을 옆에 두는 초보자 기사입니다. 그리고 COM은 아주 !! 복잡한. 나는 COM 인터페이스에 훅을 설정하는 것이 지옥에 직접적으로 연결된다는 것을 알아 차렸다. 내 후크 마침내 원격 프로 시저 호출 런타임 래퍼 개체에 설정된 것을 알게되었습니다! (Rpcrt4.dll) 대신에 내가 후크 싶었던 기능. 결과가 결코 결코 beeing하지 않거나 심지어 충돌! – Elmue