@@ -51,47 +51,43 @@ using dispatch_fn = std::function<void(const device_control::code &,
51
51
} // namespace ntl
52
52
53
53
namespace ntl {
54
-
55
54
namespace detail {
56
-
57
- struct device_dispatchers {
55
+ namespace device {
56
+ struct dispatchers_t {
58
57
device_control::dispatch_fn on_device_control;
59
58
};
60
59
61
- template <typename Extension> struct device_extension_data ;
60
+ template <typename Extension> struct extension_data_t ;
62
61
63
- template <> struct device_extension_data<void> {
64
- device_dispatchers dispatchers;
65
- };
62
+ template <> struct extension_data_t<void> { dispatchers_t dispatchers; };
66
63
67
- template <typename Extension> struct device_extension_data {
68
- device_dispatchers dispatchers;
64
+ template <typename Extension> struct extension_data_t {
65
+ dispatchers_t dispatchers;
69
66
Extension data;
70
67
};
71
68
72
- template <typename T> class device_extension ;
69
+ template <typename T> class extension_t ;
73
70
74
- template <> class device_extension <void> {
71
+ template <> class extension_t <void> {
75
72
public:
76
- device_extension () : device_(nullptr) {}
77
- device_extension (PDEVICE_OBJECT device) : device_(device) {}
73
+ extension_t () : device_(nullptr) {}
74
+ extension_t (PDEVICE_OBJECT device) : device_(device) {}
78
75
79
- detail::device_extension_data<void> *get_context() {
80
- return reinterpret_cast<detail::device_extension_data<void> *>(
81
- device_->DeviceExtension);
76
+ extension_data_t<void> *get_context() {
77
+ return reinterpret_cast<extension_data_t<void> *>(device_->DeviceExtension);
82
78
}
83
79
84
80
private:
85
81
PDEVICE_OBJECT device_;
86
82
};
87
83
88
- template <typename Extension> class device_extension {
84
+ template <typename Extension> class extension_t {
89
85
public:
90
- device_extension () : device_(nullptr) {}
91
- device_extension (PDEVICE_OBJECT device) : device_(device) {}
86
+ extension_t () : device_(nullptr) {}
87
+ extension_t (PDEVICE_OBJECT device) : device_(device) {}
92
88
93
- detail::device_extension_data <Extension> *get_context() {
94
- return reinterpret_cast<detail::device_extension_data <Extension> *>(
89
+ extension_data_t <Extension> *get_context() {
90
+ return reinterpret_cast<extension_data_t <Extension> *>(
95
91
device_->DeviceExtension);
96
92
}
97
93
@@ -100,6 +96,7 @@ public:
100
96
private:
101
97
PDEVICE_OBJECT device_;
102
98
};
99
+ } // namespace device
103
100
} // namespace detail
104
101
105
102
using device_type = DEVICE_TYPE;
@@ -125,22 +122,22 @@ public:
125
122
126
123
const std::wstring &name() const { return name_; }
127
124
device_type type() const { return type_; }
128
- bool exclusive () const { return exclusive_; }
125
+ bool is_exclusive () const { return exclusive_; }
129
126
130
127
private:
131
- bool exclusive_;
132
128
std::wstring name_;
133
129
device_type type_;
130
+ bool exclusive_;
134
131
};
135
132
136
133
template <typename Extension>
137
- class device : public detail::device_extension <Extension> {
134
+ class device : public detail::device::extension_t <Extension> {
138
135
friend class device_dispatch_invoker;
139
136
friend class driver;
140
137
141
138
protected:
142
139
device(PDEVICE_OBJECT device, const device_options &opts)
143
- : detail::device_extension <Extension>(device), object_(device),
140
+ : detail::device::extension_t <Extension>(device), object_(device),
144
141
name_(opts.name()) {}
145
142
146
143
private:
@@ -149,7 +146,8 @@ private:
149
146
public:
150
147
device() : object_(nullptr) {}
151
148
152
- device(device &&other) : detail::device_extension<Extension>(other.object_) {
149
+ device(device &&other)
150
+ : detail::device::extension_t<Extension>(other.object_) {
153
151
*this = std::move(other);
154
152
}
155
153
@@ -163,16 +161,15 @@ public:
163
161
auto obj = detach();
164
162
if (obj) {
165
163
if (obj->DeviceExtension)
166
- reinterpret_cast<detail::device_extension_data<Extension> *>(
167
- obj->DeviceExtension)
168
- ->~device_extension_data();
164
+ detail::device::extension_t<Extension>::get_context()
165
+ ->~extension_data_t();
169
166
IoDeleteDevice(obj);
170
167
}
171
168
}
172
169
173
170
protected:
174
- detail::device_dispatchers &dispatchers() {
175
- return detail::device_extension <Extension>::get_context()->dispatchers;
171
+ detail::device::dispatchers_t &dispatchers() {
172
+ return detail::device::extension_t <Extension>::get_context()->dispatchers;
176
173
}
177
174
178
175
public:
0 commit comments