Shared Database services: Difference between revisions
No edit summary |
|||
(12 intermediate revisions by 2 users not shown) | |||
Line 35: | Line 35: | ||
|- | |- | ||
| 106 || [11.0.0+] GetFunctionBlackListVersion | | 106 || [11.0.0+] GetFunctionBlackListVersion | ||
|- | |||
| 107 || [17.0.0+] RequestApplicationFunctionAuthorizationByApplicationIdAndProgramId | |||
|- | |||
| 108 || [20.0.0+] GetRequiredApplicationVersion | |||
|- | |- | ||
| 1000 || [9.0.0+] LoadNgWordDataForPlatformRegionChina | | 1000 || [9.0.0+] LoadNgWordDataForPlatformRegionChina | ||
Line 99: | Line 103: | ||
= mii:u, mii:e = | = mii:u, mii:e = | ||
This is "nn::mii::detail::IStaticService". | This is "nn::mii::detail::IStaticService". | ||
These were moved from [[NS_services|ns]] with [3.0.0+]. | |||
These are only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is not Maintenance. | These are only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is not Maintenance. | ||
Line 169: | Line 175: | ||
|- | |- | ||
| 26 || [10.2.0+] Append | | 26 || [10.2.0+] Append | ||
|- | |||
| 27 || [19.0.0-19.0.1] ImportMigrationData | |||
|} | |} | ||
Line 199: | Line 207: | ||
|- | |- | ||
| 17 || DeleteImages | | 17 || DeleteImages | ||
|- | |||
| 18 || [19.0.0+] AddImageForMigration | |||
|- | |||
| 19 || [20.0.0+] ClearHeaderForMigration | |||
|- | |||
| 20 || [20.0.0+] SaveHeaderForMigration | |||
|- | |- | ||
| 100 || DeleteFile | | 100 || DeleteFile | ||
Line 213: | Line 227: | ||
= pdm:ntfy = | = pdm:ntfy = | ||
This is "nn::pdm::detail::INotifyService". | This is "nn::pdm::detail::INotifyService". | ||
This was moved from [[NS_services|ns]] with [3.0.0+]. | |||
This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is not Maintenance. | This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is not Maintenance. | ||
Line 228: | Line 244: | ||
| 4 || [[#NotifyClearAllEvent]] | | 4 || [[#NotifyClearAllEvent]] | ||
|- | |- | ||
| 5 || [[#NotifyEventForDebug]] | | 5 || [2.0.0+] [[#NotifyEventForDebug]] | ||
|- | |- | ||
| 6 || [4.0.0+] SuspendUserAccountEventService | | 6 || [4.0.0+] SuspendUserAccountEventService | ||
Line 237: | Line 253: | ||
|- | |- | ||
| 9 || [8.0.0+] | | 9 || [8.0.0+] | ||
|- | |||
| 20 || [20.0.0+] | |||
|- | |||
| 100 || [20.0.0+] | |||
|- | |||
| 101 || [20.0.0+] | |||
|} | |} | ||
== NotifyAppletEvent == | == NotifyAppletEvent == | ||
Takes an input u8 [[#AppletEventType]], an u8 [[Applet_Manager_services#AppletId|AppletId]], an u8 [[Filesystem_services#StorageId|StorageId]], an u8 [[#PlayLogPolicy]], an u32 '''event_x8''', and an u64 ''' | Takes an input u8 [[#AppletEventType]], an u8 [[Applet_Manager_services#AppletId|AppletId]], an u8 [[Filesystem_services#StorageId|StorageId]], an u8 [[#PlayLogPolicy]], an u32 '''event_x8''', and an u64 '''ProgramId'''. Returns no output. | ||
When [[#PlayLogPolicy]] is 2 ("None") this will immediately return 0. | When [[#PlayLogPolicy]] is 2 ("None") this will immediately return 0. | ||
Line 248: | Line 270: | ||
* u8 +0xF = [[#AppletEventType]]. | * u8 +0xF = [[#AppletEventType]]. | ||
* Sets the 3 timestamps. | * Sets the 3 timestamps. | ||
* Converts ''' | * Converts '''ProgramId''' and writes it to +0x0. | ||
* u32 +0x8 = '''event_x8'''. | * u32 +0x8 = '''event_x8'''. | ||
* u8 +0xC = [[Applet_Manager_services#AppletId|AppletId]], u8 +0xD = [[Filesystem_services#StorageId|StorageId]], and u8 +0xE = [[#PlayLogPolicy]]. | * u8 +0xC = [[Applet_Manager_services#AppletId|AppletId]], u8 +0xD = [[Filesystem_services#StorageId|StorageId]], and u8 +0xE = [[#PlayLogPolicy]]. | ||
Line 277: | Line 299: | ||
== Cmd8 == | == Cmd8 == | ||
Takes an input u8 [[#AppletEventType]], an u8 [[Applet_Manager_services#LibraryAppletMode|LibraryAppletMode]], an u8 [[Applet_Manager_services#AppletId|AppletId]], an u8 [[Filesystem_services#StorageId|StorageId]], an u8 [[#PlayLogPolicy]], and an u64 ''' | Takes an input u8 [[#AppletEventType]], an u8 [[Applet_Manager_services#LibraryAppletMode|LibraryAppletMode]], an u8 [[Applet_Manager_services#AppletId|AppletId]], an u8 [[Filesystem_services#StorageId|StorageId]], an u8 [[#PlayLogPolicy]], and an u64 '''ProgramId'''. Returns no output. | ||
This is similar to [[#NotifyAppletEvent]]. | This is similar to [[#NotifyAppletEvent]]. | ||
Line 287: | Line 309: | ||
* u8 +0xF = [[#AppletEventType]]. | * u8 +0xF = [[#AppletEventType]]. | ||
* Sets the 3 timestamps. | * Sets the 3 timestamps. | ||
* Converts ''' | * Converts '''ProgramId''' and writes it to +0x0. | ||
* u8 +0x9 = [[Applet_Manager_services#LibraryAppletMode|LibraryAppletMode]]. | * u8 +0x9 = [[Applet_Manager_services#LibraryAppletMode|LibraryAppletMode]]. | ||
* u8 +0x8 = 1. | * u8 +0x8 = 1. | ||
Line 311: | Line 333: | ||
= pdm:qry = | = pdm:qry = | ||
This is "nn::pdm::detail::IQueryService". | This is "nn::pdm::detail::IQueryService". | ||
This was moved from [[NS_services|ns]] with [3.0.0+]. | |||
This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is not Maintenance. | This is only available when the output from [[Process_Manager_services|pm:bm]] GetBootMode is not Maintenance. | ||
Line 338: | Line 362: | ||
| 9 || [[#GetAvailablePlayEventRange]] | | 9 || [[#GetAvailablePlayEventRange]] | ||
|- | |- | ||
| 10 || [[#QueryAccountEvent]] | | 10 || [3.0.0+] [[#QueryAccountEvent]] | ||
|- | |- | ||
| 11 || [4.0.0+] [[#QueryAccountPlayEvent]] | | 11 || [4.0.0+] [[#QueryAccountPlayEvent]] | ||
Line 357: | Line 381: | ||
|- | |- | ||
| 19 || [10.0.0+] [[#QueryApplicationPlayStatisticsByUserAccountIdForSystem]] | | 19 || [10.0.0+] [[#QueryApplicationPlayStatisticsByUserAccountIdForSystem]] | ||
|- | |||
| 100 || [20.0.0+] | |||
|- | |||
| 110 || [20.0.0+] | |||
|- | |||
| 118 || [20.0.0+] | |||
|- | |||
| 119 || [20.0.0+] | |||
|} | |} | ||
Line 418: | Line 450: | ||
Takes ([10.0.0+] an input u8 bool), an input u128 '''Uid''', a type-0x6 output buffer containing an array of u64 '''ApplicationId''', and returns an output s32 for actual total output entries. | Takes ([10.0.0+] an input u8 bool), an input u128 '''Uid''', a type-0x6 output buffer containing an array of u64 '''ApplicationId''', and returns an output s32 for actual total output entries. | ||
Returns a list of | Returns a list of applications played by the specified user. | ||
== GetRecentlyPlayedApplicationUpdateEvent == | == GetRecentlyPlayedApplicationUpdateEvent == | ||
Line 682: | Line 714: | ||
This is "nn::pdm::LastPlayTime". | This is "nn::pdm::LastPlayTime". | ||
This is a 0x18-byte struct and contains data from the last time the | This is a 0x18-byte struct and contains data from the last time the program was played. | ||
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
Line 690: | Line 722: | ||
! Description | ! Description | ||
|- | |- | ||
| 0x0 || 0x8 || | | 0x0 || 0x8 || ApplicationId | ||
|- | |- | ||
| 0x8 || 0x4 || Same as the first [[#AppletEvent]] timestamp. | | 0x8 || 0x4 || Same as the first [[#AppletEvent]] timestamp. | ||
Line 696: | Line 728: | ||
| 0xC || 0x4 || Same as the second [[#AppletEvent]] timestamp. | | 0xC || 0x4 || Same as the second [[#AppletEvent]] timestamp. | ||
|- | |- | ||
| 0x10 || 0x4 || Total minutes since the | | 0x10 || 0x4 || Total minutes since the program was last played. | ||
|- | |- | ||
| 0x14 || 0x1 || Flag indicating whether the above field is set. | | 0x14 || 0x1 || Flag indicating whether the above field is set. | ||
Line 788: | Line 820: | ||
* [[#QueryAppletEvent]], [[#QueryLastPlayTime]], and [[#QueryApplicationPlayStatisticsForSystem]]: PlayEvent +0x1C must be 0, and [[#PlayLogPolicy]] must be 0. [10.0.0+] These will also allow [[#PlayLogPolicy]] value 3, if the input flag is set. | * [[#QueryAppletEvent]], [[#QueryLastPlayTime]], and [[#QueryApplicationPlayStatisticsForSystem]]: PlayEvent +0x1C must be 0, and [[#PlayLogPolicy]] must be 0. [10.0.0+] These will also allow [[#PlayLogPolicy]] value 3, if the input flag is set. | ||
** With [[#QueryLastPlayTime]]/[[#QueryApplicationPlayStatisticsForSystem]] the [[Applet_Manager_services#AppletId|AppletId]] must be 1. [10.0.0+] These now also allow [[Applet_Manager_services#AppletId|AppletId]] 0x1F/0x20. | ** With [[#QueryLastPlayTime]]/[[#QueryApplicationPlayStatisticsForSystem]] the [[Applet_Manager_services#AppletId|AppletId]] must be 1. [10.0.0+] These now also allow [[Applet_Manager_services#AppletId|AppletId]] 0x1F/0x20. | ||
* [[#QueryPlayStatisticsByApplicationId]]: PlayEvent +0x1C must be 0, +0xC must be 1 ([10.0.0+] or 0x1F/0x20), and the | * [[#QueryPlayStatisticsByApplicationId]]: PlayEvent +0x1C must be 0, +0xC must be 1 ([10.0.0+] or 0x1F/0x20), and the ProgramId must match. [10.0.0+] [[#PlayLogPolicy]] must be 0. Value 3 is allowed if the input flag is set. | ||
* [[#QueryAccountEvent]]: PlayEvent +0x1C must be 1 and PlayEvent +0x18 must be <=1. | * [[#QueryAccountEvent]]: PlayEvent +0x1C must be 1 and PlayEvent +0x18 must be <=1. | ||
* [[#QueryApplicationPlayStatisticsForSystem]]: In addition to the above, this also handles [[#PlayEventType]] PowerStateChange, where PlayEvent +0x0 is value 0 or 1. | * [[#QueryApplicationPlayStatisticsForSystem]]: In addition to the above, this also handles [[#PlayEventType]] PowerStateChange, where PlayEvent +0x0 is value 0 or 1. | ||
The structure of the first 0x1C-bytes are determined by [[#PlayEventType]]. For | The structure of the first 0x1C-bytes are determined by [[#PlayEventType]]. For ProgramIds/userIDs, the low/high u32 in each u64 is swapped. | ||
Applet: | Applet: | ||
Line 894: | Line 926: | ||
| 0x38 || 0x1 || [[#PlayEvent]] +0x18 | | 0x38 || 0x1 || [[#PlayEvent]] +0x18 | ||
|- | |- | ||
| | | 0x39 || 0x7 || Padding | ||
|} | |} | ||
Line 955: | Line 987: | ||
! Description | ! Description | ||
|- | |- | ||
| 0x0 || 0x8 || | | 0x0 || 0x8 || ApplicationId | ||
|- | |- | ||
| 0x8 || 0x8 || Total play-time in nanoseconds. | | 0x8 || 0x8 || Total play-time in nanoseconds. | ||
|- | |- | ||
| 0x10 || 0x8 || Total times the | | 0x10 || 0x8 || Total times the program was launched. | ||
|} | |} | ||