@@ -53,5 +53,19 @@ X_STATUS XFile::Read(void* buffer, size_t buffer_length, size_t byte_offset,
|
||||
return result;
|
||||
}
|
||||
|
||||
X_STATUS XFile::Write(const void* buffer, size_t buffer_length,
|
||||
size_t byte_offset, size_t* out_bytes_written) {
|
||||
if (byte_offset == -1) {
|
||||
// Write from current position.
|
||||
byte_offset = position_;
|
||||
}
|
||||
X_STATUS result =
|
||||
WriteSync(buffer, buffer_length, byte_offset, out_bytes_written);
|
||||
if (XSUCCEEDED(result)) {
|
||||
position_ += *out_bytes_written;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
} // namespace kernel
|
||||
} // namespace xe
|
||||
|
||||
@@ -146,12 +146,19 @@ class XFile : public XObject {
|
||||
X_STATUS Read(void* buffer, size_t buffer_length, size_t byte_offset,
|
||||
XAsyncRequest* request);
|
||||
|
||||
X_STATUS Write(const void* buffer, size_t buffer_length, size_t byte_offset,
|
||||
size_t* out_bytes_written);
|
||||
|
||||
virtual void* GetWaitHandle();
|
||||
|
||||
protected:
|
||||
XFile(KernelState* kernel_state, fs::Mode mode);
|
||||
virtual X_STATUS ReadSync(void* buffer, size_t buffer_length,
|
||||
size_t byte_offset, size_t* out_bytes_read) = 0;
|
||||
virtual X_STATUS WriteSync(const void* buffer, size_t buffer_length,
|
||||
size_t byte_offset, size_t* out_bytes_written) {
|
||||
return X_STATUS_ACCESS_DENIED;
|
||||
}
|
||||
|
||||
private:
|
||||
fs::Mode mode_;
|
||||
|
||||
Reference in New Issue
Block a user