Migration services: Difference between revisions

No edit summary
 
(3 intermediate revisions by 2 users not shown)
Line 120: Line 120:


== Cmd2100 ==
== Cmd2100 ==
Takes 4-bytes of input, a type-0x19 input buffer containing a 0x100-byte struct, a handle. Returns an [[#IUnknown0|IUnknown0]].
Takes 4-bytes of input, a type-0x19 input buffer containing a 0x100-byte struct, a handle. Returns an [[#IServer_3|IServer]].


== Cmd2110 ==
== Cmd2110 ==
Takes 4-bytes of input, a handle. Returns an [[#IUnknown0|IUnknown0]].
Takes 4-bytes of input, a handle. Returns an [[#IServer_3|IServer]].


== Cmd2200 ==
== Cmd2200 ==
Takes 4-bytes of input, a type-0x19 input buffer containing a 0x100-byte struct, a handle. Returns an [[#IUnknown1|IUnknown1]].
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 ==
== Cmd2210 ==
Takes 4-bytes of input, a handle. Returns an [[#IUnknown1|IUnknown1]].
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 ==
== Cmd2250 ==
Takes a total of 0x18-bytes of input, a handle. Returns an [[#IUnknown2|IUnknown2]].
Takes a total of 0x18-bytes of input, a handle. Returns an [[#IUnknown|IUnknown]].


== Cmd2260 ==
== Cmd2260 ==
Takes 4-bytes of input, a handle. Returns an [[#IUnknown2|IUnknown2]].
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 ==
== Cmd2300 ==
Takes a total of 0x18-bytes of input, a handle. Returns an [[#IUnknown3|IUnknown3]].
Takes a total of 0x18-bytes of input, a handle. Returns an [[#IUploader|IUploader]].


== Cmd2310 ==
== Cmd2310 ==
Takes 4-bytes of input, a handle. Returns an [[#IUnknown3|IUnknown3]].
Takes 4-bytes of input, a handle. Returns an [[#IUploader|IUploader]].


== Cmd2400 ==
== Cmd2400 ==
Takes a total of 0x10-bytes of input, a handle. Returns an [[#IUnknown4|IUnknown4]].
Takes a total of 0x10-bytes of input, a handle. Returns an [[#IDownloader|IDownloader]].


== Cmd2420 ==
== Cmd2420 ==
Takes 4-bytes of input, a handle. Returns an [[#IUnknown4|IUnknown4]].
Takes 4-bytes of input, a handle. Returns an [[#IDownloader|IDownloader]].


== IServer ==
== IServer ==
Line 375: Line 384:
[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.


== IUnknown0 ==
== IServer ==
This is "nn::migration::device::IServer".
 
This was added with [20.0.0+].
This was added with [20.0.0+].


Line 421: Line 432:
|}
|}


== IUnknown1 ==
== IClient ==
This is "nn::migration::device::IClient".
 
This was added with [20.0.0+].
This was added with [20.0.0+].


Line 477: Line 490:
|}
|}


== IUnknown2 ==
== IUnknown ==
This was added with [20.0.0+].
This was added with [20.0.0+].


Line 497: Line 510:
|}
|}


== IUnknown3 ==
== IUploader ==
This is "nn::migration::device::IUploader".
 
This was added with [20.0.0+].
This was added with [20.0.0+].


Line 527: Line 542:
|}
|}


== IUnknown4 ==
== IDownloader ==
This is "nn::migration::device::IDownloader".
 
This was added with [20.0.0+].
This was added with [20.0.0+].


Line 565: Line 582:
= 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]]