<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:WinMemoryPageRegionObj="http://cybox.mitre.org/objects#WinMemoryPageRegionObject-2" xmlns:MemoryObj="http://cybox.mitre.org/objects#MemoryObject-2" xmlns:cyboxCommon="http://cybox.mitre.org/common-2" targetNamespace="http://cybox.mitre.org/objects#WinMemoryPageRegionObject-2" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.1">
	<xs:annotation>
		<xs:documentation>This schema was originally developed by The MITRE Corporation. The CybOX XML Schema implementation is maintained by The MITRE Corporation and developed by the open CybOX Community. For more information, including how to get involved in the effort and how to submit change requests, please visit the CybOX website at http://cybox.mitre.org.</xs:documentation>
		<xs:appinfo>
			<schema>Win_Memory_Page_Region_Object</schema>
			<version>2.1</version>
			<date>01/22/2014</date>			
			<short_description>The following specifies the fields and types that compose this defined CybOX Object type. Each defined object is an extension of the abstract ObjectPropertiesType, defined in CybOX Common. For more information on this extension mechanism, please see the CybOX Specification. This document is intended for developers and assumes some familiarity with XML. </short_description>
			<terms_of_use>Copyright (c) 2012-2014, The MITRE Corporation. All rights reserved. The contents of this file are subject to the terms of the CybOX License located at http://cybox.mitre.org/about/termsofuse.html. See the CybOX License for the specific language governing permissions and limitations for use of this schema. When distributing copies of the CybOX Schema, this license header must be included.</terms_of_use>
		</xs:appinfo>
	</xs:annotation>
	<xs:import namespace="http://cybox.mitre.org/common-2" schemaLocation="http://cybox.mitre.org/XMLSchema/common/2.1/cybox_common.xsd"/>
	<xs:import namespace="http://cybox.mitre.org/objects#MemoryObject-2" schemaLocation="http://cybox.mitre.org/XMLSchema/objects/Memory/2.1/Memory_Object.xsd"/>
	<xs:element name="Windows_Memory_Page_Region" type="WinMemoryPageRegionObj:WindowsMemoryPageRegionObjectType">
		<xs:annotation>
			<xs:documentation>The Windows_Memory_Page_Region object is intended represent a single Windows memory page region.</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:complexType name="WindowsMemoryPageRegionObjectType" mixed="false">
		<xs:annotation>
			<xs:documentation>The WindowsMemoryPageRegionObjectType type is intended to characterize Windows memory page regions.</xs:documentation>
		</xs:annotation>
		<xs:complexContent>
			<xs:extension base="MemoryObj:MemoryObjectType">
				<xs:sequence>
					<xs:element minOccurs="0" name="Type" type="WinMemoryPageRegionObj:MemoryPageTypeType">
						<xs:annotation>
							<xs:documentation>The Type field specifies the type of pages in the memory page region.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element minOccurs="0" name="Allocation_Base_Address" type="cyboxCommon:HexBinaryObjectPropertyType">
						<xs:annotation>
							<xs:documentation>The Allocation_Base_Address field specifies the base address of the memory page region when the region was first allocated.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element minOccurs="0" name="Allocation_Protect" type="WinMemoryPageRegionObj:MemoryPageProtectionType">
						<xs:annotation>
							<xs:documentation>The Allocation_Protect field specifies the memory protection option for the memory page region when the region was initially allocated.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element minOccurs="0" name="State" type="WinMemoryPageRegionObj:MemoryPageStateType">
						<xs:annotation>
							<xs:documentation>The State field specifies the state of the memory pages in the region.</xs:documentation>
						</xs:annotation>
					</xs:element>
					<xs:element minOccurs="0" name="Protect" type="WinMemoryPageRegionObj:MemoryPageProtectionType">
						<xs:annotation>
							<xs:documentation>The Protect field specifies the access protection of the memory pages in the region.</xs:documentation>
						</xs:annotation>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="MemoryPageProtectionType">
		<xs:annotation>
			<xs:documentation>MemoryPageProtectionType specifies memory protection constant types, via a union of the MemoryPageProtectionEnum type and the atomic xs:string type. Its base type is the CybOX Core BaseObjectPropertyType, for permitting complex (i.e. regular-expression based) specifications.</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:restriction base="cyboxCommon:BaseObjectPropertyType">
				<xs:simpleType>
					<xs:union memberTypes="WinMemoryPageRegionObj:MemoryPageProtectionEnum xs:string"/>
				</xs:simpleType>
				<xs:attribute fixed="string" name="datatype" type="cyboxCommon:DatatypeEnum">
					<xs:annotation>
						<xs:documentation>This attribute is optional and specifies the expected type for the value of the specified property.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="MemoryPageProtectionEnum">
		<xs:annotation>
			<xs:documentation>The MemoryPageProtectionEnum defines an enumeration of memory page protection constants. As a further reference, please see: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366786(v=vs.85).aspx.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="PAGE_EXECUTE">
				<xs:annotation>
					<xs:documentation>From Microsoft: "Enables execute access to the committed region of pages. An attempt to read from or write to the committed region results in an access violation.".</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="PAGE_EXECUTE_READ">
				<xs:annotation>
					<xs:documentation>From Microsoft: "Enables execute or read-only access to the committed region of pages. An attempt to write to the committed region results in an access violation.".</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="PAGE_EXECUTE_READWRITE">
				<xs:annotation>
					<xs:documentation>From Microsoft: "Enables execute, read-only, or read/write access to the committed region of pages.".</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="PAGE_EXECUTE_WRITECOPY">
				<xs:annotation>
					<xs:documentation>From Microsoft: "Enables execute, read-only, or copy-on-write access to a mapped view of a file mapping object. An attempt to write to a committed copy-on-write page results in a private copy of the page being made for the process. The private page is marked as PAGE_EXECUTE_READWRITE, and the change is written to the new page.".</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="PAGE_NOACCESS">
				<xs:annotation>
					<xs:documentation>From Microsoft: "Disables all access to the committed region of pages. An attempt to read from, write to, or execute the committed region results in an access violation.".</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="PAGE_READONLY">
				<xs:annotation>
					<xs:documentation>From Microsoft: "Enables read-only access to the committed region of pages. An attempt to write to the committed region results in an access violation. If Data Execution Prevention is enabled, an attempt to execute code in the committed region results in an access violation.".</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="PAGE_READWRITE">
				<xs:annotation>
					<xs:documentation>From Microsoft: "Enables read-only or read/write access to the committed region of pages. If Data Execution Prevention is enabled, attempting to execute code in the committed region results in an access violation.".</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="PAGE_WRITECOPY">
				<xs:annotation>
					<xs:documentation>From Microsoft: "Enables read-only or copy-on-write access to a mapped view of a file mapping object. An attempt to write to a committed copy-on-write page results in a private copy of the page being made for the process. The private page is marked as PAGE_READWRITE, and the change is written to the new page. If Data Execution Prevention is enabled, attempting to execute code in the committed region results in an access violation.".</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="MemoryPageStateType">
		<xs:annotation>
			<xs:documentation>MemoryPageStateType specifies memory protection states, via a union of the MemoryPageStateEnum type and the atomic xs:string type. Its base type is the CybOX Core BaseObjectPropertyType, for permitting complex (i.e. regular-expression based) specifications.</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:restriction base="cyboxCommon:BaseObjectPropertyType">
				<xs:simpleType>
					<xs:union memberTypes="WinMemoryPageRegionObj:MemoryPageStateEnum xs:string"/>
				</xs:simpleType>
				<xs:attribute fixed="string" name="datatype" type="cyboxCommon:DatatypeEnum">
					<xs:annotation>
						<xs:documentation>This attribute is optional and specifies the expected type for the value of the specified property.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="MemoryPageStateEnum">
		<xs:annotation>
			<xs:documentation>The MemoryPageStateEnum defines an enumeration of memory page states. As a further reference, please see: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366775(v=vs.85).aspx.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="MEM_COMMIT">
				<xs:annotation>
					<xs:documentation>From Microsoft: "Indicates committed pages for which physical storage has been allocated, either in memory or in the paging file on disk.".</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="MEM_FREE">
				<xs:annotation>
					<xs:documentation>From Microsoft: "Indicates free pages not accessible to the calling process and available to be allocated. For free pages, the information in the AllocationBase, AllocationProtect, Protect, and Type members is undefined.".</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="MEM_RESERVE">
				<xs:annotation>
					<xs:documentation>From Microsoft: "Indicates reserved pages where a range of the process's virtual address space is reserved without any physical storage being allocated. For reserved pages, the information in the Protect member is undefined.".</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="MemoryPageTypeType">
		<xs:annotation>
			<xs:documentation>MemoryPageTypeType specifies memory protection type, via a union of the MemoryPageTypeEnum type and the atomic xs:string type. Its base type is the CybOX Core BaseObjectPropertyType, for permitting complex (i.e. regular-expression based) specifications.</xs:documentation>
		</xs:annotation>
		<xs:simpleContent>
			<xs:restriction base="cyboxCommon:BaseObjectPropertyType">
				<xs:simpleType>
					<xs:union memberTypes="WinMemoryPageRegionObj:MemoryPageTypeEnum xs:string"/>
				</xs:simpleType>
				<xs:attribute fixed="string" name="datatype" type="cyboxCommon:DatatypeEnum">
					<xs:annotation>
						<xs:documentation>This attribute is optional and specifies the expected type for the value of the specified property.</xs:documentation>
					</xs:annotation>
				</xs:attribute>
			</xs:restriction>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="MemoryPageTypeEnum">
		<xs:annotation>
			<xs:documentation>The MemoryPageTypeEnum defines an enumeration of memory page types. As a further reference, please see: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366775(v=vs.85).aspx.</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:enumeration value="MEM_IMAGE">
				<xs:annotation>
					<xs:documentation>From Microsoft: "Indicates that the memory pages within the region are mapped into the view of an image section.".</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="MEM_MAPPED">
				<xs:annotation>
					<xs:documentation>From Microsoft: "Indicates that the memory pages within the region are mapped into the view of a section.".</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
			<xs:enumeration value="MEM_PRIVATE">
				<xs:annotation>
					<xs:documentation>From Microsoft: "Indicates that the memory pages within the region are private (that is, not shared by other processes).".</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>
