1 내가 대리 프로세스 내에서의 COM DLL을 호스팅하는 경우으로 CoInitialize 및 CoUninitialize를 호출 할 책임이
(중 유틸리티를 dcomcnfg를 사용하거나 COM + 마법사) ?
2 COM 개체가 포함 된 ISAPI DLL을 빌드합니까?
1 내가 대리 프로세스 내에서의 COM DLL을 호스팅하는 경우으로 CoInitialize 및 CoUninitialize를 호출 할 책임이
(중 유틸리티를 dcomcnfg를 사용하거나 COM + 마법사) ?
2 COM 개체가 포함 된 ISAPI DLL을 빌드합니까?
사례 2에 대해서는 아무 생각이 들지 않지만 사례 1에서는 대리 프로세스가 확실하게 CoInitialize()
/CoUninitialize()
을 호출합니다. 내가 이것을 어떻게 알았는지.
우리는 COM +에서 호스팅하는 COM 개체를 사용하며 MS XML 4를 사용합니다. MS XML 4에서 XML 문서 개체를 만들려면 CoCreateInstance()
을 호출해야합니다. 우리는 COM 객체에서 CoInitialize()
을 결코 호출하지 않지만 문서 생성은 항상 성공적입니다. 확실히 대리모는 CoInitialize()
을 호출합니다. 독립 실행 형 앱에서 동일한 작업을 수행하는 경우 CoInitialize()
으로 전화하지 않는 한 문서 작성에 실패합니다.
그래서 결론은 다음과 같습니다. COM + 대리모 (DCOM 대리인에도 적용됩니다)는 CoInitialize()
이라고 부릅니다.
Btw 사례 2를 조사 할 때 사용할 수 있습니다. CoInitialize()
이 이미 호출 된 경우 ISAPI dll에 CoCreateInstance()
이라고 부릅니다.
답장을 보내 주셔서 감사합니다. COM + 대리인이 STA 또는 MTA에 가입하는지 여부를 알고 있습니까? – arnold
@arnold : COM 객체 스레딩 모델에 따라 달라집니다. http://msdn.microsoft.com/en-us/library/ms681753(VS.85).aspx – sharptooth