wut  v1.7.0
Wii U Toolchain
args.h
Go to the documentation of this file.
1 #pragma once
2 #include <wut.h>
3 
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14 
15 typedef uint32_t SYSArgID;
16 typedef uint32_t SYSArgType;
17 
18 typedef struct SYSArgDataBlock SYSArgDataBlock;
19 typedef struct SYSCallerInfo SYSCallerInfo;
21 typedef struct SYSStandardArgs SYSStandardArgs;
24 
25 typedef void (*SYSDeserializeCallback)(SYSDeserializeArg *arg, void *userArg);
26 
27 typedef enum SYSArgIDEnum
28 {
36 
37 typedef enum SYSArgTypeEnum
38 {
44 
46 {
49  union
50  {
51  uint32_t uint32;
52  uint64_t uint64;
53  struct
54  {
55  void *ptr;
56  uint32_t size;
57  } data;
58  struct
59  {
60  const char *ptr;
61  uint32_t size;
62  } string;
63  };
64 };
65 WUT_CHECK_OFFSET(SYSArgDataBlock, 0x0, id);
66 WUT_CHECK_OFFSET(SYSArgDataBlock, 0x4, type);
67 WUT_CHECK_OFFSET(SYSArgDataBlock, 0x8, data);
68 WUT_CHECK_SIZE(SYSArgDataBlock, 0x10);
69 
71 {
72  uint32_t upid;
73  WUT_PADDING_BYTES(0x4);
74  uint64_t titleID;
75 };
76 WUT_CHECK_OFFSET(SYSCallerInfo, 0x0, upid);
77 WUT_CHECK_OFFSET(SYSCallerInfo, 0x8, titleID);
78 WUT_CHECK_SIZE(SYSCallerInfo, 0x10);
79 
81 {
82  const char *argName;
83  uint32_t size;
84  void *data;
85 };
86 WUT_CHECK_OFFSET(SYSDeserializeArg, 0x0, argName);
87 WUT_CHECK_OFFSET(SYSDeserializeArg, 0x4, size);
88 WUT_CHECK_OFFSET(SYSDeserializeArg, 0x8, data);
89 WUT_CHECK_SIZE(SYSDeserializeArg, 0xC);
90 
92 {
93  const void *data;
94  uint32_t size;
95 };
96 WUT_CHECK_OFFSET(SYSStandardArgsOut, 0x0, data);
97 WUT_CHECK_OFFSET(SYSStandardArgsOut, 0x4, size);
98 WUT_CHECK_SIZE(SYSStandardArgsOut, 0x8);
99 
101 {
102  const char *argString;
103  uint32_t size;
104 };
105 WUT_CHECK_OFFSET(SYSStandardArgsIn, 0x0, argString);
106 WUT_CHECK_OFFSET(SYSStandardArgsIn, 0x4, size);
107 WUT_CHECK_SIZE(SYSStandardArgsIn, 0x8);
108 
110 {
111  void *anchorData;
112  uint32_t anchorSize;
113  void *resultData;
114  uint32_t resultSize;
115 };
116 WUT_CHECK_OFFSET(SYSStandardArgs, 0x0, anchorData);
117 WUT_CHECK_OFFSET(SYSStandardArgs, 0x4, anchorSize);
118 WUT_CHECK_OFFSET(SYSStandardArgs, 0x8, resultData);
119 WUT_CHECK_OFFSET(SYSStandardArgs, 0xC, resultSize);
120 WUT_CHECK_SIZE(SYSStandardArgs, 0x10);
121 
135 int32_t
137  SYSCallerInfo *callerInfo);
138 
139 int32_t
141 
142 void
144 
145 int32_t
147 
148 int32_t
149 SYSSerializeSysArgs(const char *argName,
150  const void *data,
151  uint32_t size);
152 
153 int32_t
155  uint32_t *bytesWritten,
156  uint32_t bufferSize,
157  const char *argName,
158  const void *data,
159  uint32_t dataSize);
160 
161 int32_t
163  void *userArg);
164 
165 int32_t
167  uint32_t blockSize,
168  SYSDeserializeCallback callback,
169  void *userArg);
170 
171 int32_t
173 
174 int32_t
176 
177 BOOL
179  SYSStandardArgs *standardArg);
180 
181 #ifdef __cplusplus
182 }
183 #endif
184 
const void * data
Definition: args.h:93
uint64_t titleID
Definition: args.h:73
const char * argString
Definition: args.h:102
uint32_t upid
Definition: args.h:72
SYSArgID id
Definition: args.h:47
SYSArgType type
Definition: args.h:48
uint32_t anchorSize
Definition: args.h:112
void * data
Definition: args.h:84
void * resultData
Definition: args.h:113
uint32_t resultSize
Definition: args.h:114
uint32_t size
Definition: args.h:83
const char * argName
Definition: args.h:82
void * anchorData
Definition: args.h:111
uint32_t SYSArgType
Definition: args.h:16
SYSArgIDEnum
Definition: args.h:28
int32_t _SYSDirectlyReturnToCaller(SYSStandardArgsOut *arg)
uint32_t SYSArgID
Definition: args.h:15
int32_t SYSPackArgs()
BOOL _SYSDeserializeStandardArg(SYSDeserializeArg *deserializeArg, SYSStandardArgs *standardArg)
int32_t _SYSSerializeStandardArgsIn(SYSStandardArgsIn *arg)
int32_t SYSSerializeSysArgs(const char *argName, const void *data, uint32_t size)
void(* SYSDeserializeCallback)(SYSDeserializeArg *arg, void *userArg)
Definition: args.h:25
int32_t SYSGetStandardArgs(SYSStandardArgs *stdArgs)
SYSArgTypeEnum
Definition: args.h:38
void SYSClearSysArgs()
int32_t SYSGetArguments(SYSArgDataBlock *args, SYSCallerInfo *callerInfo)
Gets current arguments and caller information.
int32_t SYSSerializeSysArgsToBuffer(char *buffer, uint32_t *bytesWritten, uint32_t bufferSize, const char *argName, const void *data, uint32_t dataSize)
int32_t SYSDeserializeSysArgsFromBlock(void *block, uint32_t blockSize, SYSDeserializeCallback callback, void *userArg)
int32_t SYSDeserializeSysArgs(SYSDeserializeCallback callback, void *userArg)
@ SYS_ARG_ID_JOIN_PID
Definition: args.h:34
@ SYS_ARG_ID_RESULT
Definition: args.h:31
@ SYS_ARG_ID_URL
Definition: args.h:32
@ SYS_ARG_ID_MIV_DATA
Definition: args.h:33
@ SYS_ARG_ID_ANCHOR
Definition: args.h:30
@ SYS_ARG_ID_END
Definition: args.h:29
@ SYS_ARG_TYPE_UINT32
Definition: args.h:39
@ SYS_ARG_TYPE_STRING
Definition: args.h:42
@ SYS_ARG_TYPE_UINT64
Definition: args.h:40
@ SYS_ARG_TYPE_DATA
Definition: args.h:41
int32_t BOOL
Definition: wut_types.h:7