126 lines
4.6 KiB
C
126 lines
4.6 KiB
C
// Public nt-lite capability handle declarations.
|
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
|
|
// 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)
|
|
#define SYS_STARTUP_CAPABILITY_NAME_MAX 63u
|
|
|
|
// 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
|
|
|
|
// 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
|
|
|
|
// 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
|
|
|
|
// System-service registry authority. Each authority object identifies one registry key.
|
|
#define SYS_SERVICE_REGISTRATION_RIGHT_REGISTER 0x00000100u
|
|
#define SYS_SERVICE_REGISTRATION_RIGHT_UNREGISTER 0x00000200u
|
|
|
|
// Security-context-specific rights are declared in <ntlite/security.h>.
|
|
|
|
// 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)
|
|
|
|
// Native capability identifiers and access masks are 32-bit values.
|
|
_Static_assert(sizeof(SYS_HANDLE) == 4u, "SYS_HANDLE ABI width changed");
|
|
_Static_assert(sizeof(SYS_RIGHTS) == 4u, "SYS_RIGHTS ABI width changed");
|