{\rtf1\ansi\ansicpg1252\deff0{\fonttbl{\f0\fnil\fcharset0 Courier New;}} {\*\generator Msftedit 5.41.21.2508;}\viewkind4\uc1\pard\lang3081\b\f0\fs20 IPC Capabilities\par \par \par \b0\par \b The problem is how to do messaging and capability Invoke ?\par \par \b0 1) Capabilities will be sealed objects with internal constructors ( or private and a static internal generate method) \par \par \par \par Capabilities are not invoked they are merely used . Note it is possible for Capabilities to have methods but this will cause threading issues. Hence CDC ( Cross Domain Communication) is independent of Capabilities though Capability references are used as Paramaters. \par \par \b Where are they stored ?\par \b0\par Capabilities are stored in shared memory created by the capability service or kernel ( ie With the kernel ( or capability service) as the owner) . Hence user programs can reference them and can Invoke the object which will call the server. User programs ( or services) may not have a reference to any object or call the kernel . [Alternative is a special keyring which holds the capabilities which can hence call the kernel]\par \par \b Capability \par \par \b0 public abstract Class Capability\par \{\par \par \par protected Capability() //warning should be internal for all derived classes\par \{\par \par \}\par \par \}\b\par \par \par Secured System types and their Capabilities.\b0\par \par \b\i Core Capabilities\b0\i0\par \par Null Capability \par \par SystemControl\par \tab SystemControlCapability Start, stop system, enter sleep states.\par \par *Allocator\par \tab AllocatorSpaceCapability\par \par MemoryManager\par \tab MemoryPageCapability\par \par EndPoint \par \tab EndPointCapability \par \par Thread\par \tab ThreadCapability\par ScheduleCOntrol\par \tab ScheduleControlCapability ; Interface with scheduling primatives.\par \par Processor \par \tab ProcessorScheduleQueue\par \par Capability\par \tab CapabilityRightsCapability \par \tab PersistLoadCapability\par \par \par AppDomain\par \tab AppDOmain Capability\par \par Syslog\par \tab Syslog Capability\par IOPort\par \tab IO Port Capability\par DMA\par \tab DMA Capability\par IRQWait\par \tab IRQ Wait Capability\par \par \par \b\i User Capabilities\b0\i0\par \par Directory\par \tab DirectoryCapability\par \tab ViewDIrectoryCapability\par \tab ViewAndCreateCapability\par File \par \tab ReadFileCapability\par \tab WriteFileCapability\par \tab ReadWriteFileCapability\par \tab ReadExecuteFileCapability\par \tab FileCapability\par \par URI\par \tab URICapability Everything is a URI , file systems etc \par \par \par }