QueryInterface
Bir nesnenin sağladığı işlevselliği statik olarak (örneği başlatılmadan önce) ifade ettiği mekanizmalar olsa da, temel COM mekanizması adlı QueryInterface
yöntemi kullanmaktırIUnknown
.
Her arabirim ' den IUnknown
türetilir, bu nedenle her arabirimde bir uygulaması vardır QueryInterface
. Uygulamadan bağımsız olarak, bu yöntem çağıranın işaretçi istediği arabirimini kullanarak IID
bir nesneyi sorgular. Nesnesi bu arabirimi destekliyorsa, QueryInterface
arabirimini çağıran AddRef
bir işaretçi alır. Aksi takdirde hata kodunu döndürür E_NOINTERFACE
.
Referans Sayma kurallarına her zaman uymanız gerektiğini unutmayın. Başvuru sayısını sıfıra azaltması için arabirim işaretçisini çağırırsanız Release
, bu işaretçiyi bir daha kullanmamalısınız. Bazen bir nesneye zayıf bir başvuru almanız gerekebilir (yani, başvuru sayısını artırmadan arabirimlerinden birine yönelik bir işaretçi elde etmek isteyebilirsiniz), ancak bunu çağrılarak QueryInterface
Release
yapmak kabul edilemez. Böyle bir şekilde elde edilen işaretçi geçersizdir ve kullanılmamalıdır. Tanımlandığında _ATL_DEBUG_INTERFACES
bu durum daha da görünür hale gelir, bu nedenle bu makronun tanımlanması başvuru sayma hatalarını bulmanın yararlı bir yoludur.