aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/HOS/Services/Pctl/IParentalControlServiceFactory.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.HLE/HOS/Services/Pctl/IParentalControlServiceFactory.cs')
-rw-r--r--src/Ryujinx.HLE/HOS/Services/Pctl/IParentalControlServiceFactory.cs40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/Ryujinx.HLE/HOS/Services/Pctl/IParentalControlServiceFactory.cs b/src/Ryujinx.HLE/HOS/Services/Pctl/IParentalControlServiceFactory.cs
new file mode 100644
index 00000000..990aef09
--- /dev/null
+++ b/src/Ryujinx.HLE/HOS/Services/Pctl/IParentalControlServiceFactory.cs
@@ -0,0 +1,40 @@
+using Ryujinx.HLE.HOS.Services.Pctl.ParentalControlServiceFactory;
+
+namespace Ryujinx.HLE.HOS.Services.Pctl
+{
+ [Service("pctl", 0x303)]
+ [Service("pctl:a", 0x83BE)]
+ [Service("pctl:r", 0x8040)]
+ [Service("pctl:s", 0x838E)]
+ class IParentalControlServiceFactory : IpcService
+ {
+ private int _permissionFlag;
+
+ public IParentalControlServiceFactory(ServiceCtx context, int permissionFlag)
+ {
+ _permissionFlag = permissionFlag;
+ }
+
+ [CommandCmif(0)]
+ // CreateService(u64, pid) -> object<nn::pctl::detail::ipc::IParentalControlService>
+ public ResultCode CreateService(ServiceCtx context)
+ {
+ ulong pid = context.Request.HandleDesc.PId;
+
+ MakeObject(context, new IParentalControlService(context, pid, true, _permissionFlag));
+
+ return ResultCode.Success;
+ }
+
+ [CommandCmif(1)] // 4.0.0+
+ // CreateServiceWithoutInitialize(u64, pid) -> object<nn::pctl::detail::ipc::IParentalControlService>
+ public ResultCode CreateServiceWithoutInitialize(ServiceCtx context)
+ {
+ ulong pid = context.Request.HandleDesc.PId;
+
+ MakeObject(context, new IParentalControlService(context, pid, false, _permissionFlag));
+
+ return ResultCode.Success;
+ }
+ }
+} \ No newline at end of file