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 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 structure into a mixture of UCHAR and USHORT bit fields. By version 6.0, the structure has only UCHAR bit fields.

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
0x00 / 0x38
UCHAR ForceCredits : 3;
6.2 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
0xFF000000 (5.1);
0x01 / 0xFF (5.2);
0x02 / 0xFF
UINT MemoryPriority : 8;
5.1 only previously UCHAR
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
UCHAR VmExiting : 1;
6.0 and higher  
0x03 / 0x04
UCHAR ExpansionFailed : 1;
late 6.0 and higher  
0x03 / 0x08
UCHAR SvmEnabled : 1;
6.3 and higher  
0x03 / 0x10
UCHAR ForceAge : 1;
10.0 and higher  
0x03 / 0x20
UCHAR NewMaximum : 1;
10.0 and higher  
0x03 / 0xC0
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  

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