QueryInterface

Mimo że istnieją mechanizmy, za pomocą których obiekt może wyrazić funkcje zapewniane statycznie (przed jego wystąpieniami), podstawowym mechanizmem COM jest użycie IUnknown metody o nazwie QueryInterface .

Każdy interfejs pochodzi od klasy IUnknown , więc każdy interfejs ma implementację QueryInterface . Niezależnie od implementacji, ta metoda wysyła zapytanie do obiektu przy użyciu obiektu interfejsu, do którego obiekt IID wywołujący chce mieć wskaźnik. Jeśli obiekt obsługuje ten interfejs, QueryInterface pobiera wskaźnik do interfejsu, jednocześnie wywołując funkcję AddRef . W przeciwnym razie E_NOINTERFACE zwracany jest kod błędu.

Należy pamiętać, że należy przestrzegać reguł zliczania odwoływać przez cały czas. Jeśli wywołasz wskaźnik interfejsu, aby odliczyć liczbę odwoływać do Release zera, nie należy używać tego wskaźnika ponownie. Czasami może być konieczne uzyskanie słabego odwołania do obiektu (oznacza to, że można uzyskać wskaźnik do jednego z jego interfejsów bez zwiększania liczby odwoływać się), ale nie jest to akceptowalne przez wywołanie , po którym następuje QueryInterfaceRelease . Wskaźnik uzyskany w taki sposób jest nieprawidłowy i nie powinien być używany. Staje się to bardziej widoczne, gdy jest definiowane, więc zdefiniowanie tego makra jest przydatnym sposobem znajdowania błędów _ATL_DEBUG_INTERFACES zliczania odwoływać się.

Zobacz też

Wprowadzenie do modelu COM
: nawigowanie w obiekcie