EngExtCpp 확장 라이브러리
EngExtCpp 확장 라이브러리는 EngExtCpp.h에 있는 EngExtCpp 확장 프레임워크를 사용하는 DLL입니다. 이 라이브러리가 디버거 엔진에 의해 로드되면 메서드와 함수는 Microsoft Windows에서 사용자 모드 또는 커널 모드 디버깅을 수행하는 동안 추가 기능 또는 작업 자동화를 제공할 수 있습니다.
EngExtCpp 확장 프레임워크는 DbgEng 확장 프레임워크를 기반으로 빌드됩니다. 디버거 엔진과의 상호 작용을 위해 동일한 디버거 엔진 API를 제공합니다. 하지만 일반적인 작업을 더 간단하게 만드는 추가 기능도 제공합니다.
Windows용 디버깅 도구의 전체 설치를 수행한 경우 설치 디렉터리의 sdk\samples\extcpp 하위 디렉터리에서 "extcpp"라는 샘플 EngExtCpp 확장을 찾을 수 있습니다.
EXT_CLASS 및 ExtExtension
EngExtCpp 확장 라이브러리의 핵심은 EXT_CLASS 클래스의 단일 instance. EngExtCpp 확장 라이브러리는 라이브러리에서 내보낸 구조체의 서식을 지정하기 위한 모든 확장 명령과 메서드를 포함하는 이 클래스의 구현을 제공합니다.
EXT_CLASS ExtExtension의 하위 클래스입니다. 이 클래스의 단일 instance 확장 라이브러리에 대 한 소스 파일에 정확히 한 번 표시 해야 하는 EXT_DECLARE_GLOBALS 매크로를 사용 하 여 만들어집니다.
확장 라이브러리가 로드되면 클래스의 Initialize 메서드가 엔진에서 호출되고 클래스를 언로드하기 전에 Uninitialize 메서드가 호출됩니다. 또한 OnSessionActive, OnSessionInactive, OnSessionAccessible 및 OnSessionInaccessible 메서드는 엔진에서 호출하여 디버깅 세션의 상태를 확장 라이브러리에 알립니다.
확장 명령
EXT_CLASS 클래스에는 확장 명령을 실행하는 데 사용되는 여러 메서드가 포함될 수 있습니다. 각 확장 명령은 EXT_COMMAND_METHOD 매크로를 사용하여 EXT_CLASS 클래스에서 선언됩니다. 명령의 구현은 EXT_COMMAND 매크로를 사용하여 정의됩니다.
알려진 구조체
EXT_CLASS 클래스에는 ExtKnownStructMethod 프로토타입을 사용하는 여러 메서드가 포함될 수 있습니다. 메서드는 엔진에서 출력을 위해 특정 구조 형식의 인스턴스 형식을 지정하는 데 사용할 수 있습니다.
제공된 값
EXT_CLASS 클래스에는 ExtProvideValueMethod 프로토타입을 사용하는 여러 메서드가 포함될 수 있습니다. 메서드는 엔진에서 확장에서 제공하는 일부 의사 레지스터를 평가하는 데 사용할 수 있습니다.