haiku/headers/private/storage/DiskDevice.h
Ingo Weinhold 04adb291a6 Clear the user_partition_data::user_data fields before updating the
BPartition structure with the data retrieved from the kernel. For new
partitions the field is not set in the next step and later code would
use an initialized pointer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22471 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-07 14:56:26 +00:00

63 lines
1.7 KiB
C++

//----------------------------------------------------------------------
// This software is part of the OpenBeOS distribution and is covered
// by the OpenBeOS license.
//---------------------------------------------------------------------
#ifndef _DISK_DEVICE_H
#define _DISK_DEVICE_H
#include <Partition.h>
struct user_disk_device_data;
class BDiskDevice : public BPartition {
public:
BDiskDevice();
virtual ~BDiskDevice();
bool HasMedia() const;
bool IsRemovableMedia() const;
bool IsReadOnlyMedia() const;
bool IsWriteOnceMedia() const;
status_t Eject(bool update = false);
status_t SetTo(partition_id id);
status_t Update(bool *updated = NULL);
void Unset();
status_t InitCheck() const;
virtual status_t GetPath(BPath *path) const;
bool IsModified() const;
status_t PrepareModifications();
status_t CommitModifications(bool synchronously = true,
BMessenger progressMessenger = BMessenger(),
bool receiveCompleteProgressUpdates = true);
status_t CancelModifications();
private:
friend class BDiskDeviceList;
friend class BDiskDeviceRoster;
BDiskDevice(const BDiskDevice &);
BDiskDevice &operator=(const BDiskDevice &);
static status_t _GetData(partition_id id, bool deviceOnly, bool shadow,
size_t neededSize, user_disk_device_data **data);
status_t _SetTo(partition_id id, bool deviceOnly, bool shadow,
size_t neededSize);
status_t _SetTo(user_disk_device_data *data);
status_t _Update(bool shadow, bool *updated);
status_t _Update(user_disk_device_data *data, bool *updated);
static void _ClearUserData(user_partition_data* data);
virtual bool _AcceptVisitor(BDiskDeviceVisitor *visitor, int32 level);
user_disk_device_data *fDeviceData;
};
#endif // _DISK_DEVICE_H