mirror of
https://github.com/momo5502/emulator.git
synced 2026-01-21 20:53:56 +00:00
Fix afd device serialization
This commit is contained in:
@@ -22,6 +22,16 @@ namespace utils
|
||||
{ a.deserialize(deserializer) } -> std::same_as<void>;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
struct is_optional : std::false_type
|
||||
{
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
struct is_optional<std::optional<T>> : std::true_type
|
||||
{
|
||||
};
|
||||
|
||||
namespace detail
|
||||
{
|
||||
template <typename, typename = void>
|
||||
@@ -371,6 +381,7 @@ namespace utils
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
requires(!is_optional<T>::value)
|
||||
void write(const T& object)
|
||||
{
|
||||
constexpr auto is_trivially_copyable = std::is_trivially_copyable_v<T>;
|
||||
|
||||
@@ -290,20 +290,20 @@ namespace
|
||||
|
||||
void deserialize(utils::buffer_deserializer& buffer) override
|
||||
{
|
||||
buffer.read(this->creation_data);
|
||||
buffer.read_optional(this->creation_data);
|
||||
this->setup();
|
||||
|
||||
buffer.read(this->require_poll_);
|
||||
buffer.read(this->delayed_ioctl_);
|
||||
buffer.read(this->timeout_);
|
||||
buffer.read_optional(this->require_poll_);
|
||||
buffer.read_optional(this->delayed_ioctl_);
|
||||
buffer.read_optional(this->timeout_);
|
||||
}
|
||||
|
||||
void serialize(utils::buffer_serializer& buffer) const override
|
||||
{
|
||||
buffer.write(this->creation_data);
|
||||
buffer.write(this->require_poll_);
|
||||
buffer.write(this->delayed_ioctl_);
|
||||
buffer.write(this->timeout_);
|
||||
buffer.write_optional(this->creation_data);
|
||||
buffer.write_optional(this->require_poll_);
|
||||
buffer.write_optional(this->delayed_ioctl_);
|
||||
buffer.write_optional(this->timeout_);
|
||||
}
|
||||
|
||||
NTSTATUS io_control(windows_emulator& win_emu, const io_device_context& c) override
|
||||
|
||||
Reference in New Issue
Block a user