Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Shaswata Das 5c6fe3db62
Create README.md
4 years ago
..
dbgexts.cpp commiting as it is 4 years ago
dbgexts.def commiting as it is 4 years ago
dbgexts.h commiting as it is 4 years ago
dbgexts.rc commiting as it is 4 years ago
exts.cpp commiting as it is 4 years ago
makefile commiting as it is 4 years ago
readme.txt commiting as it is 4 years ago
sources commiting as it is 4 years ago

readme.txt

README file for sample extension dbgexts.dll



This extsnsion dll shows how to write an enginge-style extension and demostrates use of a few APIs provied to extension dlls


Mandatory routines which must be implemented and exported for engine style extensions:
HRESULT
CALLBACK
DebugExtensionInitialize(PULONG Version, PULONG Flags)

This is called on loading extension dll. Global variables and flags for the extension should be initialized in this routine. One
of the useful things is to initialize WINDBG_WNTENSION_APIS global which has some commonly used APIS for memory reads and I/O.

It should return the extensions version in Version. Flags is reserved parameter for future use and should be set to 0.



These 2 routines are optional but its recomended to implement these routines in extension for better control of the debug session.
CALLBACK
DebugExtensionNotify(ULONG Notify, ULONG64 Argument)
This is used to notify extension dll of change in session states like when the session becomes accessible etc. Look at DEBUG_NOTIFY*
definitions in dbgeng.h for argument values.



CALLBACK
DebugExtensionUninitialize(void)
This is called when dll is unloaded and can ge used for cleanups.





Extension Calls
---------------

An extension has the type:
HRESULT CALLBACK (PDEBUG_CLIENT Client, PCSTR args)

'Client' is the initial pointer to debug engine IDebugClient interface. In this sample, upon entering entension all engine
Intefaces, which would be required in extension, are queried from the DEBUG_CLIENT. INIT_API / ExtQuery are handy definitions for doing so.

Any Interfaces queried should be released before exit. EXIT_API / ExtRelease are provided for this.


Extensions
----------

cmdsample

This demonstrates use of engine APIs like IDebugControl::Execute, Output.


structsample

This shows how to read data from the target, and also shows how to use types to read values correctly so that extension
need not be rewritten when type definitions change for the target.


help

Every extension dll should have one extension called 'help' which shows descriptions for extensions that are present in the dll.