홈>
이 C ++/COM 셸 확장 튜토리얼에서 프로그래머는 (목적으로)
QueryInterface()
에 전화하는 것을 포기할 수있는
대신 일반 객체를 전달하십시오. 적어도
DllGetClassObject()
를 구현할 때 작동합니다.
. 그는
QueryInterface()
의 목적을 말한다
주어진 인터페이스를 지원하는지 여부에 대해 각 객체가 스스로 설명하도록하는 것입니다.
마이크로 소프트는 말 객체의 특정 인터페이스에 대한 포인터를 가져 오는 데 필요합니다.
QueryInterface()
는 어느 정도까지
필요한?
QueryInterface()
에 전화 할 때가 있습니까
절대적으로 필수적이며 코드가 없으면 코드가 작동하지 않습니까? 아니면 비디오 자습서에서 제안한 것처럼 객체 자체가 기술적으로 충분합니까?
QueryInterface()
- 답변 # 1
관련 질문
- c++ : IsPressed(첫 번째 누를 때만 true를 반환해야 하는 함수)는 어떻게 작성합니까?
- c++ : icu.h 라이브러리에서 ucal_setDefaultTimeZone()을 사용하여 Windows에서 시간대 변경
- c++ : "WCHAR *" 유형의 인수가 "const char*" 유형의 매개변수와 호환되지 않습니다.
- c# : 디스플레이 설정 변경 시 모니터의 정확한 작업 영역 얻기
- c++ : 메모리를 재정의하지 않고 문자열 쓰기
- c++ : URL을 사용하여 백그라운드에서 앱의 기본 창으로 UWP 앱을 시작하는 방법
- c++ : Windows 토스트 알림 콜백이 호출되지 않음
- c++ : PostMessage로 두 개의 텍스트 입력 필드를 채우는 방법은 무엇입니까?
- XZip, C++, Windows의 기존 아카이브에 파일 추가
- 픽셀의 원시 배열을 창에 그리기(C++ WinAPI)
아니요, 일반적으로
QueryInterface
호출을 건너 뛸 수 없습니다 사용중인 인터페이스 포인터를 이미 알고 있지 않으면IFoo 및 IBar를 구현하는 객체를 상상하면 레이아웃은 다음과 같습니다.
객체의 인스턴스가
IFoo
를 가리킬 수 있습니다 v 테이블 포인터 또는IBar
v 테이블 포인터. 매개 변수 개수가 같지 않기 때문에 실제로 어떤 메서드인지 모른 채 네 번째 메서드를 호출하면 충돌이 발생합니다. 서명이 동일하더라도 임의의 메서드를 호출하는 것은 좋지 않습니다.DllGetClassObject
의 발신자 때문에 귀하가 언급 한 동영상이 사라집니다. 보통IClassFactory
만 요청하십시오 . 그러나 누군가가IClassFactory2
를 요청할 수 있기 때문에 안전하지 않습니다. 대신에. 올바른DllGetClassObject
따라서 구현은 또한QueryInterface
를 호출해야합니다 .