libintrovirt v0.57.4
IntroVirt introspection library
Loading...
Searching...
No Matches
HANDLE_TABLE.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
19
20#include <introvirt/core/fwd.hh>
22
23#include <cstdint>
24#include <memory>
25#include <vector>
26
27namespace introvirt {
28namespace windows {
29namespace nt {
30
35 public:
43 virtual std::unique_ptr<const HANDLE_TABLE_ENTRY> Handle(uint64_t handle) const = 0;
44 virtual std::unique_ptr<HANDLE_TABLE_ENTRY> Handle(uint64_t handle) = 0;
45
51 virtual std::shared_ptr<const DEVICE_OBJECT> DeviceObject(uint64_t handle) const = 0;
52 virtual std::shared_ptr<DEVICE_OBJECT> DeviceObject(uint64_t handle) = 0;
53
59 virtual std::shared_ptr<const OBJECT_DIRECTORY> DirectoryObject(uint64_t handle) const = 0;
60 virtual std::shared_ptr<OBJECT_DIRECTORY> DirectoryObject(uint64_t handle) = 0;
61
67 virtual std::shared_ptr<const DRIVER_OBJECT> DriverObject(uint64_t handle) const = 0;
68 virtual std::shared_ptr<DRIVER_OBJECT> DriverObject(uint64_t handle) = 0;
69
75 virtual std::shared_ptr<const KEVENT> EventObject(uint64_t handle) const = 0;
76 virtual std::shared_ptr<KEVENT> EventObject(uint64_t handle) = 0;
77
83 virtual std::shared_ptr<const FILE_OBJECT> FileObject(uint64_t handle) const = 0;
84 virtual std::shared_ptr<FILE_OBJECT> FileObject(uint64_t handle) = 0;
85
91 virtual std::shared_ptr<const CM_KEY_BODY> KeyObject(uint64_t handle) const = 0;
92 virtual std::shared_ptr<CM_KEY_BODY> KeyObject(uint64_t handle) = 0;
93
99 virtual std::shared_ptr<const PROCESS> ProcessObject(uint64_t handle) const = 0;
100 virtual std::shared_ptr<PROCESS> ProcessObject(uint64_t handle) = 0;
101
107 virtual std::shared_ptr<const SECTION> SectionObject(uint64_t handle) const = 0;
108 virtual std::shared_ptr<SECTION> SectionObject(uint64_t handle) = 0;
109
115 virtual std::shared_ptr<const OBJECT_SYMBOLIC_LINK>
116 SymbolicLinkObject(uint64_t handle) const = 0;
117 virtual std::shared_ptr<OBJECT_SYMBOLIC_LINK> SymbolicLinkObject(uint64_t handle) = 0;
118
124 virtual std::shared_ptr<const THREAD> ThreadObject(uint64_t handle) const = 0;
125 virtual std::shared_ptr<THREAD> ThreadObject(uint64_t handle) = 0;
126
132 virtual std::shared_ptr<const TOKEN> TokenObject(uint64_t handle) const = 0;
133 virtual std::shared_ptr<TOKEN> TokenObject(uint64_t handle) = 0;
134
140 virtual std::shared_ptr<const OBJECT_TYPE> TypeObject(uint64_t handle) const = 0;
141 virtual std::shared_ptr<OBJECT_TYPE> TypeObject(uint64_t handle) = 0;
142
150 virtual std::shared_ptr<const OBJECT> Object(uint64_t handle) const = 0;
151 virtual std::shared_ptr<OBJECT> Object(uint64_t handle) = 0;
152
154 virtual std::vector<std::unique_ptr<const HANDLE_TABLE_ENTRY>> open_handles() const = 0;
155
157 virtual int32_t HandleCount() const = 0;
158
162 virtual uint32_t NextHandleNeedingPool() const = 0;
163
164 virtual ~HANDLE_TABLE() = default;
165};
166
167} /* namespace nt */
168} /* namespace windows */
169} /* namespace introvirt */
Definition HANDLE_TABLE.hh:34
virtual std::shared_ptr< const OBJECT_TYPE > TypeObject(uint64_t handle) const =0
virtual std::shared_ptr< SECTION > SectionObject(uint64_t handle)=0
virtual std::shared_ptr< OBJECT_SYMBOLIC_LINK > SymbolicLinkObject(uint64_t handle)=0
virtual uint32_t NextHandleNeedingPool() const =0
virtual std::shared_ptr< OBJECT_TYPE > TypeObject(uint64_t handle)=0
virtual int32_t HandleCount() const =0
virtual std::shared_ptr< const OBJECT_SYMBOLIC_LINK > SymbolicLinkObject(uint64_t handle) const =0
virtual std::shared_ptr< const FILE_OBJECT > FileObject(uint64_t handle) const =0
virtual std::shared_ptr< const PROCESS > ProcessObject(uint64_t handle) const =0
virtual std::shared_ptr< const CM_KEY_BODY > KeyObject(uint64_t handle) const =0
virtual std::shared_ptr< TOKEN > TokenObject(uint64_t handle)=0
virtual std::shared_ptr< THREAD > ThreadObject(uint64_t handle)=0
virtual std::shared_ptr< OBJECT > Object(uint64_t handle)=0
virtual std::unique_ptr< const HANDLE_TABLE_ENTRY > Handle(uint64_t handle) const =0
virtual std::vector< std::unique_ptr< const HANDLE_TABLE_ENTRY > > open_handles() const =0
virtual std::shared_ptr< const OBJECT_DIRECTORY > DirectoryObject(uint64_t handle) const =0
virtual std::shared_ptr< PROCESS > ProcessObject(uint64_t handle)=0
virtual std::shared_ptr< const TOKEN > TokenObject(uint64_t handle) const =0
virtual std::shared_ptr< const DRIVER_OBJECT > DriverObject(uint64_t handle) const =0
virtual std::shared_ptr< CM_KEY_BODY > KeyObject(uint64_t handle)=0
virtual std::shared_ptr< DRIVER_OBJECT > DriverObject(uint64_t handle)=0
virtual std::shared_ptr< const DEVICE_OBJECT > DeviceObject(uint64_t handle) const =0
virtual std::shared_ptr< DEVICE_OBJECT > DeviceObject(uint64_t handle)=0
virtual std::shared_ptr< const THREAD > ThreadObject(uint64_t handle) const =0
virtual std::shared_ptr< const OBJECT > Object(uint64_t handle) const =0
virtual std::shared_ptr< OBJECT_DIRECTORY > DirectoryObject(uint64_t handle)=0
virtual std::shared_ptr< const KEVENT > EventObject(uint64_t handle) const =0
virtual std::shared_ptr< const SECTION > SectionObject(uint64_t handle) const =0
virtual std::shared_ptr< FILE_OBJECT > FileObject(uint64_t handle)=0
virtual std::unique_ptr< HANDLE_TABLE_ENTRY > Handle(uint64_t handle)=0
virtual std::shared_ptr< KEVENT > EventObject(uint64_t handle)=0
Core IntroVirt classes.
Definition Cr0.hh:20