QueryInterface
Хотя механизмы объект может представить функциональные возможности его предоставляют статически (), прежде чем он создан базовый механизм модели COM использовать метод с именем IUnknown QueryInterface.
Каждый интерфейс является производным от IUnknown, поэтому каждый интерфейс имеет реализацию QueryInterface. Независимо от реализации этот метод извлекает объект, используя идентификатор IID интерфейса, к которым вызывающий объект должен указатель. , Если обозреватель, взаимодействующие, QueryInterface объекта получают указатель на интерфейс, а также при вызове AddRef. В противном случае функция возвращает код ошибки E_NOINTERFACE.
Обратите внимание, что необходимо повиноваться правилам Подсчет ссылок все время. При вызове Выпуск указателя интерфейса для уменьшения счетчика ссылок, равное нулю, не следует использовать этот указатель снова. Иногда можно получить слабую ссылку на объект (то есть можно пожелать получить указатель на один из его интерфейсов без выполнить приращение счетчика ссылок), но не желательно сделать путем вызова QueryInterface выполните Выпуск. Указатель, полученный таким способом является недопустимым и не должен использоваться. Этот более легко будет ясным при _ATL_DEBUG_INTERFACES указано, поэтому указание этот макрос полезный способ найти ссылку учета ошибок.