Most of XamContent* methods, besides enumeration.

Progress on #152.
This commit is contained in:
Ben Vanik
2015-02-12 14:16:43 -08:00
parent 53eaeff690
commit dc731f6a31
25 changed files with 849 additions and 14 deletions

View File

@@ -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

View File

@@ -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_;