PRB: Synchronizace OLE volání se nezdaří v Inter, Process/vlákno SendMessage

Překlady článku Překlady článku
ID článku: 131056 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Příznaky

Synchronní volání OLE provedené příjemce SendMessage inter-process/mimo podproces se nezdaří s RPC_E_CANTCALLOUT_ININPUTSYNCCALL(0x8001010D).

Příčina

Příčinou je popsána v podrobných informací v části "Další informace" tohoto článku.

Řešení

Místo inter process/inter thread SendMessage použít PostMessage.

Prohlášení

Toto chování je záměrné.

Další informace

Viz začátku Kapitola 13 v OLE 2 Programmer's Reference svazku 1 pro kategorie volání OLE. Pochopení těchto kategorií je třeba v tomto článku.

Většina volání OLE jsou synchronní volání. Synchronní volání jiný proces výnosy tohoto procesu a čeká na odpověď od tohoto procesu. Kromě toho má OLE synchronizovány vstup volání, která se vztahují k rozhraní inplace aktivace. Synchronizovat vstup volání jsou implementovány pomocí inter process/inter thread SendMessage.

16bitový systém Windows neumožňuje úkol výnos při v inter proces/inter-thread SendMessage, protože může dojít k zablokování systému. K zablokování dochází, protože zpráva pro odesílatele může být uložen v horní části sdílené systémové fronty a tím se zabrání další úkoly, včetně příjemce SendMessage, jejich zprávy načítání ze systémové fronty, dokud odesílatele ani. Odesílatel nelze načíst své zprávy, protože čeká inter process/inter thread SendMessage vrátíte.

V systému Windows 32-bit každý proces má vlastní frontu systému a tato architektura obvykle zabrání zablokování potíže vyskytující. Však po jednoho procesu je aktivní buňce v okně jiným procesem, systémové fronty dva procesy synchronizovány jako v oknech 16 bitů, tak může dojít k zablokování. Chcete-li tomu zabránit, zastaví OLE synchronní volání OLE z prováděny při volající příjemce pozvání synchronizovány vstup.

OLE Určuje, zda volající synchronního volání je příjemce pozvání synchronizovány vstup pomocí rozhraní API InSendMessage(). Tato kontrola široké zabraňuje synchronního volání z prováděny, pokud se volající momentálně příjemce jakékoli inter process/inter thread SendMessage.

Vlastnosti

ID článku: 131056 - Poslední aktualizace: 11. července 2005 - Revize: 2.2
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Platform Software Development Kit-January 2000 Edition na těchto platformách
    • Microsoft Windows NT Server 3.5
    • Microsoft Windows NT Server 4.0 Standard Edition
    • Microsoft Windows NT Workstation 3.5
    • Microsoft Windows NT Workstation 4.0 Developer Edition
    • Microsoft Windows 95
    • the operating system: Microsoft Windows 2000
Klíčová slova: 
kbmt kbprb KB131056 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:131056

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com