Aracılığıyla paylaş


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ı QueryInterfaceyöntemi kullanmaktırIUnknown.

Her arabirim ' den IUnknowntü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 AddRefbir 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 Releaseyapmak 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.

Ayrıca bkz.

COM’a Giriş
QueryInterface: Nesnede Gezinme