Çok iş parçacıklı bir daireden kabuk işlevlerini ve arabirimlerini çağırma

Çok iş parçacıklı bir daire olarak başlatılan bir iş parçacığından bir kabuk işlevini veya kabuk arabirimini çağırdığınızda veya eriştiğinde, işlevin veya arabirimin işlevselliği bozulmuş veya tamamen başarısız olabilir.

Özgün sürüm: Windows kabuğu ve Arabirimi
Özgün KB numarası: 287087

Neden

çağrısı, CoInitializeEx (COINIT_MULTITHREADED) çağrı iş parçacığında oluşturulan nesnelere yapılan çağrıların herhangi bir iş parçacığında çalıştırılmasına olanak tanır. Çok iş parçacıklı bir daireden apartman iş parçacığı modelini kullanan nesnelere erişirken, COM nesneye erişimi eşitler. Bu eşitlemenin gerçekleşmesi için COM'un nesneye çağrıları hazırlaması gerekir. Kabuk şu anda bir tür kitaplığı veya ara sunucu/saptama kodu aracılığıyla gerekli bilgileri sağlamadığından, nesnelerinin sıralanması için çok iş parçacıklı bir daireden kabuk nesnelerine erişme girişimi başarısız olur.

Kabuk işlevlerini etkileyebilecek çağrılar

Aşağıda, çağrısının CoInitializeEx (COINIT_MULTITHREADED) kabuk nesnelerini kullanan işlevleri nasıl etkileyebileceğine ilişkin örnekler verilmiştir:

  • GetOpenFileName/GetSaveFileName

    Kullanıcılar, Aç ve Farklı Kaydet iletişim kutusu aracılığıyla Belgelerim gibi ad alanı uzantısı klasörlerine gidebilir. Ancak, tarayıcı gibi IShellFoldergerekli arabirimleri oluşturamadığından bu klasörlere göz atılamaz.

  • ShellExecute/ShellExecuteEx

    ShellExecutekancaları, veya arabirimini uygulayarak IShellExecuteHook işlevselliğini ShellExecuteShellExecuteEx genişletmek için yazılabilir. Veya ShellExecuteEx çağrıldığındaShellExecute, kayıtlı ShellExecute kancalar yüklenemez.

Bu örneklerin her ikisinde de, , IUnknown::QueryInterfacevb. ile CoCreateInstancebir kabuk nesnesine arabirim işaretçisi elde etmeye çalışan bileşen, çok iş parçacıklı dairelerden çağrıldığında genellikle hatayla E_NOINTERFACE başarısız olur. Yukarıda belirtildiği gibi nedeni, istenen nesneler için tür bilgisi veya ara sunucu/saptama kodu olmamasıdır.

Başvurular

İşlem, İş Parçacıkları ve Daireler