Serenity Operating System
at master 40 lines 970 B view raw
1/* 2 * Copyright (c) 2020-2022, Liav A. <liavalb@hotmail.co.il> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <LibPartition/MBRPartitionTable.h> 10 11namespace Partition { 12 13struct GUIDPartitionHeader; 14class GUIDPartitionTable final : public MBRPartitionTable { 15public: 16 virtual ~GUIDPartitionTable() = default; 17 18#ifdef KERNEL 19 static ErrorOr<NonnullOwnPtr<GUIDPartitionTable>> try_to_initialize(Kernel::StorageDevice&); 20 explicit GUIDPartitionTable(Kernel::StorageDevice&); 21#else 22 static ErrorOr<NonnullOwnPtr<GUIDPartitionTable>> try_to_initialize(NonnullRefPtr<Core::DeprecatedFile>); 23 explicit GUIDPartitionTable(NonnullRefPtr<Core::DeprecatedFile>); 24#endif 25 26 virtual bool is_valid() const override 27 { 28 return m_valid; 29 } 30 31private: 32 bool is_unused_entry(Array<u8, 16>) const; 33 GUIDPartitionHeader const& header() const; 34 bool initialize(); 35 36 bool m_valid { true }; 37 ByteBuffer m_cached_header; 38}; 39 40}