MMSUPPORT_FLAGS

The MMSUPPORT_FLAGS structure is a container for four bytes of flags in the MMSUPPORT structure.

It is here thought that the MMSUPPORT_FLAGS were introduced for version 5.0. Symbol files for Windows 2000 SP3 have it as a member named Flags in union with a ULONG named LongFlags, making an MMSUPPORT member named u. The MMSUPPORT_FLAGS were then a simple structure of UINT bit fields. Version 5.2 unpicked the union, making Flags directly an MMSUPPORT member, and remade the MMSUPPORT_FLAGS into a mixture of UCHAR and USHORT bit fields. By version 6.0, the structure has only UCHAR bit fields and one whole UCHAR. The 1607 release of version 10.0 keeps to this but organises the bit fields into unions: the bit fields in the first two bytes are in union with a USHORT named u1; those in the last byte are in union with a UCHAR named u2.

Offset / Mask Definition Versions Remarks
0x00000001 (5.0 to 5.1);
0x00 / 0x01 (5.2 to 6.0)
UINT SessionSpace : 1;
5.0 to 5.1  
UCHAR SessionSpace : 1;
5.2 to 6.0  
0x00000002 (5.0 to 5.1);
0x00 / 0x02 (5.2)
UINT BeingTrimmed : 1;
5.0 to 5.1  
UCHAR BeingTrimmed : 1;
5.2 only  
0x00000004 (5.0)
UINT ProcessInSession : 1;
5.0 only  
0x00000008 (5.0);
0x00000004 (5.1);
0x00 / 0x04 (5.2)
UINT SessionLeader : 1;
5.0 to 5.1  
UCHAR SessionLeader : 1;
5.2 only  
0x00 / 0x07
UCHAR WorkingSetType : 3;
6.1 and higher  
0x00 / 0x02 (6.0);
0x00 / 0x08 (6.1)
UCHAR ModwriterAttached : 1;
6.0 to 6.1  
0x00000010 (5.0);
0x00000008 (5.1);
0x00 / 0x08 (5.2);
0x00 / 0x04 (6.0);
0x00 / 0x10 (6.1)
UINT TrimHard : 1;
5.0 to 5.1  
UCHAR TrimHard : 1;
5.2 to 6.1  
0x00000020 (5.0);
0x00000010 (5.1)
UINT WorkingSetHard : 1;
5.0 to 5.1  
0x00000040 (5.0)
UINT WriteWatch : 1;
5.0 only  
0x00000020 (5.1)
UINT AddressSpaceBeingDeleted : 1;
5.1 only previously BOOLEAN in MMSUPPORT
0x00 / 0x38
UCHAR ForceCredits : 3;
6.2 to 10.0  
UCHAR Reserved0 : 3;
1511 and higher  
0x00 / 0x10 (5.2);
0x00 / 0x08 (6.0);
0x00 / 0x20 (6.1);
0x00 / 0x40
UCHAR MaximumWorkingSetHard : 1;
5.2 and higher  
0x00 / 0x20 (5.2);
0x00 / 0x10 (6.0);
0x00 / 0x40 (6.1)
UCHAR ForceTrim : 1;
5.2 to 6.1  
0x00 / 0x40 (5.2);
0x00 / 0x20 (6.0);
0x00 / 0x80
UCHAR MinimumWorkingSetHard : 1;
5.2 and higher  
0x00 / 0x40 (6.0)
0x01 / 0x01
UCHAR SessionMaster : 1;
6.0 and higher  
0x00 / 0x80 (6.0)
UCHAR TrimmerAttached : 1;
6.0 only  
0x01 / 0x01 (6.0)
UCHAR TrimmerDetaching : 1;
6.0 only  
0x01 / 0x06
UCHAR TrimmerState : 2;
6.1 and higher  
 
UINT Filler : 25;
5.0 only  
UINT Available : 10;
5.1 only  
UCHAR Available0 : 1;
5.2 only  
UCHAR Reserved : 7;
early 6.0  
UCHAR Reserved : 3;
late 6.0  
UCHAR Reserved : 1;
6.1 and higher  
0x01 / 0xF0
UCHAR PageStealers : 4;
late 6.0 and higher  
0x00FF0000 (5.1)
UINT AllowWorkingSetAdjustment : 8;
5.1 only previously UCHAR in MMSUPPORT
0xFF000000 (5.1);
0x01 / 0xFF (5.2);
0x02 / 0xFF
UINT MemoryPriority : 8;
5.1 only previously UCHAR in MMSUPPORT
UCHAR MemoryPriority : 8;
5.2 to 6.2  
UCHAR MemoryPriority;
6.3 and higher  
0x02 / 0x0001 (5.2)
USHORT GrowWsleHash : 1;
5.2 only  
0x03 / 0x01
UCHAR WsleDeleted : 1;
6.0 and higher  
0x02 / 0x0002 (5.2)
USHORT AcquiredUnsafe : 1;
5.2 only  
0x03 / 0x02 (6.0 to 1607)
UCHAR VmExiting : 1;
6.0 to 1607  
0x03 / 0x04 (late 6.0 to 1607)
UCHAR ExpansionFailed : 1;
late 6.0 to 1607  
0x03 / 0x08 (6.3 to 1607);
0x03 / 0x02
UCHAR SvmEnabled : 1;
6.3 and higher  
0x03 / 0x10 (6.3 to 1607);
0x03 / 0x04
UCHAR ForceAge : 1;
10.0 and higher  
0x03 / 0x08
UCHAR ForceTrim : 1;
1703 and higher  
0x03 / 0x10 (1703)
UCHAR UnlockInProgress : 1;
1703 only  
0x03 / 0x20 (10.0 to 1703);
0x03 / 0x10
UCHAR NewMaximum : 1;
10.0 and higher  
0x03 / 0xC0 (10.0 to 1703);
0x03 / 0x60
UCHAR CommitReleaseState : 2;
10.0 and higher  
 
USHORT Available : 14;
5.2 only  
 
UCHAR Available : 6;
early 6.0  
 
UCHAR Available : 5;
late 6.0 to 6.2  
 
UCHAR Available : 4;
6.3 only  

See that deletion of UnlockInProgress for the 1709 release of Windows 10 leaves the structure’s last bit undefined.

The 3-bit WorkingSetType that was introduced for version 6.1 is from the WORKING_SET_TYPE enumeration: