// Public nt-lite capability handle declarations. #pragma once #include // Handle values are process-local monotonic identities. Zero is invalid, and // an issued value is never reused during the lifetime of its owning process. typedef uint32_t SYS_HANDLE; typedef uint32_t SYS_RIGHTS; #define SYS_HANDLE_INVALID ((SYS_HANDLE)0u) // Capability-management rights shared by every handle type. Rights may only attenuate during delegation. #define SYS_RIGHT_DUPLICATE 0x00000001u #define SYS_RIGHT_DERIVE 0x00000002u #define SYS_RIGHT_REVOKE 0x00000004u #define SYS_RIGHT_TRANSFER 0x00000008u #define SYS_RIGHT_QUERY 0x00000010u #define SYS_RIGHT_WAIT 0x00000020u #define SYS_RIGHT_COMMON_MASK 0x0000003Fu // Process-specific rights. #define SYS_PROCESS_RIGHT_TERMINATE 0x00000100u #define SYS_PROCESS_RIGHT_INSERT_HANDLE 0x00000200u #define SYS_PROCESS_RIGHT_BUILD 0x00000400u #define SYS_PROCESS_RIGHT_SECURITY_CONTEXT 0x00000800u // Thread-specific rights. #define SYS_THREAD_RIGHT_RESUME 0x00000100u #define SYS_THREAD_RIGHT_SET_INFORMATION 0x00000200u #define SYS_THREAD_RIGHT_NOTIFY 0x00000400u // Mutex-specific rights. #define SYS_MUTEX_RIGHT_RELEASE 0x00000100u // Semaphore-specific rights. #define SYS_SEMAPHORE_RIGHT_SIGNAL 0x00000100u // Event-specific rights. #define SYS_EVENT_RIGHT_SIGNAL 0x00000100u // Queue-specific rights. #define SYS_QUEUE_RIGHT_SEND 0x00000100u #define SYS_QUEUE_RIGHT_RECEIVE 0x00000200u #define SYS_QUEUE_RIGHT_PUBLISH 0x00000400u // File-specific rights. #define SYS_FILE_RIGHT_READ_DATA 0x00000100u #define SYS_FILE_RIGHT_WRITE_DATA 0x00000200u #define SYS_FILE_RIGHT_LOCK 0x00000400u #define SYS_FILE_RIGHT_MAP_READ 0x00000800u #define SYS_FILE_RIGHT_MAP_WRITE 0x00001000u // Mounted-volume rights. #define SYS_VOLUME_RIGHT_OPEN 0x00000100u #define SYS_VOLUME_RIGHT_MODIFY 0x00000200u // Volume-manager rights. The manager capability is delegated only to the userspace storage control plane. #define SYS_VOLUME_MANAGER_RIGHT_ENUMERATE 0x00000100u #define SYS_VOLUME_MANAGER_RIGHT_OPEN 0x00000200u #define SYS_VOLUME_MANAGER_RIGHT_WAIT 0x00000400u // Input-manager rights. The bootstrap manager capability is delegated to RSSRV. #define SYS_INPUT_MANAGER_RIGHT_READ 0x00000100u #define SYS_INPUT_MANAGER_RIGHT_CONFIGURE 0x00000200u // Display-manager rights. The bootstrap manager capability is delegated to RSSRV. #define SYS_DISPLAY_MANAGER_RIGHT_ENUMERATE 0x00000100u #define SYS_DISPLAY_MANAGER_RIGHT_MODESET 0x00000200u #define SYS_DISPLAY_MANAGER_RIGHT_PRESENT 0x00000400u #define SYS_DISPLAY_MANAGER_RIGHT_CURSOR 0x00000800u #define SYS_DISPLAY_MANAGER_RIGHT_CONSOLE 0x00001000u // Directory-specific rights. #define SYS_DIR_RIGHT_ENUMERATE 0x00000100u #define SYS_DIR_RIGHT_OPEN 0x00000200u #define SYS_DIR_RIGHT_MODIFY 0x00000400u // Asynchronous I/O request rights. #define SYS_ASYNC_IO_RIGHT_CANCEL 0x00000100u // Socket-specific rights. #define SYS_SOCKET_RIGHT_BIND 0x00000100u #define SYS_SOCKET_RIGHT_CONNECT 0x00000200u #define SYS_SOCKET_RIGHT_LISTEN 0x00000400u #define SYS_SOCKET_RIGHT_ACCEPT 0x00000800u #define SYS_SOCKET_RIGHT_SEND 0x00001000u #define SYS_SOCKET_RIGHT_RECEIVE 0x00002000u #define SYS_SOCKET_RIGHT_SHUTDOWN 0x00004000u #define SYS_SOCKET_RIGHT_POLL 0x00008000u #define SYS_SOCKET_RIGHT_SET_OPTION 0x00010000u // Pipe-endpoint rights. #define SYS_PIPE_RIGHT_READ 0x00000100u #define SYS_PIPE_RIGHT_WRITE 0x00000200u #define SYS_PIPE_RIGHT_POLL 0x00000400u // File-mapping rights. #define SYS_FILE_MAPPING_RIGHT_MAP 0x00000100u // Surface rights. #define SYS_SURFACE_RIGHT_MAP_READ 0x00000100u #define SYS_SURFACE_RIGHT_MAP_WRITE 0x00000200u #define SYS_SURFACE_RIGHT_COMMIT 0x00000400u // Input-queue rights. #define SYS_INPUT_QUEUE_RIGHT_READ 0x00000100u // Timer rights. #define SYS_TIMER_RIGHT_SET 0x00000100u // Audio-stream rights. #define SYS_AUDIO_STREAM_RIGHT_WRITE 0x00000100u #define SYS_AUDIO_STREAM_RIGHT_CONTROL 0x00000200u // Security-context-specific rights are declared in . // Rights normally retained by a newly created root capability. #define SYS_RIGHT_MANAGE (SYS_RIGHT_DUPLICATE | SYS_RIGHT_DERIVE | SYS_RIGHT_REVOKE | SYS_RIGHT_TRANSFER)