Changes

Jump to navigation Jump to search
4,576 bytes added ,  08:57, 29 September 2019
→‎file_io: parameter docs
Line 1: Line 1: −
TMA (Target Manager) acts as a debugging sysmodule for development kits. This system module is loaded in retail units, but remains unused.
+
TMA (Target Manager Agent) acts as a debugging sysmodule for development kits. This system module is loaded in retail units, but remains unused.
    
These services are inaccessible on retail units. However, all [[Title_list#System_Applets|System Applets]] have permission to access them (see [[NPDM#Service_Access_Control]]).
 
These services are inaccessible on retail units. However, all [[Title_list#System_Applets|System Applets]] have permission to access them (see [[NPDM#Service_Access_Control]]).
 +
 +
TMA makes a few sets of services available. One set (the "htc" family), is aimed around managing Host/Target Connections. "htc" allows orchestrating the switch<->pc connection, "htc:tenv" allows retrieving information about the target's environment from the host, and "htcs" provides an interface for managing sockets on PC from the Switch. htcs is used primarily to host services on PC ports with actual management code running on Switch. The other service ("file_io") manages HostIO, a mechanism by which the Switch can read files present on the Host PC. When a host is connected, FS will attempt to read data via file_io when @Host:/ content paths are used, or when fsp-srv->OpenHostFileSystem() is used to open an IFileSystem to the Host PC. Nintendo's implementation only supports Windows, and FS will explicitly check for the presence of a "C:/" drive to detect this.
    
= htc =
 
= htc =
Line 21: Line 23:  
|-
 
|-
 
| 5 || BindHostDisconnectionEventForSystem
 
| 5 || BindHostDisconnectionEventForSystem
 +
|-
 +
| 6 || [3.0.0+] GetBridgeIpAddress
 +
|-
 +
| 7 || [3.0.0+] GetBridgePort
 +
|-
 +
| 8 || [3.0.0+] SetCradleAttached
 +
|-
 +
| 9 || [4.0.0+] GetBridgeSubnetMask
 +
|-
 +
| 10 || [4.0.0+] GetBridgeMacAddress
 +
|-
 +
| 11 || [6.0.0+] GetWorkingDirectoryPath
 +
|-
 +
| 12 || [6.0.0+] GetWorkingDirectoryPathSize
 +
|-
 +
| 13 || [6.0.0+] RunOnHostStart
 +
|-
 +
| 14 || [9.0.0+] RunOnHostResults
 
|}
 
|}
   Line 30: Line 50:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 ||
+
| 0 || Socket
 
|-
 
|-
| 1 ||
+
| 1 || Close
 
|-
 
|-
| 2 ||
+
| 2 || Connect
 
|-
 
|-
| 3 ||
+
| 3 || Bind
 
|-
 
|-
| 4 ||
+
| 4 || Listen
 
|-
 
|-
| 5 ||
+
| 5 || Accept
 
|-
 
|-
| 6 ||
+
| 6 || Recv
 
|-
 
|-
| 7 ||
+
| 7 || Send
 
|-
 
|-
| 8 ||
+
| 8 || Shutdown
 
|-
 
|-
| 9 ||
+
| 9 || Fcntl
 
|-
 
|-
 
| 10 || GetPeerNameAny
 
| 10 || GetPeerNameAny
Line 54: Line 74:  
| 11 || GetDefaultHostName
 
| 11 || GetDefaultHostName
 
|-
 
|-
| 12 ||  
+
| 12 || CreateSocketOld
 
|-
 
|-
 
| 13 || CreateSocket
 
| 13 || CreateSocket
Line 96: Line 116:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 || OpenService
+
| 0 || GetServiceInterface
 
|}
 
|}
   Line 106: Line 126:  
! Cmd || Name
 
! Cmd || Name
 
|-
 
|-
| 0 ||
+
| 0 || GetVariable
 +
|-
 +
| 1 || GetVariableLength
 +
|-
 +
| 2 || WaitUntilVariableAvailable
 +
|}
 +
 
 +
= file_io =
 +
This is "nn::tma::IFileManager".
 +
 
 +
This service is not normally present on retail units.
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name || Notes
 +
|-
 +
| 0 || [[#OpenFile]] || returns an [[#IFileAccessor]]
 +
|-
 +
| 1 || [[#FileExists]] ||
 +
|-
 +
| 2 || [[#DeleteFile]] ||
 +
|-
 +
| 3 || [[#RenameFile]] ||
 +
|-
 +
| 4 || [[#GetIOType]] ||
 +
|-
 +
| 5 || [[#OpenDirectory]] || returns an [[#IDirectoryAccessor]]
 +
|-
 +
| 6 || [[#DirectoryExists]] ||
 +
|-
 +
| 7 || [[#CreateDirectory]] ||
 +
|-
 +
| 8 || [[#DeleteDirectory]]||
 +
|-
 +
| 9 || [[#RenameDirectory]] ||
 +
|-
 +
| 10 || [[#CreateFile]]  ||
 +
|-
 +
| 11 || [[#GetFileTimeStamp]] ||
 +
|-
 +
| 12 || GetCaseSensitivePath ||
 +
|}
 +
 
 +
=== OpenFile ===
 +
Takes in an input X descriptor "Path" and a u32 "OpenMode", returns a [[#IFileAccessor]] interface.
 +
 
 +
=== FileExists ===
 +
Takes in an input X descriptor "Path", and returns an output bool.
 +
 
 +
=== DeleteFile ===
 +
Takes in an input X descriptor "Path".
 +
 
 +
=== RenameFile ===
 +
Takes in an input X descriptor "SrcPath" and an input X descriptor "DstPath".
 +
 
 +
=== GetIOType ===
 +
Takes in an input X descriptor "Path", returns an output int "EntryType".
 +
 
 +
=== OpenDirectory ===
 +
Takes in an input X descriptor "Path" and a u32 "OpenMode", returns a [[#IDirectoryAccessor]] interface.
 +
 
 +
=== DirectoryExists ===
 +
Takes in an input X descriptor "Path", and returns an output bool.
 +
 
 +
=== CreateDirectory ===
 +
Takes in an input X descriptor "Path".
 +
 
 +
=== DeleteDirectory ===
 +
Takes in an input X descriptor "Path" and an input bool "IsRecursive".
 +
 
 +
=== RenameDirectory ===
 +
Takes in an input X descriptor "SrcPath" and an input X descriptor "DstPath".
 +
 
 +
=== CreateFile ===
 +
Takes in an input X descriptor "Path" and an input s64 "Size".
 +
 
 +
=== GetFileTimeStamp ===
 +
Takes in an input X descriptor "Path", and returns 3 output u64s ("CreatedTime", "AccessedTime", "ModifiedTime").
 +
 
 +
== IFileAccessor ==
 +
This is "nn::tma::IFileAccessor".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || ReadFile
 +
|-
 +
| 1 || WriteFile
 +
|-
 +
| 2 || GetFileSize
 +
|-
 +
| 3 || SetFileSize
 +
|-
 +
| 4 || FlushFile
 +
|-
 +
| 5 || SetPriorityForFile
 +
|-
 +
| 6 || GetPriorityForFile
 +
|}
 +
 
 +
=== ReadFile ===
 +
Takes in an input s64 "Offset", an input ReadOption, and a NonSecure B descriptor "OutBuffer", and returns a s64 "BytesRead".
 +
 
 +
=== WriteFile ===
 +
Takes in an input s64 "Offset", an input WriteOption, and a NonSecure A descriptor "InBuffer".
 +
 
 +
=== GetFileSize ===
 +
Takes no input, and returns a s64 "FileSize".
 +
 
 +
=== SetFileSize ===
 +
Takes an s64 "FileSize".
 +
 
 +
=== FlushFile ===
 +
Takes no input, returns no output.
 +
 
 +
=== SetPriorityForFile ===
 +
Takes an input s32 "Priority".
 +
 
 +
=== GetPriorityForFile ===
 +
Takes no input, returns an s32 "Priority".
 +
 
 +
== IDirectoryAccessor ==
 +
This is "nn::tma::IDirectoryAccessor".
 +
 
 +
{| class="wikitable" border="1"
 +
|-
 +
! Cmd || Name
 +
|-
 +
| 0 || [[#GetEntryCount]]
 
|-
 
|-
| 1 ||
+
| 1 || [[#ReadDirectory]]
 
|-
 
|-
| 2 ||
+
| 2 || [[#SetPriorityForDirectory]]
 +
|-
 +
| 3 || [[#GetPriorityForDirectory]]
 
|}
 
|}
 +
 +
=== GetEntryCount ===
 +
Takes no input, returns an s64 "EntryCount".
 +
 +
=== ReadDirectory ===
 +
Takes an input B descriptor "OutEntryBuffer", returns an s64 "NumEntriesRead"
 +
 +
=== SetPriorityForDirectory ===
 +
Takes an input s32 "Priority".
 +
 +
=== GetPriorityForDirectory ===
 +
Takes no input, returns an s32 "Priority".
 +
    
[[Category:Services]]
 
[[Category:Services]]

Navigation menu