Geoff Chappell - Software Analyst
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 |