Geoff Chappell, Software Analyst
The SBINFO structure (formally tagSBINFO) holds what information that WIN32K.SYS—and before it, WINSRV.DLL—keeps about a window’s scrollbars.
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.
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.
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!