을 claryfying에 대한 COM 기술은 정말 미안 내가 잠시 동안 사용하지 않았다 뭔가, 일부 정보가 잘못 될 수있는 경우는 (어쨌든, 나는 나와 함께 나의 책 "내부 COM + 기반 서비스"를 가지고있어!입니다)
간단히 말해서,의는 COM 객체의 간단한 정의를 해주지 : 그것은 클래스는 다음과 같은 방법으로 표준 인터페이스 IUnkown 노출하는 표준 DLL에 비해 아무것도 : COM 개체를 소비하는 클라이언트를 등록 :
- AddRef에가
- 자료 : 클라이언트 (일반적으로 사용되지 않는 객체가 실행을 중지하지만, 다른 하나는 상주 남아있을 수 있습니다)
- QueryInterface를 등록 해제하기 : 함수
의 QueryInterface의 주소를 얻기 위해 동적으로 다시 사용 강력하고 (컴파일 타임에 DLL을 알 필요는 없지만) 시간이 많이 소요되는 함수 (후기 바인딩)의 주소를 추적하십시오. 반면, DLL은 시스템에 등록되어 있기 때문에 컴파일시 함수의 주소를 직접 참조 할 수 있습니다 (모든 정보는 레지스트리에 저장됩니다).
새 개체를 생성하거나 실행중인 객체는 RPC (원격 프로 시저 호출)를 통해 수행되며 프록시 역할을로드 및/또는 수행합니다.
COM 객체의 새 인스턴스를 만들려면 CreateObject (VB에서)를 호출합니다. (Co) CreateInstance VC++ (또는 C#?)에서 실행중인 인스턴스를 가져 오려면 GetObject()를 호출 할 수 있습니다.
COM 객체의 목록을 가져 오는 것은 쉽지 않습니다 (이전에는 COM 객체가 DLL이 아닌 다른 것임) : 이는 라이브러리가 주로 주소 공간에로드된다는 것을 의미합니다 액세스가 비공개 인 각 프로세스의 심지어 많은 프로세스 (즉, Excel은 out-of-process COM 개체이므로 응용 프로그램의 주소 공간에 DLL을로드하지 않습니다.)간에 공유되는 개체 인 out-process COM 개체 (프로세스의 반대쪽) 호스트 (rpc.exe 또는 독점 호스트)
희망이 내가 COM에 대한 좋은 소개를 읽고 제안, 서지
모든
a) GetObject() 함수를 사용하십시오. b) 아무 의미가 없다. –