INTRSENDMSGEX

The INTRSENDMSGEX structure is thought to have no meaning outside WIN32K.SYS—and before it, WINSRV.DLL—being used only to package some of the input to the internal routine xxxInterSendMsgEx. Callers of that routine prepare the INTRSENDMSGEX on the stack.

Documentation Status

As a structure that exists only to support an internal routine, the INTRSENDMSGEX is of course not documented. Microsoft has, however, published names for it and its members in plain-text output from the !dso command as implemented in the USERKDX.DLL debugger extension from development kits for Windows NT 4.0 and Windows 2000.

Layout

What is specially remarkable about the INTRSENDMSGEX structure is that it has never changed through the whole history of Windows, here meaning from as far back as Windows NT 3.10 until at least the original release of Windows 10.

Offset (x86) Offset (x64) Definition
0x00 0x00
ULONG fuCall;
0x04 0x08
SENDASYNCPROC lpResultCallback;
0x08 0x10
DWORD_PTR dwData;
0x0C 0x18
LONG_PTR lRet;
0x10 0x20
ULONG fuSend;
0x14 0x24
ULONG uTimeout;
0x18 0x28
DWORD *lpdwResult;