Initial support for the new 12.x IPC system (#2182)
* Rename CommandAttribute as CommandHIpcAttribute to prepare for 12.x changes * Implement inital support for TIPC and adds SM command ids * *Ipc to *ipc * Missed a ref in last commit... * CommandAttributeTIpc to CommandAttributeTipc * Addresses comment and fixes some bugs around TIPC doesn't have any padding requirements as buffer C isn't a thing Fix for RegisterService inverting two argument only on TIPC
This commit is contained in:
parent
faa654dbaf
commit
0746b83edf
132 changed files with 1077 additions and 951 deletions
|
@ -9,21 +9,21 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc.AccountService
|
|||
_managerServer = new ManagerServer(userId);
|
||||
}
|
||||
|
||||
[Command(0)]
|
||||
[CommandHipc(0)]
|
||||
// CheckAvailability()
|
||||
public ResultCode CheckAvailability(ServiceCtx context)
|
||||
{
|
||||
return _managerServer.CheckAvailability(context);
|
||||
}
|
||||
|
||||
[Command(1)]
|
||||
[CommandHipc(1)]
|
||||
// GetAccountId() -> nn::account::NetworkServiceAccountId
|
||||
public ResultCode GetAccountId(ServiceCtx context)
|
||||
{
|
||||
return _managerServer.GetAccountId(context);
|
||||
}
|
||||
|
||||
[Command(2)]
|
||||
[CommandHipc(2)]
|
||||
// EnsureIdTokenCacheAsync() -> object<nn::account::detail::IAsyncContext>
|
||||
public ResultCode EnsureIdTokenCacheAsync(ServiceCtx context)
|
||||
{
|
||||
|
@ -37,21 +37,21 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc.AccountService
|
|||
return resultCode;
|
||||
}
|
||||
|
||||
[Command(3)]
|
||||
[CommandHipc(3)]
|
||||
// LoadIdTokenCache() -> (u32 id_token_cache_size, buffer<bytes, 6>)
|
||||
public ResultCode LoadIdTokenCache(ServiceCtx context)
|
||||
{
|
||||
return _managerServer.LoadIdTokenCache(context);
|
||||
}
|
||||
|
||||
[Command(130)]
|
||||
[CommandHipc(130)]
|
||||
// GetNintendoAccountUserResourceCacheForApplication() -> (nn::account::NintendoAccountId, nn::account::nas::NasUserBaseForApplication, buffer<bytes, 6>)
|
||||
public ResultCode GetNintendoAccountUserResourceCacheForApplication(ServiceCtx context)
|
||||
{
|
||||
return _managerServer.GetNintendoAccountUserResourceCacheForApplication(context);
|
||||
}
|
||||
|
||||
[Command(160)] // 5.0.0+
|
||||
[CommandHipc(160)] // 5.0.0+
|
||||
// StoreOpenContext()
|
||||
public ResultCode StoreOpenContext(ServiceCtx context)
|
||||
{
|
||||
|
|
|
@ -9,21 +9,21 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc.AccountService
|
|||
_managerServer = new ManagerServer(userId);
|
||||
}
|
||||
|
||||
[Command(0)]
|
||||
[CommandHipc(0)]
|
||||
// CheckAvailability()
|
||||
public ResultCode CheckAvailability(ServiceCtx context)
|
||||
{
|
||||
return _managerServer.CheckAvailability(context);
|
||||
}
|
||||
|
||||
[Command(1)]
|
||||
[CommandHipc(1)]
|
||||
// GetAccountId() -> nn::account::NetworkServiceAccountId
|
||||
public ResultCode GetAccountId(ServiceCtx context)
|
||||
{
|
||||
return _managerServer.GetAccountId(context);
|
||||
}
|
||||
|
||||
[Command(2)]
|
||||
[CommandHipc(2)]
|
||||
// EnsureIdTokenCacheAsync() -> object<nn::account::detail::IAsyncContext>
|
||||
public ResultCode EnsureIdTokenCacheAsync(ServiceCtx context)
|
||||
{
|
||||
|
@ -37,7 +37,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc.AccountService
|
|||
return resultCode;
|
||||
}
|
||||
|
||||
[Command(3)]
|
||||
[CommandHipc(3)]
|
||||
// LoadIdTokenCache() -> (u32 id_token_cache_size, buffer<bytes, 6>)
|
||||
public ResultCode LoadIdTokenCache(ServiceCtx context)
|
||||
{
|
||||
|
|
|
@ -9,28 +9,28 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc.AccountService
|
|||
_profileServer = new ProfileServer(profile);
|
||||
}
|
||||
|
||||
[Command(0)]
|
||||
[CommandHipc(0)]
|
||||
// Get() -> (nn::account::profile::ProfileBase, buffer<nn::account::profile::UserData, 0x1a>)
|
||||
public ResultCode Get(ServiceCtx context)
|
||||
{
|
||||
return _profileServer.Get(context);
|
||||
}
|
||||
|
||||
[Command(1)]
|
||||
[CommandHipc(1)]
|
||||
// GetBase() -> nn::account::profile::ProfileBase
|
||||
public ResultCode GetBase(ServiceCtx context)
|
||||
{
|
||||
return _profileServer.GetBase(context);
|
||||
}
|
||||
|
||||
[Command(10)]
|
||||
[CommandHipc(10)]
|
||||
// GetImageSize() -> u32
|
||||
public ResultCode GetImageSize(ServiceCtx context)
|
||||
{
|
||||
return _profileServer.GetImageSize(context);
|
||||
}
|
||||
|
||||
[Command(11)]
|
||||
[CommandHipc(11)]
|
||||
// LoadImage() -> (u32, buffer<bytes, 6>)
|
||||
public ResultCode LoadImage(ServiceCtx context)
|
||||
{
|
||||
|
|
|
@ -9,42 +9,42 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc.AccountService
|
|||
_profileServer = new ProfileServer(profile);
|
||||
}
|
||||
|
||||
[Command(0)]
|
||||
[CommandHipc(0)]
|
||||
// Get() -> (nn::account::profile::ProfileBase, buffer<nn::account::profile::UserData, 0x1a>)
|
||||
public ResultCode Get(ServiceCtx context)
|
||||
{
|
||||
return _profileServer.Get(context);
|
||||
}
|
||||
|
||||
[Command(1)]
|
||||
[CommandHipc(1)]
|
||||
// GetBase() -> nn::account::profile::ProfileBase
|
||||
public ResultCode GetBase(ServiceCtx context)
|
||||
{
|
||||
return _profileServer.GetBase(context);
|
||||
}
|
||||
|
||||
[Command(10)]
|
||||
[CommandHipc(10)]
|
||||
// GetImageSize() -> u32
|
||||
public ResultCode GetImageSize(ServiceCtx context)
|
||||
{
|
||||
return _profileServer.GetImageSize(context);
|
||||
}
|
||||
|
||||
[Command(11)]
|
||||
[CommandHipc(11)]
|
||||
// LoadImage() -> (u32, buffer<bytes, 6>)
|
||||
public ResultCode LoadImage(ServiceCtx context)
|
||||
{
|
||||
return _profileServer.LoadImage(context);
|
||||
}
|
||||
|
||||
[Command(100)]
|
||||
[CommandHipc(100)]
|
||||
// Store(nn::account::profile::ProfileBase, buffer<nn::account::profile::UserData, 0x19>)
|
||||
public ResultCode Store(ServiceCtx context)
|
||||
{
|
||||
return _profileServer.Store(context);
|
||||
}
|
||||
|
||||
[Command(101)]
|
||||
[CommandHipc(101)]
|
||||
// StoreWithImage(nn::account::profile::ProfileBase, buffer<nn::account::profile::UserData, 0x19>, buffer<bytes, 5>)
|
||||
public ResultCode StoreWithImage(ServiceCtx context)
|
||||
{
|
||||
|
|
|
@ -14,42 +14,42 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
_applicationServiceServer = new ApplicationServiceServer(serviceFlag);
|
||||
}
|
||||
|
||||
[Command(0)]
|
||||
[CommandHipc(0)]
|
||||
// GetUserCount() -> i32
|
||||
public ResultCode GetUserCount(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.GetUserCountImpl(context);
|
||||
}
|
||||
|
||||
[Command(1)]
|
||||
[CommandHipc(1)]
|
||||
// GetUserExistence(nn::account::Uid) -> bool
|
||||
public ResultCode GetUserExistence(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.GetUserExistenceImpl(context);
|
||||
}
|
||||
|
||||
[Command(2)]
|
||||
[CommandHipc(2)]
|
||||
// ListAllUsers() -> array<nn::account::Uid, 0xa>
|
||||
public ResultCode ListAllUsers(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.ListAllUsers(context);
|
||||
}
|
||||
|
||||
[Command(3)]
|
||||
[CommandHipc(3)]
|
||||
// ListOpenUsers() -> array<nn::account::Uid, 0xa>
|
||||
public ResultCode ListOpenUsers(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.ListOpenUsers(context);
|
||||
}
|
||||
|
||||
[Command(4)]
|
||||
[CommandHipc(4)]
|
||||
// GetLastOpenedUser() -> nn::account::Uid
|
||||
public ResultCode GetLastOpenedUser(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.GetLastOpenedUser(context);
|
||||
}
|
||||
|
||||
[Command(5)]
|
||||
[CommandHipc(5)]
|
||||
// GetProfile(nn::account::Uid) -> object<nn::account::profile::IProfile>
|
||||
public ResultCode GetProfile(ServiceCtx context)
|
||||
{
|
||||
|
@ -63,7 +63,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return resultCode;
|
||||
}
|
||||
|
||||
[Command(50)]
|
||||
[CommandHipc(50)]
|
||||
// IsUserRegistrationRequestPermitted(pid) -> bool
|
||||
public ResultCode IsUserRegistrationRequestPermitted(ServiceCtx context)
|
||||
{
|
||||
|
@ -72,14 +72,14 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return _applicationServiceServer.IsUserRegistrationRequestPermitted(context);
|
||||
}
|
||||
|
||||
[Command(51)]
|
||||
[CommandHipc(51)]
|
||||
// TrySelectUserWithoutInteraction(bool) -> nn::account::Uid
|
||||
public ResultCode TrySelectUserWithoutInteraction(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.TrySelectUserWithoutInteraction(context);
|
||||
}
|
||||
|
||||
[Command(102)]
|
||||
[CommandHipc(102)]
|
||||
// GetBaasAccountManagerForSystemService(nn::account::Uid) -> object<nn::account::baas::IManagerForApplication>
|
||||
public ResultCode GetBaasAccountManagerForSystemService(ServiceCtx context)
|
||||
{
|
||||
|
@ -98,14 +98,14 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return ResultCode.Success;
|
||||
}
|
||||
|
||||
[Command(140)] // 6.0.0+
|
||||
[CommandHipc(140)] // 6.0.0+
|
||||
// ListQualifiedUsers() -> array<nn::account::Uid, 0xa>
|
||||
public ResultCode ListQualifiedUsers(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.ListQualifiedUsers(context);
|
||||
}
|
||||
|
||||
[Command(205)]
|
||||
[CommandHipc(205)]
|
||||
// GetProfileEditor(nn::account::Uid) -> object<nn::account::profile::IProfileEditor>
|
||||
public ResultCode GetProfileEditor(ServiceCtx context)
|
||||
{
|
||||
|
|
|
@ -15,42 +15,42 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
_applicationServiceServer = new ApplicationServiceServer(serviceFlag);
|
||||
}
|
||||
|
||||
[Command(0)]
|
||||
[CommandHipc(0)]
|
||||
// GetUserCount() -> i32
|
||||
public ResultCode GetUserCount(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.GetUserCountImpl(context);
|
||||
}
|
||||
|
||||
[Command(1)]
|
||||
[CommandHipc(1)]
|
||||
// GetUserExistence(nn::account::Uid) -> bool
|
||||
public ResultCode GetUserExistence(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.GetUserExistenceImpl(context);
|
||||
}
|
||||
|
||||
[Command(2)]
|
||||
[CommandHipc(2)]
|
||||
// ListAllUsers() -> array<nn::account::Uid, 0xa>
|
||||
public ResultCode ListAllUsers(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.ListAllUsers(context);
|
||||
}
|
||||
|
||||
[Command(3)]
|
||||
[CommandHipc(3)]
|
||||
// ListOpenUsers() -> array<nn::account::Uid, 0xa>
|
||||
public ResultCode ListOpenUsers(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.ListOpenUsers(context);
|
||||
}
|
||||
|
||||
[Command(4)]
|
||||
[CommandHipc(4)]
|
||||
// GetLastOpenedUser() -> nn::account::Uid
|
||||
public ResultCode GetLastOpenedUser(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.GetLastOpenedUser(context);
|
||||
}
|
||||
|
||||
[Command(5)]
|
||||
[CommandHipc(5)]
|
||||
// GetProfile(nn::account::Uid) -> object<nn::account::profile::IProfile>
|
||||
public ResultCode GetProfile(ServiceCtx context)
|
||||
{
|
||||
|
@ -64,7 +64,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return resultCode;
|
||||
}
|
||||
|
||||
[Command(50)]
|
||||
[CommandHipc(50)]
|
||||
// IsUserRegistrationRequestPermitted(pid) -> bool
|
||||
public ResultCode IsUserRegistrationRequestPermitted(ServiceCtx context)
|
||||
{
|
||||
|
@ -72,15 +72,15 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return _applicationServiceServer.IsUserRegistrationRequestPermitted(context);
|
||||
}
|
||||
|
||||
[Command(51)]
|
||||
[CommandHipc(51)]
|
||||
// TrySelectUserWithoutInteraction(bool) -> nn::account::Uid
|
||||
public ResultCode TrySelectUserWithoutInteraction(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.TrySelectUserWithoutInteraction(context);
|
||||
}
|
||||
|
||||
[Command(100)]
|
||||
[Command(140)] // 6.0.0+
|
||||
[CommandHipc(100)]
|
||||
[CommandHipc(140)] // 6.0.0+
|
||||
// InitializeApplicationInfo(u64 pid_placeholder, pid)
|
||||
public ResultCode InitializeApplicationInfo(ServiceCtx context)
|
||||
{
|
||||
|
@ -105,7 +105,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return ResultCode.Success;
|
||||
}
|
||||
|
||||
[Command(101)]
|
||||
[CommandHipc(101)]
|
||||
// GetBaasAccountManagerForApplication(nn::account::Uid) -> object<nn::account::baas::IManagerForApplication>
|
||||
public ResultCode GetBaasAccountManagerForApplication(ServiceCtx context)
|
||||
{
|
||||
|
@ -124,21 +124,21 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return ResultCode.Success;
|
||||
}
|
||||
|
||||
[Command(110)]
|
||||
[CommandHipc(110)]
|
||||
// StoreSaveDataThumbnail(nn::account::Uid, buffer<bytes, 5>)
|
||||
public ResultCode StoreSaveDataThumbnail(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.StoreSaveDataThumbnail(context);
|
||||
}
|
||||
|
||||
[Command(111)]
|
||||
[CommandHipc(111)]
|
||||
// ClearSaveDataThumbnail(nn::account::Uid)
|
||||
public ResultCode ClearSaveDataThumbnail(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.ClearSaveDataThumbnail(context);
|
||||
}
|
||||
|
||||
[Command(131)] // 6.0.0+
|
||||
[CommandHipc(131)] // 6.0.0+
|
||||
// ListOpenContextStoredUsers() -> array<nn::account::Uid, 0xa>
|
||||
public ResultCode ListOpenContextStoredUsers(ServiceCtx context)
|
||||
{
|
||||
|
@ -154,14 +154,14 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return ResultCode.Success;
|
||||
}
|
||||
|
||||
[Command(141)] // 6.0.0+
|
||||
[CommandHipc(141)] // 6.0.0+
|
||||
// ListQualifiedUsers() -> array<nn::account::Uid, 0xa>
|
||||
public ResultCode ListQualifiedUsers(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.ListQualifiedUsers(context);
|
||||
}
|
||||
|
||||
[Command(150)] // 6.0.0+
|
||||
[CommandHipc(150)] // 6.0.0+
|
||||
// IsUserAccountSwitchLocked() -> bool
|
||||
public ResultCode IsUserAccountSwitchLocked(ServiceCtx context)
|
||||
{
|
||||
|
|
|
@ -13,42 +13,42 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
_applicationServiceServer = new ApplicationServiceServer(serviceFlag);
|
||||
}
|
||||
|
||||
[Command(0)]
|
||||
[CommandHipc(0)]
|
||||
// GetUserCount() -> i32
|
||||
public ResultCode GetUserCount(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.GetUserCountImpl(context);
|
||||
}
|
||||
|
||||
[Command(1)]
|
||||
[CommandHipc(1)]
|
||||
// GetUserExistence(nn::account::Uid) -> bool
|
||||
public ResultCode GetUserExistence(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.GetUserExistenceImpl(context);
|
||||
}
|
||||
|
||||
[Command(2)]
|
||||
[CommandHipc(2)]
|
||||
// ListAllUsers() -> array<nn::account::Uid, 0xa>
|
||||
public ResultCode ListAllUsers(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.ListAllUsers(context);
|
||||
}
|
||||
|
||||
[Command(3)]
|
||||
[CommandHipc(3)]
|
||||
// ListOpenUsers() -> array<nn::account::Uid, 0xa>
|
||||
public ResultCode ListOpenUsers(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.ListOpenUsers(context);
|
||||
}
|
||||
|
||||
[Command(4)]
|
||||
[CommandHipc(4)]
|
||||
// GetLastOpenedUser() -> nn::account::Uid
|
||||
public ResultCode GetLastOpenedUser(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.GetLastOpenedUser(context);
|
||||
}
|
||||
|
||||
[Command(5)]
|
||||
[CommandHipc(5)]
|
||||
// GetProfile(nn::account::Uid) -> object<nn::account::profile::IProfile>
|
||||
public ResultCode GetProfile(ServiceCtx context)
|
||||
{
|
||||
|
@ -62,7 +62,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return resultCode;
|
||||
}
|
||||
|
||||
[Command(50)]
|
||||
[CommandHipc(50)]
|
||||
// IsUserRegistrationRequestPermitted(pid) -> bool
|
||||
public ResultCode IsUserRegistrationRequestPermitted(ServiceCtx context)
|
||||
{
|
||||
|
@ -71,14 +71,14 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return _applicationServiceServer.IsUserRegistrationRequestPermitted(context);
|
||||
}
|
||||
|
||||
[Command(51)]
|
||||
[CommandHipc(51)]
|
||||
// TrySelectUserWithoutInteraction(bool) -> nn::account::Uid
|
||||
public ResultCode TrySelectUserWithoutInteraction(ServiceCtx context)
|
||||
{
|
||||
return _applicationServiceServer.TrySelectUserWithoutInteraction(context);
|
||||
}
|
||||
|
||||
[Command(102)]
|
||||
[CommandHipc(102)]
|
||||
// GetBaasAccountManagerForSystemService(nn::account::Uid) -> object<nn::account::baas::IManagerForApplication>
|
||||
public ResultCode GetBaasAccountManagerForSystemService(ServiceCtx context)
|
||||
{
|
||||
|
@ -97,7 +97,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return ResultCode.Success;
|
||||
}
|
||||
|
||||
[Command(140)] // 6.0.0+
|
||||
[CommandHipc(140)] // 6.0.0+
|
||||
// ListQualifiedUsers() -> array<nn::account::Uid, 0xa>
|
||||
public ResultCode ListQualifiedUsers(ServiceCtx context)
|
||||
{
|
||||
|
|
|
@ -14,7 +14,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
_asyncExecution = asyncExecution;
|
||||
}
|
||||
|
||||
[Command(0)]
|
||||
[CommandHipc(0)]
|
||||
// GetSystemEvent() -> handle<copy>
|
||||
public ResultCode GetSystemEvent(ServiceCtx context)
|
||||
{
|
||||
|
@ -28,7 +28,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return ResultCode.Success;
|
||||
}
|
||||
|
||||
[Command(1)]
|
||||
[CommandHipc(1)]
|
||||
// Cancel()
|
||||
public ResultCode Cancel(ServiceCtx context)
|
||||
{
|
||||
|
@ -45,7 +45,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return ResultCode.Success;
|
||||
}
|
||||
|
||||
[Command(2)]
|
||||
[CommandHipc(2)]
|
||||
// HasDone() -> b8
|
||||
public ResultCode HasDone(ServiceCtx context)
|
||||
{
|
||||
|
@ -59,7 +59,7 @@ namespace Ryujinx.HLE.HOS.Services.Account.Acc
|
|||
return ResultCode.Success;
|
||||
}
|
||||
|
||||
[Command(3)]
|
||||
[CommandHipc(3)]
|
||||
// GetResult()
|
||||
public ResultCode GetResult(ServiceCtx context)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue