Просмотр исходного кода

ncm: Implement LR OpenRegisteredLocationResolver (1)

Returns an object of type IRegisteredLocationResolver for the StorageId.
Zach Hilman 7 лет назад
Родитель
Сommit
e0920ef4ba
1 измененных файлов с 27 добавлено и 0 удалено
  1. 27 0
      src/core/hle/service/ncm/ncm.cpp

+ 27 - 0
src/core/hle/service/ncm/ncm.cpp

@@ -45,6 +45,25 @@ private:
     FileSys::StorageId storage;
     FileSys::StorageId storage;
 };
 };
 
 
+class IRegisteredLocationResolver final : public ServiceFramework<IRegisteredLocationResolver> {
+public:
+    explicit IRegisteredLocationResolver() : ServiceFramework{"IRegisteredLocationResolver"} {
+        static const FunctionInfo functions[] = {
+            {0, nullptr, "ResolveProgramPath"},
+            {1, nullptr, "RegisterProgramPath"},
+            {2, nullptr, "UnregisterProgramPath"},
+            {3, nullptr, "RedirectProgramPath"},
+            {4, nullptr, "ResolveHtmlDocumentPath"},
+            {5, nullptr, "RegisterHtmlDocumentPath"},
+            {6, nullptr, "UnregisterHtmlDocumentPath"},
+            {7, nullptr, "RedirectHtmlDocumentPath"},
+            {8, nullptr, ""},
+        };
+
+        RegisterHandlers(functions);
+    }
+};
+
 public:
 public:
     explicit LocationResolver() : ServiceFramework{"lr"} {
     explicit LocationResolver() : ServiceFramework{"lr"} {
 class LR final : public ServiceFramework<LR> {
 class LR final : public ServiceFramework<LR> {
@@ -74,6 +93,14 @@ private:
         rb.PushIpcInterface(std::make_shared<ILocationResolver>(id));
         rb.PushIpcInterface(std::make_shared<ILocationResolver>(id));
     }
     }
 
 
+    void OpenRegisteredLocationResolver(Kernel::HLERequestContext& ctx) {
+        LOG_DEBUG(Service_NCM, "called");
+
+        IPC::ResponseBuilder rb{ctx, 2, 0, 1};
+        rb.Push(RESULT_SUCCESS);
+        rb.PushIpcInterface(std::make_shared<IRegisteredLocationResolver>());
+    }
+
 };
 };
 
 
 class NCM final : public ServiceFramework<NCM> {
 class NCM final : public ServiceFramework<NCM> {