|
|
|
@ -704,6 +704,31 @@ void ILibraryAppletCreator::CreateStorage(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
LOG_DEBUG(Service_AM, "called, size={}", size);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ILibraryAppletCreator::CreateTransferMemoryStorage(Kernel::HLERequestContext& ctx) {
|
|
|
|
|
IPC::RequestParser rp{ctx};
|
|
|
|
|
|
|
|
|
|
rp.SetCurrentOffset(3);
|
|
|
|
|
const auto handle{rp.Pop<Kernel::Handle>()};
|
|
|
|
|
|
|
|
|
|
const auto shared_mem =
|
|
|
|
|
Core::System::GetInstance().CurrentProcess()->GetHandleTable().Get<Kernel::SharedMemory>(
|
|
|
|
|
handle);
|
|
|
|
|
|
|
|
|
|
if (shared_mem == nullptr) {
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2};
|
|
|
|
|
rb.Push(ResultCode(-1));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
std::vector<u8> memory(shared_mem->size);
|
|
|
|
|
std::memcpy(memory.data(), shared_mem->backing_block->data() + shared_mem->backing_block_offset,
|
|
|
|
|
memory.size());
|
|
|
|
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 0, 1};
|
|
|
|
|
rb.Push(RESULT_SUCCESS);
|
|
|
|
|
rb.PushIpcInterface(std::make_shared<IStorage>(std::move(memory)));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
IApplicationFunctions::IApplicationFunctions() : ServiceFramework("IApplicationFunctions") {
|
|
|
|
|
// clang-format off
|
|
|
|
|
static const FunctionInfo functions[] = {
|
|
|
|
|