Migration services: Difference between revisions

No edit summary
 
(4 intermediate revisions by 2 users not shown)
Line 47: Line 47:
|-
|-
| 2100 || [20.0.0+]
| 2100 || [20.0.0+]
|-
| 2110 || [20.0.0+]
|-
|-
| 2200 || [20.0.0+]
| 2200 || [20.0.0+]
Line 116: Line 118:
== ResumeSaveDataMigrationClient ==
== ResumeSaveDataMigrationClient ==
Takes an input u32, a TransferMemory handle, returns an [[#IClient_2|IClient]].
Takes an input u32, a TransferMemory handle, returns an [[#IClient_2|IClient]].
== Cmd2100 ==
Takes 4-bytes of input, a type-0x19 input buffer containing a 0x100-byte struct, a handle. Returns an [[#IServer_3|IServer]].
== Cmd2110 ==
Takes 4-bytes of input, a handle. Returns an [[#IServer_3|IServer]].
== Cmd2200 ==
Takes 4-bytes of input, a type-0x19 input buffer containing a 0x100-byte struct, a handle. Returns an [[#IClient_3|IClient]].
On NX this just calls a logging func and returns an error.
== Cmd2210 ==
Takes 4-bytes of input, a handle. Returns an [[#IClient_3|IClient]].
On NX this just calls a logging func and returns an error.
== Cmd2250 ==
Takes a total of 0x18-bytes of input, a handle. Returns an [[#IUnknown|IUnknown]].
== Cmd2260 ==
Takes 4-bytes of input, a handle. Returns an [[#IUnknown|IUnknown]].
== Cmd2280 ==
Takes an input u64, returns an [[#IAsyncContext]].
This starts a network request for [[Network|transfer_events/%lld/rollback]].
== Cmd2300 ==
Takes a total of 0x18-bytes of input, a handle. Returns an [[#IUploader|IUploader]].
== Cmd2310 ==
Takes 4-bytes of input, a handle. Returns an [[#IUploader|IUploader]].
== Cmd2400 ==
Takes a total of 0x10-bytes of input, a handle. Returns an [[#IDownloader|IDownloader]].
== Cmd2420 ==
Takes 4-bytes of input, a handle. Returns an [[#IDownloader|IDownloader]].


== IServer ==
== IServer ==
Line 342: Line 383:
=== ListServers ===
=== ListServers ===
[20.0.0+] The struct size is now 0x130-bytes instead of 0x128-bytes.
[20.0.0+] The struct size is now 0x130-bytes instead of 0x128-bytes.
== IServer ==
This is "nn::migration::device::IServer".
This was added with [20.0.0+].
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 ||
|-
| 10 ||
|-
| 20 ||
|-
| 21 ||
|-
| 30 ||
|-
| 40 ||
|-
| 50 ||
|-
| 100 ||
|-
| 110 ||
|-
| 111 ||
|-
| 120 ||
|-
| 130 ||
|-
| 200 ||
|-
| 230 ||
|-
| 290 ||
|-
| 300 ||
|-
| 400 ||
|-
| 510 ||
|-
| 900 ||
|}
== IClient ==
This is "nn::migration::device::IClient".
This was added with [20.0.0+].
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 10 ||
|-
| 20 ||
|-
| 30 ||
|-
| 100 ||
|-
| 110 ||
|-
| 111 ||
|-
| 200 ||
|-
| 210 ||
|-
| 220 ||
|-
| 230 ||
|-
| 240 ||
|-
| 250 ||
|-
| 290 ||
|-
| 300 ||
|-
| 310 ||
|-
| 320 ||
|-
| 330 ||
|-
| 340 ||
|-
| 400 ||
|-
| 500 ||
|-
| 610 ||
|-
| 700 ||
|-
| 710 ||
|-
| 720 ||
|}
== IUnknown ==
This was added with [20.0.0+].
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 ||
|-
| 1 ||
|-
| 2 ||
|-
| 3 ||
|-
| 100 ||
|-
| 110 ||
|}
== IUploader ==
This is "nn::migration::device::IUploader".
This was added with [20.0.0+].
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 90 ||
|-
| 100 ||
|-
| 310 ||
|-
| 320 ||
|-
| 330 ||
|-
| 340 ||
|-
| 350 ||
|-
| 400 ||
|-
| 500 ||
|-
| 610 ||
|-
| 900 ||
|}
== IDownloader ==
This is "nn::migration::device::IDownloader".
This was added with [20.0.0+].
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 10 ||
|-
| 20 ||
|-
| 30 ||
|-
| 90 ||
|-
| 100 ||
|-
| 300 ||
|-
| 310 ||
|-
| 320 ||
|-
| 330 ||
|-
| 400 ||
|-
| 500 ||
|-
| 610 ||
|-
| 620 ||
|-
| 900 ||
|}


= Notes =
= Notes =
Savedata transfer ("nn::migration::savedata::IServer"/"nn::migration::savedata::IClient") requires that accounts are linked to the same network-account. acc:su [[NS_services#IManagerForSystemService|IManagerForSystemService]] GetAccountId is used here. The server stores this Id into state, and also stores it in the [[LDN_services|ldn]] AdvertiseData. The client also verifies the Id in AdvertiseData against the Id from GetAccountId for the account(s) being used, during ScanServersAsync.
Savedata transfer ("nn::migration::savedata::IServer"/"nn::migration::savedata::IClient") requires that accounts are linked to the same network-account. acc:su [[NS_services#IManagerForSystemService|IManagerForSystemService]] GetAccountId is used here. The server stores this Id into state, and also stores it in the [[LDN_services|ldn]] AdvertiseData. The client also verifies the Id in AdvertiseData against the Id from GetAccountId for the account(s) being used, during ScanServersAsync.
[S2] [[qlaunch]] now has an additional menu once send-savedata is selected, for selecting whether to send to Nintendo Switch or Nintendo Switch 2. If Switch 2 is selected, and there's a S1 receiving, the S2 will display a message regarding wrong target system. The receiving system also displays an error. Note that savedata for S2-only applications is only listed with the dest-S2 option (S1-applications are also listed).


[[Category:Services]]
[[Category:Services]]