OBJECT_HANDLE_COUNT_DATABASE

The OBJECT_HANDLE_COUNT_DATABASE structure (formally _OBJECT_HANDLE_COUNT_DATABASE) for any one object tells which processes have how many handles open to the object. This database is created only when the object is first opened concurrently by at least two processes. Its address is then kept in the OBJECT_HEADER_HANDLE_INFO as its HandleCountDataBase member.

Layout

The OBJECT_HANDLE_COUNT_DATABASE is 0x0C or 0x18 bytes in 32-bit and 64-bit Windows, respectively. Microsoft’s names and types are known from type information in public symbol files for the kernel, starting with Windows 2003 SP1. That these names apply at least as far back as version 4.0 is known with slightly less certainty from the output of the !dso command as implemented by the debugger extension USEREXTS.DLL from the Windows NT 4.0 Device Driver Kit (DDK).

Offset (x86) Offset (x64) Definition Versions
0x00 0x00
ULONG CountEntries;
3.50 and higher
0x04 0x08
OBJECT_HANDLE_COUNT_ENTRY HandleCountEntries [ANYSIZE_ARRAY];
3.50 and higher