Ben bir .NET programcı ve COM için yeni. Basit terimlerle CoCreateInstance'ın işlevi nedir bilmek ister misiniz?CoCreateInstance'ın tam işlevi nedir?
cevap
Sen anonim fabrika sınıfına bir arayüz olarak CoCreateInstance()
düşünebiliriz.
OOP bu sadece bir oluşturma yöntemini çağırın ve tam olarak bu arayüzde arkasında ne sınıf bilmek zorunda kalmadan bir arabirim işaretçisi/referans almak için bir fabrika deseni kullanılması genellikle makul. Ama yine de bir fabrika olarak kullanmak için hangi sınıf bilmek gerekir. Bunu küresel bir işleve sahip olarak da gizleyebilirsiniz, ancak yine de adını ve çağrı kurallarını bilmeniz gerekir.
CoCreateInstance daha da ileri gider - fabrika sınıfını da gizler ve sistem çapında bir global işlev sağlar. Sağladığınız tek şey bir sınıf kimliğidir - ki bu sadece bir GUID - ve bir arayüz kimliği - ki bu da bir GUID'dir. Uygulamanın nerede olduğunu ve hangi dilde olduğunu bilmiyorsunuz - COM, sisteminizde, belirtilen arabirim kimliği için bir arabirim oluşturan, belirtilen sınıf kimliğinin uygulanmasını içeren bir COM sunucusu bulunduğundan, tüm bunlarla ilgilenir.
Sistem çapında global CoCreateInstance() çağırırsanız, COM sunucusunu bulur (veya başarısız), başlatır, bir nesne oluşturmasını ister (başarısız olabilir), bu arabirime bir arabirim işaretçisi alır (başarısız olabilir)) ve bu arayüz işaretçisini size döndürür.
koyun basitçe, bir sınıfın örneğini oluşturmak için kullanılan, sınıf bir GUID tarafından belirtilen ediliyor.
HRESULT CoCreateInstance(
__in REFCLSID rclsid, // which class you want
__in LPUNKNOWN pUnkOuter, // used in aggregation
__in DWORD dwClsContext, // how/where you want the object created
__in REFIID riid, // which of the object's interfaces you want to use
__out LPVOID *ppv // where the pointer to the created object is placed
);
fazla bilgi için,
documentation okuyun.