libintrovirt v0.57.4
IntroVirt introspection library
Loading...
Searching...
No Matches
PROCESS_ACCESS_MASK.hh
Go to the documentation of this file.
1/*
2 * Copyright 2021 Assured Information Security, Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16#pragma once
17
18#include "ACCESS_MASK.hh"
19
20namespace introvirt {
21namespace windows {
22namespace nt {
23
66
72class PROCESS_ACCESS_MASK final : public ACCESS_MASK {
73 public:
81 bool has(ProcessAccessMaskFlag flag) const { return (value() & flag) == flag; }
82
88 void set(ProcessAccessMaskFlag flag) { value(value() | flag); }
89
95 void clear(ProcessAccessMaskFlag flag) { value(value() & ~flag); }
96
97 AccessMaskType type() const override { return ProcessAccessMask; }
98
99 // Constructors and assignment operators
101 PROCESS_ACCESS_MASK(uint32_t mask) : ACCESS_MASK(mask) {}
102
105};
106
108std::ostream& operator<<(std::ostream&, ProcessAccessMaskFlag);
109
111std::ostream& operator<<(std::ostream&, PROCESS_ACCESS_MASK);
112
113} /* namespace nt */
114} /* namespace windows */
115} /* namespace introvirt */
Generic ACCESS_MASK type.
Definition ACCESS_MASK.hh:109
uint32_t value() const
Get the raw value.
Definition ACCESS_MASK.hh:155
AccessMaskType
Definition ACCESS_MASK.hh:111
@ ProcessAccessMask
Definition ACCESS_MASK.hh:117
ACCESS_MASK class for process permissions.
Definition PROCESS_ACCESS_MASK.hh:72
bool has(ProcessAccessMaskFlag flag) const
Check if the given flag is enabled.
Definition PROCESS_ACCESS_MASK.hh:81
void set(ProcessAccessMaskFlag flag)
Set the state of the given flag to enabled.
Definition PROCESS_ACCESS_MASK.hh:88
PROCESS_ACCESS_MASK & operator=(const PROCESS_ACCESS_MASK &)=default
void clear(ProcessAccessMaskFlag flag)
Clear the given flag.
Definition PROCESS_ACCESS_MASK.hh:95
PROCESS_ACCESS_MASK(const PROCESS_ACCESS_MASK &)=default
PROCESS_ACCESS_MASK(uint32_t mask)
Definition PROCESS_ACCESS_MASK.hh:101
AccessMaskType type() const override
Get the type of access mask.
Definition PROCESS_ACCESS_MASK.hh:97
std::ostream & operator<<(std::ostream &, APPHELPCACHESERVICECLASS val)
ProcessAccessMaskFlag
Valid flags for PROCESS_ACCESS_MASK.
Definition PROCESS_ACCESS_MASK.hh:33
@ PROCESS_VM_OPERATION
Required to perform an operation on the address space of a process.
Definition PROCESS_ACCESS_MASK.hh:39
@ PROCESS_VM_READ
Required to read memory in a process using ReadProcessMemory.
Definition PROCESS_ACCESS_MASK.hh:41
@ PROCESS_ALL_ACCESS
All possible access rights for a process object.
Definition PROCESS_ACCESS_MASK.hh:64
@ PROCESS_VM_WRITE
Required to write to memory in a process using WriteProcessMemory.
Definition PROCESS_ACCESS_MASK.hh:43
@ PROCESS_DUP_HANDLE
Required to duplicate a handle using DuplicateHandle.
Definition PROCESS_ACCESS_MASK.hh:45
@ PROCESS_CREATE_THREAD
Required to create a thread.
Definition PROCESS_ACCESS_MASK.hh:37
@ PROCESS_SET_QUOTA
Required to set memory limits using SetProcessWorkingSetSize.
Definition PROCESS_ACCESS_MASK.hh:49
@ PROCESS_SET_INFORMATION
Required to set certain information about a process, such as its priority class.
Definition PROCESS_ACCESS_MASK.hh:51
@ PROCESS_CREATE_PROCESS
Required to create a process.
Definition PROCESS_ACCESS_MASK.hh:47
@ PROCESS_QUERY_INFORMATION
Definition PROCESS_ACCESS_MASK.hh:54
@ PROCESS_TERMINATE
Required to terminate a process using TerminateProcess.
Definition PROCESS_ACCESS_MASK.hh:35
@ PROCESS_SUSPEND_RESUME
Required to suspend or resume a process.
Definition PROCESS_ACCESS_MASK.hh:56
@ PROCESS_QUERY_LIMITED_INFORMATION
Definition PROCESS_ACCESS_MASK.hh:61
const std::string & to_string(APPHELPCACHESERVICECLASS val)
Core IntroVirt classes.
Definition Cr0.hh:20