SBINFO

The SBINFO structure (formally tagSBINFO) holds what information that WIN32K.SYS—and before it, WINSRV.DLL—keeps about a window’s scrollbars.

Documentation Status

The SBINFO is not documented. Though symbol files for WIN32K.SYS in Windows 8 and higher name the SBINFO in the C++ decorations of internal routines, type information for the structure is present only in symbol files for Windows 7—not before and not since.

Layout

The SBINFO is 0x24 bytes in all known versions of both 32-bit and 64-bit Windows, except that it is only 0x1C bytes in version 3.10.

Offset Definition Versions
0x00
INT WSBflags;
3.51 and higher
0x00 (3.10);
0x04
SBDATA Horz;
all
0x0C (3.10);
0x14
SBDATA Vert;
all
0x18 (3.10)
INT WSBflags;
3.10 only

The USEREXTS debugger extensions from one or another Device Driver Kit (DDK) for early versions of Windows name the members differently for the !dw command’s description of an SBINFO that’s pointed to from the pSBInfo member of a WND. Indeed, the version for Windows NT 3.51 names that pointer differently too: as rgwScroll. This command’s dump of the SBINFO has SBO_FLAGS for the WSBflags, then SBO_HMIN, SBO_HMAX, SBO_HPAGE and SBO_HPOS for the members of what is shown above as Horz and then SBO_VMIN, etc, for Vert. For the !dso command, the debugger extensions in the DDKs for Windows NT 4.0 and Windows 2000 give the same names as are here reproduced from the Windows 7 symbol files.

Flags

Seemingly more helpful is that these debugger extensions all name some defined bits for the WSBflags: SB_VERT and SB_CTL for 0x00000001 and 0x00000002, respectively. That I don’t present them with the prominence of a table is because these constants are not for these flags!