Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du anropar eller får åtkomst till en shell-funktion eller ett shell-gränssnitt från en tråd som har initierats som en multitrådad lägenhet kan funktionaliteten hos funktionen eller gränssnittet bli nedsatt eller helt misslyckas.
Ursprunglig version: Windows-skalet och -gränssnittet
Ursprungligt KB-nummer: 287087
Orsak
Med ett anrop till CoInitializeEx (COINIT_MULTITHREADED)
kan anrop till objekt som skapats i den anropande tråden köras på valfri tråd. När du kommer åt objekt som använder lägenhetstrådsmodellen från en flertrådad lägenhet synkroniserar COM åtkomsten till objektet. För att den här synkroniseringen ska ske måste COM hantera anrop till objektet. Eftersom skalet för närvarande inte tillhandahåller nödvändig information, antingen via ett typbibliotek eller proxy/stub-kod, för att objekten ska överföras, misslyckas försök att komma åt skalobjekt från en flertrådad lägenhet.
Anrop som kan påverka shell-funktioner
Följande är exempel på hur anrop till CoInitializeEx (COINIT_MULTITHREADED)
kan påverka funktioner som förlitar sig på gränssnittsobjekt:
GetOpenFileName/GetSaveFileName
Användare kan navigera till namnområdestilläggsmappar som Mina dokument via dialogrutan Öppna och Spara som . Dessa mappar kan dock inte bläddras till eftersom webbläsaren inte kan skapa de nödvändiga gränssnitten, till exempel
IShellFolder
.ShellExecute/ShellExecuteEx
ShellExecute
kan skrivas för att utöka funktionaliteten i antingenShellExecute
ellerShellExecuteEx
genom att implementera gränssnittetIShellExecuteHook
. NärShellExecute
ellerShellExecuteEx
anropas kan registreradeShellExecute
krokar inte laddas.
I båda dessa exempel misslyckas vanligtvis komponenten som försöker hämta en gränssnittspekare till ett skalobjekt med CoCreateInstance
, IUnknown::QueryInterface
och så vidare, med fel E_NOINTERFACE
när den anropas från flertrådade miljöer. Anledningen, som nämnts ovan, är att det inte finns någon typinformation eller proxy/stub-kod för de objekt som begärs.