MMSECTION_FLAGS

The MMSECTION_FLAGS (formally _MMSECTION_FLAGS) are a structure of UINT bit fields that are shared between the SECTION and CONTROL_AREA structures.

In the table that follows, the masks and Microsoft’s names for the members are from public symbol files for the kernel, starting with Windows 2000 SP3. What’s shown for earlier versions is, of course, something of a guess.

Strikingly many of the flags have kept their same numerical value through the whole history of Windows. Before Windows XP this may have been helped by the flags’ exposure to public view through the KDEXTX86 debugger extension’s !ca command. (Back then, debugger extensions had to rely on hard-coded knowledge, with no help from type information in symbol files.)

The first significant disruption was for Windows Vista to accommodate the 6-bit PreferredNode (which, by the way, can be set as the low 6 bits of the AllocationAttributes argument to the MmCreateSection function). This also laiid the ground for a second disruption: version 6.0 had placed these new bits at the end, requiring some shuffling of older flags, but then version 6.2 apparently wanted that spare bits be at the end.

Mask Definition Versions Remarks
0x00000001
UINT BeingDeleted : 1;
all  
0x00000002
UINT BeingCreated : 1;
all  
0x00000004
UINT BeingPurged : 1;
3.51 and higher earlier use not yet confirmed
0x00000008
UINT NoModifiedWriting : 1;
all  
0x00000010
UINT FailAllIo : 1;
all  
0x00000020
UINT Image : 1;
all  
0x00000040
UINT Based : 1;
all  
0x00000080
UINT File : 1;
all  
0x00000100
UINT Networked : 1;
3.10 to 6.1  
UINT AttemptingDelete : 1;
6.2 and higher  
0x00000200
UINT NoCache : 1;
3.51 to 5.2 earlier use not yet confirmed
UINT Rom : 1;
6.0 to 6.1 previously 0x20000000
UINT PrefetchCreated : 1;
6.2 and higher  
0x00000400
UINT PhysicalMemory : 1;
all  
0x00000800
UINT CopyOnWrite : 1;
3.10 to 1511  
UINT ImageControlAreaRemovableMedia : 1;
1607 and higher  
0x00001000
UINT Reserve : 1;
all  
0x00002000
UINT Commit : 1;
all  
0x00004000
UINT FloppyMedia : 1;
3.10 to 5.2  
UINT Accessed : 1;
6.0 to 6.1 previously 0x08000000
UINT NoChange : 1;
6.2 and higher previously 0x00800000
0x00008000
UINT WasPurged : 1;
all  
0x00010000
UINT UserReference : 1;
all  
0x00020000
UINT GlobalMemory : 1;
all  
0x00040000
UINT DeleteOnClose : 1;
3.51 and higher earlier use not yet confirmed
0x00080000
UINT FilePointerNull : 1;
3.51 and higher earlier use not yet confirmed
0x03F00000
UINT PreferredNode : 6;
6.2 and higher previously 0xFC000000
0x00100000 (3.51 to 5.2)
UINT DebugSymbolsLoaded : 1;
3.51 to 5.2 earlier use not yet confirmed
0x00100000 (6.0 to 6.1);
0x04000000
UINT GlobalOnlyPerSession : 1;
6.0 and higher previously 0x10000000
0x00200000 (3.51 to 6.1)
UINT SetMappedFileIoComplete : 1;
3.51 to 6.1 earlier use not yet confirmed
0x00400000 (3.51)
UINT BeingFlushed : 1;
3.51 earlier use not yet confirmed
0x00800000 (3.10 to 3.51);
0x00400000 (4.0 to 6.1)
UINT CollidedFlush : 1;
3.10 to 6.1  
0x01000000 (3.51);
0x00800000 (4.0 to 6.1)
UINT NoChange : 1;
3.51 to 6.1 next as 0x00004000
0x02000000 (3.51);
0x01000000 (4.0 to 5.2)
UINT HadUserReference : 1;
3.51 to early 5.2 earlier use not yet confirmed
UINT filler0 : 1;
late 5.2  
0x02000000 (4.0 to 5.2);
0x01000000 (6.0 to 6.1)
UINT ImageMappedInSystemSpace : 1;
4.0 to 5.2  
UINT Spare : 1;
6.0 to 6.1  
0x04000000 (5.0 to 5.2);
0x02000000 (6.0 to 6.1);
0x08000000
UINT filler0 : 1;
5.0 only  
UINT UserWritable;
5.1 and higher  
0x08000000 (5.0 to 5.2)
UINT Accessed : 1;
5.0 to 5.2 next as 0x00004000
0x10000000 (5.0 to 5.2)
UINT GlobalOnlyPerSession : 1;
5.0 to 5.2 next as 0x00100000
0x20000000 (5.1 to 5.2)
UINT Rom : 1;
5.1 to 5.2 next as 0x00000200
0x40000000 (late 5.2)
UINT WriteCombined : 1;
late 5.2 only  
 
UINT filler : 6;
3.51 to 4.0 earlier definition not yet confirmed
UINT filler : 3;
5.0 only  
UINT filler : 2;
5.1 to early 5.2  
UINT filler : 1;
late 5.2  
0xFC000000 (6.0 to 6.1)
UINT PreferredNode : 6;
6.0 to 6.1 next as 0x03F00000
0x10000000
UINT SystemVaAllocated : 1;
10.0 and higher  
0x20000000
UINT PreferredFsCompressionBoundary : 1;
10.0 and higher  
0x40000000
UINT UsingFileExtents : 1;
10.0 and higher  
0x80000000
UINT PageSize64 : 1;
1607 and higher  
 
UINT Spare : 4;
6.2 to 6.3  
UINT Spare : 1;
10.0 to 1511