Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Existují tři rozhraní zpětného volání typu COM, která jsou používána jádrem: IDebugEventCallbacks pro upozorňování rozšíření ladicího programu a aplikací na změny v jádru nebo cíli, IDebugInputCallbacks pro vyžádání vstupu a IDebugOutputCallbacks pro odesílání výstupu.
Objekty zpětného volání jsou registrovány u klientů. Ve většině případů může být jedna instance každého ze tří rozhraní zpětného volání registrována u každého klienta (verze Unicode a ASCII rozhraní se počítají jako stejné rozhraní).
Při vytváření klienta si modul pamatuje vlákno, ve kterém byl vytvořen. Engin používá stejné vlákno pokaždé, když provádí volání na instanci zpětného volání registrovanou u klienta. Pokud je vlákno používáno, modul zařadí volání, která potřebuje provést. Aby modul mohl provádět tato volání, metoda DispatchCallbacks by měla být volána vždy, když je vlákno klienta nečinné. Metoda ExitDispatch způsobí, že DispatchCallbacks se vrátí. Pokud je vlákno to samé vlákno použité ke spuštění relace ladicího programu, pak modul může provádět volání zpětného volání během WaitForEvent metody a DispatchCallbacks nemusí být volán.
Metoda FlushCallbacks říká modulu, aby odeslal všechny výstupy vyrovnávací paměti do výstupního zpětného volání.
Objekty zpětného volání události
Rozhraní IDebugEventCallbacks je používáno modulem k oznámení rozšíření ladicího programu a aplikací událostí a změn modulu a cíle. Implementace IDebugEventCallbacks lze zaregistrovat u klienta pomocí SetEventCallbacks. Aktuální implementace zaregistrovaná v klientovi se dá najít pomocí GetEventCallbacks. Počet zpětných volání událostí zaregistrovaných napříč všemi klienty lze najít pomocí getNumberEventCallbacks.
Podrobnosti o tom, jak modul spravuje události, najdete v tématu Monitorování událostí.
Vstupní objekty zpětného volání
Rozhraní IDebugInputCallbacks je používáno enginem k žádosti o vstup z rozšíření ladicího programu a aplikací. Implementace IDebugInputCallbacks lze zaregistrovat u klienta pomocí SetInputCallbacks. Aktuální implementace zaregistrovaná v klientovi se dá najít pomocí GetInputCallbacks. Počet vstupních zpětných volání registrovaných napříč všemi klienty lze najít pomocí getNumberInputCallbacks.
Podrobnosti o tom, jak modul spravuje vstup, najdete v tématu Vstup a výstup.
Objekty zpětného volání výstupu
Rozhraní IDebugOutputCallbacks používá engine pro posílání výstupů do jednotlivých rozšíření a aplikací ladicího programu. Implementace IDebugOutputCallbacks lze zaregistrovat u klienta pomocí SetOutputCallbacks. Aktuální implementace zaregistrovaná v klientovi se dá najít pomocí GetOutputCallbacks. Počet výstupních zpětných volání registrovaných napříč všemi klienty lze najít pomocí getNumberOutputCallbacks.
Podrobnosti o tom, jak modul spravuje výstup, najdete v tématu Vstup a výstup.
Poznámka Jak je typické pro objekty COM, modul zavolá IUnknown::AddRef u objektu COM zpětného volání při registraci u klienta a IUnknown::Release při nahrazení objektu nebo odstranění klienta.