Biblioteki rozszerzeń EngExtCpp

Biblioteka rozszerzeń EngExtCpp jest biblioteką DLL, która używa struktury rozszerzenia EngExtCpp znalezionej w pliku EngExtCpp.h. Gdy ta biblioteka jest ładowana przez aparat debugera, jej metody i funkcje mogą oferować dodatkowe funkcjonalności lub automatyzować zadania podczas debugowania w trybie użytkownika lub w trybie jądra w systemie Microsoft Windows.

Struktura rozszerzenia EngExtCpp jest oparta na strukturze rozszerzenia DbgEng. Oferuje on ten sam interfejs API aparatu debugera na potrzeby interakcji z aparatem debugera. ale udostępnia również dodatkowe funkcje, aby ułatwić wykonywanie typowych zadań.

Jeśli wykonano pełną instalację narzędzi debugowania dla systemu Windows, przykładowe rozszerzenie EngExtCpp o nazwie "extcpp" można znaleźć w podkatalogu sdk\samples\extcpp katalogu instalacyjnego.

EXT_CLASS i ExtExtension

Podstawą biblioteki rozszerzenia EngExtCpp jest pojedyncze wystąpienie klasy EXT_CLASS . Biblioteka rozszerzeń EngExtCpp zapewni implementację tej klasy, która zawiera wszystkie polecenia rozszerzeń i metody formatowania struktur eksportowanych przez bibliotekę.

EXT_CLASS jest podklasą ExtExtension. Pojedyncze wystąpienie tej klasy jest tworzone przy użyciu makra EXT_DECLARE_GLOBALS , które musi być wyświetlane dokładnie raz w plikach źródłowych biblioteki rozszerzeń.

Po załadowaniu biblioteki rozszerzeń metoda Initialize klasy jest wywoływana przez silnik, a metoda Uninitialize jest wywoływana przed odłączeniem klasy. Ponadto metody OnSessionActive, OnSessionInactive, OnSessionAccessible i OnSessionInaccessible są wywoływane przez aparat w celu powiadomienia biblioteki rozszerzenia o stanie sesji debugowania.

Polecenia rozszerzenia

Klasa EXT_CLASS może zawierać wiele metod używanych do wykonywania poleceń rozszerzenia. Każde polecenie rozszerzenia jest deklarowane w klasie EXT_CLASS przy użyciu makra EXT_COMMAND_METHOD . Implementacja polecenia jest definiowana przy użyciu makra EXT_COMMAND .

Znane struktury

Klasa EXT_CLASS może zawierać wiele metod, które używają prototypu ExtKnownStructMethod . Metody mogą być używane przez silnik do formatowania wystąpień niektórych typów struktur na potrzeby danych wyjściowych.

Podane wartości

Klasa EXT_CLASS może zawierać wiele metod, które używają prototypu ExtProvideValueMethod . Metody mogą być używane przez silnik do oceny niektórych pseudorejestrów dostarczonych przez rozszerzenie.