Udostępnij za pośrednictwem


QueryInterface

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

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

Należy pamiętać, że należy przestrzegać reguł zliczania odwołań przez cały czas. Jeśli wywołasz Release wskaźnik interfejsu, aby zdekrementować liczbę odwołań do 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że być konieczne uzyskanie wskaźnika do jednego z jego interfejsów bez zwiększania liczby odwołań), ale nie jest dopuszczalne, aby to zrobić, wywołując QueryInterface następnie Release. Wskaźnik uzyskany w taki sposób jest nieprawidłowy i nie powinien być używany. Jest to bardziej czytelne, gdy _ATL_DEBUG_INTERFACES jest definiowane, dlatego zdefiniowanie tego makra jest przydatnym sposobem znajdowania błędów zliczania odwołań.

Zobacz też

Wprowadzenie do modelu COM
QueryInterface: nawigowanie w obiekcie