그 질문이 많은 의미를 가지지 않았다면 미안 해요. Hello World Shell Extension Handler를 만들려고합니다. 나는 this 튜토리얼을 따라왔다.DllGetClassObject를 생성자의 셸 확장 처리기로 가져와야하는 인수는 무엇입니까?
셸 확장 처리기는 IUnknown 인터페이스와 내가 수행 한 클래스 팩터 리를 구현해야한다고 말합니다.
class TestInterfaceImplementation : public IUnknown, public IClassFactory
ULONG STDMETHODCALLTYPE AddRef()
RESULT STDMETHODCALLTYPE QueryInterface(IN REFIID riid, OUT void **ppvObject)
ULONG STDMETHODCALLTYPE Release()
HRESULT STDMETHODCALLTYPE CreateInstance(IN IUnknown *pUnkOuter, IN REFIID riid, OUT void **ppvObject)
HRESULT STDMETHODCALLTYPE LockServer(IN BOOL fLock)
하지만 그게 전부입니다. DllGetClassObject을 구현하려고하면 쉘 확장자의 생성자에 잘못된 인수가 제공된다고합니다.
HRESULT __stdcall DllGetClassObject(IN REFCLSID rclsid, IN REFIID riid, OUT LPVOID *ppv) {
TestInterfaceImplementation *tii = new TestInterfaceImplementation(rclsid);
}
정확한 오류는 다음과 같습니다 튜토리얼 (I 게시 첫 번째 링크)는 당신이 가지고 말하는가에
error C2664: 'TestInterfaceImplementation::TestInterfaceImplementation(const TestInterfaceImplementation &)' : cannot convert parameter 1 from 'const IID' to 'const TestInterfaceImplementation &'
그러나 어디 (또는 방법) 그래서 내가 잃어버린하고 생성자보다 우선합니다.
Here이 시점까지 나의 완전한 코드입니다.
먼저이, 셸 확장되지 않습니다. 두 번째 어디에서 생성자가 선언 되었습니까? – Xearinox