summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/libimobiledevice/afc.h46
-rw-r--r--include/libimobiledevice/bt_packet_logger.h12
-rw-r--r--include/libimobiledevice/companion_proxy.h22
-rw-r--r--include/libimobiledevice/debugserver.h32
-rw-r--r--include/libimobiledevice/diagnostics_relay.h22
-rw-r--r--include/libimobiledevice/file_relay.h10
-rw-r--r--include/libimobiledevice/heartbeat.h12
-rw-r--r--include/libimobiledevice/house_arrest.h14
-rw-r--r--include/libimobiledevice/installation_proxy.h48
-rw-r--r--include/libimobiledevice/libimobiledevice.h56
-rw-r--r--include/libimobiledevice/lockdown.h64
-rw-r--r--include/libimobiledevice/misagent.h16
-rw-r--r--include/libimobiledevice/mobile_image_mounter.h14
-rw-r--r--include/libimobiledevice/mobileactivation.h20
-rw-r--r--include/libimobiledevice/mobilebackup.h24
-rw-r--r--include/libimobiledevice/mobilebackup2.h20
-rw-r--r--include/libimobiledevice/mobilesync.h42
-rw-r--r--include/libimobiledevice/notification_proxy.h14
-rw-r--r--include/libimobiledevice/preboard.h16
-rw-r--r--include/libimobiledevice/property_list_service.h18
-rw-r--r--include/libimobiledevice/restore.h22
-rw-r--r--include/libimobiledevice/reverse_proxy.h16
-rw-r--r--include/libimobiledevice/sbservices.h16
-rw-r--r--include/libimobiledevice/screenshotr.h8
-rw-r--r--include/libimobiledevice/service.h21
-rw-r--r--include/libimobiledevice/syslog_relay.h16
-rw-r--r--include/libimobiledevice/webinspector.h12
27 files changed, 322 insertions, 311 deletions
diff --git a/include/libimobiledevice/afc.h b/include/libimobiledevice/afc.h
index a2d70d3..0086eb6 100644
--- a/include/libimobiledevice/afc.h
+++ b/include/libimobiledevice/afc.h
@@ -107,7 +107,7 @@ typedef afc_client_private *afc_client_t; /**< The client handle. */
107 * invalid, AFC_E_MUX_ERROR if the connection cannot be established, 107 * invalid, AFC_E_MUX_ERROR if the connection cannot be established,
108 * or AFC_E_NO_MEM if there is a memory allocation problem. 108 * or AFC_E_NO_MEM if there is a memory allocation problem.
109 */ 109 */
110afc_error_t afc_client_new(idevice_t device, lockdownd_service_descriptor_t service, afc_client_t *client); 110LIBIMOBILEDEVICE_API afc_error_t afc_client_new(idevice_t device, lockdownd_service_descriptor_t service, afc_client_t *client);
111 111
112/** 112/**
113 * Starts a new AFC service on the specified device and connects to it. 113 * Starts a new AFC service on the specified device and connects to it.
@@ -120,7 +120,7 @@ afc_error_t afc_client_new(idevice_t device, lockdownd_service_descriptor_t serv
120 * 120 *
121 * @return AFC_E_SUCCESS on success, or an AFC_E_* error code otherwise. 121 * @return AFC_E_SUCCESS on success, or an AFC_E_* error code otherwise.
122 */ 122 */
123afc_error_t afc_client_start_service(idevice_t device, afc_client_t* client, const char* label); 123LIBIMOBILEDEVICE_API afc_error_t afc_client_start_service(idevice_t device, afc_client_t* client, const char* label);
124 124
125/** 125/**
126 * Frees up an AFC client. If the connection was created by the client itself, 126 * Frees up an AFC client. If the connection was created by the client itself,
@@ -128,7 +128,7 @@ afc_error_t afc_client_start_service(idevice_t device, afc_client_t* client, con
128 * 128 *
129 * @param client The client to free. 129 * @param client The client to free.
130 */ 130 */
131afc_error_t afc_client_free(afc_client_t client); 131LIBIMOBILEDEVICE_API afc_error_t afc_client_free(afc_client_t client);
132 132
133/** 133/**
134 * Get device information for a connected client. The device information 134 * Get device information for a connected client. The device information
@@ -142,7 +142,7 @@ afc_error_t afc_client_free(afc_client_t client);
142 * 142 *
143 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 143 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
144 */ 144 */
145afc_error_t afc_get_device_info(afc_client_t client, char ***device_information); 145LIBIMOBILEDEVICE_API afc_error_t afc_get_device_info(afc_client_t client, char ***device_information);
146 146
147/** 147/**
148 * Gets a directory listing of the directory requested. 148 * Gets a directory listing of the directory requested.
@@ -155,7 +155,7 @@ afc_error_t afc_get_device_info(afc_client_t client, char ***device_information)
155 * 155 *
156 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 156 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
157 */ 157 */
158afc_error_t afc_read_directory(afc_client_t client, const char *path, char ***directory_information); 158LIBIMOBILEDEVICE_API afc_error_t afc_read_directory(afc_client_t client, const char *path, char ***directory_information);
159 159
160/** 160/**
161 * Gets information about a specific file. 161 * Gets information about a specific file.
@@ -168,7 +168,7 @@ afc_error_t afc_read_directory(afc_client_t client, const char *path, char ***di
168 * 168 *
169 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 169 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
170 */ 170 */
171afc_error_t afc_get_file_info(afc_client_t client, const char *path, char ***file_information); 171LIBIMOBILEDEVICE_API afc_error_t afc_get_file_info(afc_client_t client, const char *path, char ***file_information);
172 172
173/** 173/**
174 * Opens a file on the device. 174 * Opens a file on the device.
@@ -180,7 +180,7 @@ afc_error_t afc_get_file_info(afc_client_t client, const char *path, char ***fil
180 * 180 *
181 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 181 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
182 */ 182 */
183afc_error_t afc_file_open(afc_client_t client, const char *filename, afc_file_mode_t file_mode, uint64_t *handle); 183LIBIMOBILEDEVICE_API afc_error_t afc_file_open(afc_client_t client, const char *filename, afc_file_mode_t file_mode, uint64_t *handle);
184 184
185/** 185/**
186 * Closes a file on the device. 186 * Closes a file on the device.
@@ -188,7 +188,7 @@ afc_error_t afc_file_open(afc_client_t client, const char *filename, afc_file_mo
188 * @param client The client to close the file with. 188 * @param client The client to close the file with.
189 * @param handle File handle of a previously opened file. 189 * @param handle File handle of a previously opened file.
190 */ 190 */
191afc_error_t afc_file_close(afc_client_t client, uint64_t handle); 191LIBIMOBILEDEVICE_API afc_error_t afc_file_close(afc_client_t client, uint64_t handle);
192 192
193/** 193/**
194 * Locks or unlocks a file on the device. 194 * Locks or unlocks a file on the device.
@@ -202,7 +202,7 @@ afc_error_t afc_file_close(afc_client_t client, uint64_t handle);
202 * AFC_LOCK_SH (shared lock), AFC_LOCK_EX (exclusive lock), or 202 * AFC_LOCK_SH (shared lock), AFC_LOCK_EX (exclusive lock), or
203 * AFC_LOCK_UN (unlock). 203 * AFC_LOCK_UN (unlock).
204 */ 204 */
205afc_error_t afc_file_lock(afc_client_t client, uint64_t handle, afc_lock_op_t operation); 205LIBIMOBILEDEVICE_API afc_error_t afc_file_lock(afc_client_t client, uint64_t handle, afc_lock_op_t operation);
206 206
207/** 207/**
208 * Attempts to the read the given number of bytes from the given file. 208 * Attempts to the read the given number of bytes from the given file.
@@ -215,7 +215,7 @@ afc_error_t afc_file_lock(afc_client_t client, uint64_t handle, afc_lock_op_t op
215 * 215 *
216 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 216 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
217 */ 217 */
218afc_error_t afc_file_read(afc_client_t client, uint64_t handle, char *data, uint32_t length, uint32_t *bytes_read); 218LIBIMOBILEDEVICE_API afc_error_t afc_file_read(afc_client_t client, uint64_t handle, char *data, uint32_t length, uint32_t *bytes_read);
219 219
220/** 220/**
221 * Writes a given number of bytes to a file. 221 * Writes a given number of bytes to a file.
@@ -228,7 +228,7 @@ afc_error_t afc_file_read(afc_client_t client, uint64_t handle, char *data, uint
228 * 228 *
229 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 229 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
230 */ 230 */
231afc_error_t afc_file_write(afc_client_t client, uint64_t handle, const char *data, uint32_t length, uint32_t *bytes_written); 231LIBIMOBILEDEVICE_API afc_error_t afc_file_write(afc_client_t client, uint64_t handle, const char *data, uint32_t length, uint32_t *bytes_written);
232 232
233/** 233/**
234 * Seeks to a given position of a pre-opened file on the device. 234 * Seeks to a given position of a pre-opened file on the device.
@@ -240,7 +240,7 @@ afc_error_t afc_file_write(afc_client_t client, uint64_t handle, const char *dat
240 * 240 *
241 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 241 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
242 */ 242 */
243afc_error_t afc_file_seek(afc_client_t client, uint64_t handle, int64_t offset, int whence); 243LIBIMOBILEDEVICE_API afc_error_t afc_file_seek(afc_client_t client, uint64_t handle, int64_t offset, int whence);
244 244
245/** 245/**
246 * Returns current position in a pre-opened file on the device. 246 * Returns current position in a pre-opened file on the device.
@@ -251,7 +251,7 @@ afc_error_t afc_file_seek(afc_client_t client, uint64_t handle, int64_t offset,
251 * 251 *
252 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 252 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
253 */ 253 */
254afc_error_t afc_file_tell(afc_client_t client, uint64_t handle, uint64_t *position); 254LIBIMOBILEDEVICE_API afc_error_t afc_file_tell(afc_client_t client, uint64_t handle, uint64_t *position);
255 255
256/** 256/**
257 * Sets the size of a file on the device. 257 * Sets the size of a file on the device.
@@ -265,7 +265,7 @@ afc_error_t afc_file_tell(afc_client_t client, uint64_t handle, uint64_t *positi
265 * @note This function is more akin to ftruncate than truncate, and truncate 265 * @note This function is more akin to ftruncate than truncate, and truncate
266 * calls would have to open the file before calling this, sadly. 266 * calls would have to open the file before calling this, sadly.
267 */ 267 */
268afc_error_t afc_file_truncate(afc_client_t client, uint64_t handle, uint64_t newsize); 268LIBIMOBILEDEVICE_API afc_error_t afc_file_truncate(afc_client_t client, uint64_t handle, uint64_t newsize);
269 269
270/** 270/**
271 * Deletes a file or directory. 271 * Deletes a file or directory.
@@ -275,7 +275,7 @@ afc_error_t afc_file_truncate(afc_client_t client, uint64_t handle, uint64_t new
275 * 275 *
276 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 276 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
277 */ 277 */
278afc_error_t afc_remove_path(afc_client_t client, const char *path); 278LIBIMOBILEDEVICE_API afc_error_t afc_remove_path(afc_client_t client, const char *path);
279 279
280/** 280/**
281 * Renames a file or directory on the device. 281 * Renames a file or directory on the device.
@@ -286,7 +286,7 @@ afc_error_t afc_remove_path(afc_client_t client, const char *path);
286 * 286 *
287 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 287 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
288 */ 288 */
289afc_error_t afc_rename_path(afc_client_t client, const char *from, const char *to); 289LIBIMOBILEDEVICE_API afc_error_t afc_rename_path(afc_client_t client, const char *from, const char *to);
290 290
291/** 291/**
292 * Creates a directory on the device. 292 * Creates a directory on the device.
@@ -297,7 +297,7 @@ afc_error_t afc_rename_path(afc_client_t client, const char *from, const char *t
297 * 297 *
298 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 298 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
299 */ 299 */
300afc_error_t afc_make_directory(afc_client_t client, const char *path); 300LIBIMOBILEDEVICE_API afc_error_t afc_make_directory(afc_client_t client, const char *path);
301 301
302/** 302/**
303 * Sets the size of a file on the device without prior opening it. 303 * Sets the size of a file on the device without prior opening it.
@@ -308,7 +308,7 @@ afc_error_t afc_make_directory(afc_client_t client, const char *path);
308 * 308 *
309 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 309 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
310 */ 310 */
311afc_error_t afc_truncate(afc_client_t client, const char *path, uint64_t newsize); 311LIBIMOBILEDEVICE_API afc_error_t afc_truncate(afc_client_t client, const char *path, uint64_t newsize);
312 312
313/** 313/**
314 * Creates a hard link or symbolic link on the device. 314 * Creates a hard link or symbolic link on the device.
@@ -320,7 +320,7 @@ afc_error_t afc_truncate(afc_client_t client, const char *path, uint64_t newsize
320 * 320 *
321 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 321 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
322 */ 322 */
323afc_error_t afc_make_link(afc_client_t client, afc_link_type_t linktype, const char *target, const char *linkname); 323LIBIMOBILEDEVICE_API afc_error_t afc_make_link(afc_client_t client, afc_link_type_t linktype, const char *target, const char *linkname);
324 324
325/** 325/**
326 * Sets the modification time of a file on the device. 326 * Sets the modification time of a file on the device.
@@ -331,7 +331,7 @@ afc_error_t afc_make_link(afc_client_t client, afc_link_type_t linktype, const c
331 * 331 *
332 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 332 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
333 */ 333 */
334afc_error_t afc_set_file_time(afc_client_t client, const char *path, uint64_t mtime); 334LIBIMOBILEDEVICE_API afc_error_t afc_set_file_time(afc_client_t client, const char *path, uint64_t mtime);
335 335
336/** 336/**
337 * Deletes a file or directory including possible contents. 337 * Deletes a file or directory including possible contents.
@@ -343,7 +343,7 @@ afc_error_t afc_set_file_time(afc_client_t client, const char *path, uint64_t mt
343 * 343 *
344 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 344 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
345 */ 345 */
346afc_error_t afc_remove_path_and_contents(afc_client_t client, const char *path); 346LIBIMOBILEDEVICE_API afc_error_t afc_remove_path_and_contents(afc_client_t client, const char *path);
347 347
348/* Helper functions */ 348/* Helper functions */
349 349
@@ -358,7 +358,7 @@ afc_error_t afc_remove_path_and_contents(afc_client_t client, const char *path);
358 * 358 *
359 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 359 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
360 */ 360 */
361afc_error_t afc_get_device_info_key(afc_client_t client, const char *key, char **value); 361LIBIMOBILEDEVICE_API afc_error_t afc_get_device_info_key(afc_client_t client, const char *key, char **value);
362 362
363/** 363/**
364 * Frees up a char dictionary as returned by some AFC functions. 364 * Frees up a char dictionary as returned by some AFC functions.
@@ -367,7 +367,7 @@ afc_error_t afc_get_device_info_key(afc_client_t client, const char *key, char *
367 * 367 *
368 * @return AFC_E_SUCCESS on success or an AFC_E_* error value. 368 * @return AFC_E_SUCCESS on success or an AFC_E_* error value.
369 */ 369 */
370afc_error_t afc_dictionary_free(char **dictionary); 370LIBIMOBILEDEVICE_API afc_error_t afc_dictionary_free(char **dictionary);
371 371
372#ifdef __cplusplus 372#ifdef __cplusplus
373} 373}
diff --git a/include/libimobiledevice/bt_packet_logger.h b/include/libimobiledevice/bt_packet_logger.h
index 230040a..590e5c1 100644
--- a/include/libimobiledevice/bt_packet_logger.h
+++ b/include/libimobiledevice/bt_packet_logger.h
@@ -70,7 +70,7 @@ typedef void (*bt_packet_logger_receive_cb_t)(uint8_t * data, uint16_t len, void
70 * @return BT_PACKET_LOGGER_E_SUCCESS on success, BT_PACKET_LOGGER_E_INVALID_ARG when 70 * @return BT_PACKET_LOGGER_E_SUCCESS on success, BT_PACKET_LOGGER_E_INVALID_ARG when
71 * client is NULL, or an BT_PACKET_LOGGER_E_* error code otherwise. 71 * client is NULL, or an BT_PACKET_LOGGER_E_* error code otherwise.
72 */ 72 */
73bt_packet_logger_error_t bt_packet_logger_client_new(idevice_t device, lockdownd_service_descriptor_t service, bt_packet_logger_client_t * client); 73LIBIMOBILEDEVICE_API bt_packet_logger_error_t bt_packet_logger_client_new(idevice_t device, lockdownd_service_descriptor_t service, bt_packet_logger_client_t * client);
74 74
75/** 75/**
76 * Starts a new bt_packet_logger service on the specified device and connects to it. 76 * Starts a new bt_packet_logger service on the specified device and connects to it.
@@ -85,7 +85,7 @@ bt_packet_logger_error_t bt_packet_logger_client_new(idevice_t device, lockdownd
85 * @return BT_PACKET_LOGGER_E_SUCCESS on success, or an BT_PACKET_LOGGER_E_* error 85 * @return BT_PACKET_LOGGER_E_SUCCESS on success, or an BT_PACKET_LOGGER_E_* error
86 * code otherwise. 86 * code otherwise.
87 */ 87 */
88bt_packet_logger_error_t bt_packet_logger_client_start_service(idevice_t device, bt_packet_logger_client_t * client, const char* label); 88LIBIMOBILEDEVICE_API bt_packet_logger_error_t bt_packet_logger_client_start_service(idevice_t device, bt_packet_logger_client_t * client, const char* label);
89 89
90/** 90/**
91 * Disconnects a bt_packet_logger client from the device and frees up the 91 * Disconnects a bt_packet_logger client from the device and frees up the
@@ -96,7 +96,7 @@ bt_packet_logger_error_t bt_packet_logger_client_start_service(idevice_t device,
96 * @return BT_PACKET_LOGGER_E_SUCCESS on success, BT_PACKET_LOGGER_E_INVALID_ARG when 96 * @return BT_PACKET_LOGGER_E_SUCCESS on success, BT_PACKET_LOGGER_E_INVALID_ARG when
97 * client is NULL, or an BT_PACKET_LOGGER_E_* error code otherwise. 97 * client is NULL, or an BT_PACKET_LOGGER_E_* error code otherwise.
98 */ 98 */
99bt_packet_logger_error_t bt_packet_logger_client_free(bt_packet_logger_client_t client); 99LIBIMOBILEDEVICE_API bt_packet_logger_error_t bt_packet_logger_client_free(bt_packet_logger_client_t client);
100 100
101 101
102/** 102/**
@@ -113,7 +113,7 @@ bt_packet_logger_error_t bt_packet_logger_client_free(bt_packet_logger_client_t
113 * invalid or BT_PACKET_LOGGER_E_UNKNOWN_ERROR when an unspecified 113 * invalid or BT_PACKET_LOGGER_E_UNKNOWN_ERROR when an unspecified
114 * error occurs or an hci capture has already been started. 114 * error occurs or an hci capture has already been started.
115 */ 115 */
116bt_packet_logger_error_t bt_packet_logger_start_capture(bt_packet_logger_client_t client, bt_packet_logger_receive_cb_t callback, void* user_data); 116LIBIMOBILEDEVICE_API bt_packet_logger_error_t bt_packet_logger_start_capture(bt_packet_logger_client_t client, bt_packet_logger_receive_cb_t callback, void* user_data);
117 117
118/** 118/**
119 * Stops capturing the hci interface from the device. 119 * Stops capturing the hci interface from the device.
@@ -127,7 +127,7 @@ bt_packet_logger_error_t bt_packet_logger_start_capture(bt_packet_logger_client_
127 * invalid or BT_PACKET_LOGGER_E_UNKNOWN_ERROR when an unspecified 127 * invalid or BT_PACKET_LOGGER_E_UNKNOWN_ERROR when an unspecified
128 * error occurs or an hci capture has already been started. 128 * error occurs or an hci capture has already been started.
129 */ 129 */
130bt_packet_logger_error_t bt_packet_logger_stop_capture(bt_packet_logger_client_t client); 130LIBIMOBILEDEVICE_API bt_packet_logger_error_t bt_packet_logger_stop_capture(bt_packet_logger_client_t client);
131 131
132/* Receiving */ 132/* Receiving */
133 133
@@ -146,7 +146,7 @@ bt_packet_logger_error_t bt_packet_logger_stop_capture(bt_packet_logger_client_t
146 * occurs, or BT_PACKET_LOGGER_E_UNKNOWN_ERROR when an unspecified 146 * occurs, or BT_PACKET_LOGGER_E_UNKNOWN_ERROR when an unspecified
147 * error occurs. 147 * error occurs.
148 */ 148 */
149bt_packet_logger_error_t bt_packet_logger_receive_with_timeout(bt_packet_logger_client_t client, char *data, uint32_t size, uint32_t *received, unsigned int timeout); 149LIBIMOBILEDEVICE_API bt_packet_logger_error_t bt_packet_logger_receive_with_timeout(bt_packet_logger_client_t client, char *data, uint32_t size, uint32_t *received, unsigned int timeout);
150 150
151 151
152#ifdef __cplusplus 152#ifdef __cplusplus
diff --git a/include/libimobiledevice/companion_proxy.h b/include/libimobiledevice/companion_proxy.h
index d786766..544322a 100644
--- a/include/libimobiledevice/companion_proxy.h
+++ b/include/libimobiledevice/companion_proxy.h
@@ -67,7 +67,7 @@ typedef void (*companion_proxy_device_event_cb_t) (plist_t event, void* userdata
67 * @return COMPANION_PROXY_E_SUCCESS on success, COMPANION_PROXY_E_INVALID_ARG when 67 * @return COMPANION_PROXY_E_SUCCESS on success, COMPANION_PROXY_E_INVALID_ARG when
68 * the arguments are invalid, or an COMPANION_PROXY_E_* error code otherwise. 68 * the arguments are invalid, or an COMPANION_PROXY_E_* error code otherwise.
69 */ 69 */
70companion_proxy_error_t companion_proxy_client_new(idevice_t device, lockdownd_service_descriptor_t service, companion_proxy_client_t* client); 70LIBIMOBILEDEVICE_API companion_proxy_error_t companion_proxy_client_new(idevice_t device, lockdownd_service_descriptor_t service, companion_proxy_client_t* client);
71 71
72/** 72/**
73 * Starts a new companion_proxy service on the specified device and connects to it. 73 * Starts a new companion_proxy service on the specified device and connects to it.
@@ -82,7 +82,7 @@ companion_proxy_error_t companion_proxy_client_new(idevice_t device, lockdownd_s
82 * @return COMPANION_PROXY_E_SUCCESS on success, or an COMPANION_PROXY_E_* error 82 * @return COMPANION_PROXY_E_SUCCESS on success, or an COMPANION_PROXY_E_* error
83 * code otherwise. 83 * code otherwise.
84 */ 84 */
85companion_proxy_error_t companion_proxy_client_start_service(idevice_t device, companion_proxy_client_t* client, const char* label); 85LIBIMOBILEDEVICE_API companion_proxy_error_t companion_proxy_client_start_service(idevice_t device, companion_proxy_client_t* client, const char* label);
86 86
87/** 87/**
88 * Disconnects a companion_proxy client from the device and frees up the 88 * Disconnects a companion_proxy client from the device and frees up the
@@ -93,7 +93,7 @@ companion_proxy_error_t companion_proxy_client_start_service(idevice_t device, c
93 * @return COMPANION_PROXY_E_SUCCESS on success, COMPANION_PROXY_E_INVALID_ARG when 93 * @return COMPANION_PROXY_E_SUCCESS on success, COMPANION_PROXY_E_INVALID_ARG when
94 * client is NULL, or an COMPANION_PROXY_E_* error code otherwise. 94 * client is NULL, or an COMPANION_PROXY_E_* error code otherwise.
95 */ 95 */
96companion_proxy_error_t companion_proxy_client_free(companion_proxy_client_t client); 96LIBIMOBILEDEVICE_API companion_proxy_error_t companion_proxy_client_free(companion_proxy_client_t client);
97 97
98/** 98/**
99 * Sends a plist to the service. 99 * Sends a plist to the service.
@@ -104,7 +104,7 @@ companion_proxy_error_t companion_proxy_client_free(companion_proxy_client_t cli
104 * @return COMPANION_PROXY_E_SUCCESS on success, 104 * @return COMPANION_PROXY_E_SUCCESS on success,
105 * COMPANION_PROXY_E_INVALID_ARG when client or plist is NULL 105 * COMPANION_PROXY_E_INVALID_ARG when client or plist is NULL
106 */ 106 */
107companion_proxy_error_t companion_proxy_send(companion_proxy_client_t client, plist_t plist); 107LIBIMOBILEDEVICE_API companion_proxy_error_t companion_proxy_send(companion_proxy_client_t client, plist_t plist);
108 108
109/** 109/**
110 * Receives a plist from the service. 110 * Receives a plist from the service.
@@ -115,7 +115,7 @@ companion_proxy_error_t companion_proxy_send(companion_proxy_client_t client, pl
115 * @return COMPANION_PROXY_E_SUCCESS on success, 115 * @return COMPANION_PROXY_E_SUCCESS on success,
116 * COMPANION_PROXY_E_INVALID_ARG when client or plist is NULL 116 * COMPANION_PROXY_E_INVALID_ARG when client or plist is NULL
117 */ 117 */
118companion_proxy_error_t companion_proxy_receive(companion_proxy_client_t client, plist_t * plist); 118LIBIMOBILEDEVICE_API companion_proxy_error_t companion_proxy_receive(companion_proxy_client_t client, plist_t * plist);
119 119
120/** 120/**
121 * Retrieves a list of paired devices. 121 * Retrieves a list of paired devices.
@@ -129,7 +129,7 @@ companion_proxy_error_t companion_proxy_receive(companion_proxy_client_t client,
129 * COMPANION_PROXY_E_NO_DEVICES if no devices are paired, 129 * COMPANION_PROXY_E_NO_DEVICES if no devices are paired,
130 * or a COMPANION_PROXY_E_* error code otherwise. 130 * or a COMPANION_PROXY_E_* error code otherwise.
131 */ 131 */
132companion_proxy_error_t companion_proxy_get_device_registry(companion_proxy_client_t client, plist_t* paired_devices); 132LIBIMOBILEDEVICE_API companion_proxy_error_t companion_proxy_get_device_registry(companion_proxy_client_t client, plist_t* paired_devices);
133 133
134/** 134/**
135 * Starts listening for paired devices. 135 * Starts listening for paired devices.
@@ -145,7 +145,7 @@ companion_proxy_error_t companion_proxy_get_device_registry(companion_proxy_clie
145 * @return COMPANION_PROXY_E_SUCCESS on success, 145 * @return COMPANION_PROXY_E_SUCCESS on success,
146 * or a COMPANION_PROXY_E_* error code otherwise. 146 * or a COMPANION_PROXY_E_* error code otherwise.
147 */ 147 */
148companion_proxy_error_t companion_proxy_start_listening_for_devices(companion_proxy_client_t client, companion_proxy_device_event_cb_t callback, void* userdata); 148LIBIMOBILEDEVICE_API companion_proxy_error_t companion_proxy_start_listening_for_devices(companion_proxy_client_t client, companion_proxy_device_event_cb_t callback, void* userdata);
149 149
150/** 150/**
151 * Stops listening for paired devices 151 * Stops listening for paired devices
@@ -155,7 +155,7 @@ companion_proxy_error_t companion_proxy_start_listening_for_devices(companion_pr
155 * @return COMPANION_PROXY_E_SUCCESS on success, 155 * @return COMPANION_PROXY_E_SUCCESS on success,
156 * or a COMPANION_PROXY_E_* error code otherwise. 156 * or a COMPANION_PROXY_E_* error code otherwise.
157 */ 157 */
158companion_proxy_error_t companion_proxy_stop_listening_for_devices(companion_proxy_client_t client); 158LIBIMOBILEDEVICE_API companion_proxy_error_t companion_proxy_stop_listening_for_devices(companion_proxy_client_t client);
159 159
160/** 160/**
161 * Returns a value for the given key. 161 * Returns a value for the given key.
@@ -173,7 +173,7 @@ companion_proxy_error_t companion_proxy_stop_listening_for_devices(companion_pro
173 * COMPANION_PROXY_E_UNSUPPORTED_KEY if the companion device doesn't support the given key, 173 * COMPANION_PROXY_E_UNSUPPORTED_KEY if the companion device doesn't support the given key,
174 * or a COMPANION_PROXY_E_* error code otherwise. 174 * or a COMPANION_PROXY_E_* error code otherwise.
175 */ 175 */
176companion_proxy_error_t companion_proxy_get_value_from_registry(companion_proxy_client_t client, const char* companion_udid, const char* key, plist_t* value); 176LIBIMOBILEDEVICE_API companion_proxy_error_t companion_proxy_get_value_from_registry(companion_proxy_client_t client, const char* companion_udid, const char* key, plist_t* value);
177 177
178/** 178/**
179 * Start forwarding a service port on the companion device to a port on the idevice. 179 * Start forwarding a service port on the companion device to a port on the idevice.
@@ -190,7 +190,7 @@ companion_proxy_error_t companion_proxy_get_value_from_registry(companion_proxy_
190 * @return COMPANION_PROXY_E_SUCCESS on success, 190 * @return COMPANION_PROXY_E_SUCCESS on success,
191 * or a COMPANION_PROXY_E_* error code otherwise. 191 * or a COMPANION_PROXY_E_* error code otherwise.
192 */ 192 */
193companion_proxy_error_t companion_proxy_start_forwarding_service_port(companion_proxy_client_t client, uint16_t remote_port, const char* service_name, uint16_t* forward_port, plist_t options); 193LIBIMOBILEDEVICE_API companion_proxy_error_t companion_proxy_start_forwarding_service_port(companion_proxy_client_t client, uint16_t remote_port, const char* service_name, uint16_t* forward_port, plist_t options);
194 194
195/** 195/**
196 * Stop forwarding a service port between companion device and idevice. 196 * Stop forwarding a service port between companion device and idevice.
@@ -203,7 +203,7 @@ companion_proxy_error_t companion_proxy_start_forwarding_service_port(companion_
203 * @return COMPANION_PROXY_E_SUCCESS on success, 203 * @return COMPANION_PROXY_E_SUCCESS on success,
204 * or a COMPANION_PROXY_E_* error code otherwise. 204 * or a COMPANION_PROXY_E_* error code otherwise.
205 */ 205 */
206companion_proxy_error_t companion_proxy_stop_forwarding_service_port(companion_proxy_client_t client, uint16_t remote_port); 206LIBIMOBILEDEVICE_API companion_proxy_error_t companion_proxy_stop_forwarding_service_port(companion_proxy_client_t client, uint16_t remote_port);
207 207
208#ifdef __cplusplus 208#ifdef __cplusplus
209} 209}
diff --git a/include/libimobiledevice/debugserver.h b/include/libimobiledevice/debugserver.h
index eaa7c48..809b97f 100644
--- a/include/libimobiledevice/debugserver.h
+++ b/include/libimobiledevice/debugserver.h
@@ -66,7 +66,7 @@ typedef debugserver_command_private *debugserver_command_t; /**< The command han
66 * @return DEBUGSERVER_E_SUCCESS on success, DEBUGSERVER_E_INVALID_ARG when 66 * @return DEBUGSERVER_E_SUCCESS on success, DEBUGSERVER_E_INVALID_ARG when
67 * client is NULL, or an DEBUGSERVER_E_* error code otherwise. 67 * client is NULL, or an DEBUGSERVER_E_* error code otherwise.
68 */ 68 */
69debugserver_error_t debugserver_client_new(idevice_t device, lockdownd_service_descriptor_t service, debugserver_client_t * client); 69LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_new(idevice_t device, lockdownd_service_descriptor_t service, debugserver_client_t * client);
70 70
71/** 71/**
72 * Starts a new debugserver service on the specified device and connects to it. 72 * Starts a new debugserver service on the specified device and connects to it.
@@ -81,7 +81,7 @@ debugserver_error_t debugserver_client_new(idevice_t device, lockdownd_service_d
81 * @return DEBUGSERVER_E_SUCCESS on success, or an DEBUGSERVER_E_* error 81 * @return DEBUGSERVER_E_SUCCESS on success, or an DEBUGSERVER_E_* error
82 * code otherwise. 82 * code otherwise.
83 */ 83 */
84debugserver_error_t debugserver_client_start_service(idevice_t device, debugserver_client_t * client, const char* label); 84LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_start_service(idevice_t device, debugserver_client_t * client, const char* label);
85 85
86/** 86/**
87 * Disconnects a debugserver client from the device and frees up the 87 * Disconnects a debugserver client from the device and frees up the
@@ -92,7 +92,7 @@ debugserver_error_t debugserver_client_start_service(idevice_t device, debugserv
92 * @return DEBUGSERVER_E_SUCCESS on success, DEBUGSERVER_E_INVALID_ARG when 92 * @return DEBUGSERVER_E_SUCCESS on success, DEBUGSERVER_E_INVALID_ARG when
93 * client is NULL, or an DEBUGSERVER_E_* error code otherwise. 93 * client is NULL, or an DEBUGSERVER_E_* error code otherwise.
94 */ 94 */
95debugserver_error_t debugserver_client_free(debugserver_client_t client); 95LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_free(debugserver_client_t client);
96 96
97/** 97/**
98 * Sends raw data using the given debugserver service client. 98 * Sends raw data using the given debugserver service client.
@@ -107,7 +107,7 @@ debugserver_error_t debugserver_client_free(debugserver_client_t client);
107 * invalid, or DEBUGSERVER_E_UNKNOWN_ERROR when an unspecified 107 * invalid, or DEBUGSERVER_E_UNKNOWN_ERROR when an unspecified
108 * error occurs. 108 * error occurs.
109 */ 109 */
110debugserver_error_t debugserver_client_send(debugserver_client_t client, const char* data, uint32_t size, uint32_t *sent); 110LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_send(debugserver_client_t client, const char* data, uint32_t size, uint32_t *sent);
111 111
112/** 112/**
113 * Receives raw data using the given debugserver client with specified timeout. 113 * Receives raw data using the given debugserver client with specified timeout.
@@ -125,7 +125,7 @@ debugserver_error_t debugserver_client_send(debugserver_client_t client, const c
125 * or DEBUGSERVER_E_UNKNOWN_ERROR when an unspecified 125 * or DEBUGSERVER_E_UNKNOWN_ERROR when an unspecified
126 * error occurs. 126 * error occurs.
127 */ 127 */
128debugserver_error_t debugserver_client_receive_with_timeout(debugserver_client_t client, char *data, uint32_t size, uint32_t *received, unsigned int timeout); 128LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_receive_with_timeout(debugserver_client_t client, char *data, uint32_t size, uint32_t *received, unsigned int timeout);
129 129
130/** 130/**
131 * Receives raw data from the debugserver service. 131 * Receives raw data from the debugserver service.
@@ -139,7 +139,7 @@ debugserver_error_t debugserver_client_receive_with_timeout(debugserver_client_t
139 * @return DEBUGSERVER_E_SUCCESS on success, 139 * @return DEBUGSERVER_E_SUCCESS on success,
140 * DEBUGSERVER_E_INVALID_ARG when client or plist is NULL 140 * DEBUGSERVER_E_INVALID_ARG when client or plist is NULL
141 */ 141 */
142debugserver_error_t debugserver_client_receive(debugserver_client_t client, char *data, uint32_t size, uint32_t *received); 142LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_receive(debugserver_client_t client, char *data, uint32_t size, uint32_t *received);
143 143
144/** 144/**
145 * Sends a command to the debugserver service. 145 * Sends a command to the debugserver service.
@@ -152,7 +152,7 @@ debugserver_error_t debugserver_client_receive(debugserver_client_t client, char
152 * @return DEBUGSERVER_E_SUCCESS on success, 152 * @return DEBUGSERVER_E_SUCCESS on success,
153 * DEBUGSERVER_E_INVALID_ARG when client or command is NULL 153 * DEBUGSERVER_E_INVALID_ARG when client or command is NULL
154 */ 154 */
155debugserver_error_t debugserver_client_send_command(debugserver_client_t client, debugserver_command_t command, char** response, size_t* response_size); 155LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_send_command(debugserver_client_t client, debugserver_command_t command, char** response, size_t* response_size);
156 156
157/** 157/**
158 * Receives and parses response of debugserver service. 158 * Receives and parses response of debugserver service.
@@ -164,7 +164,7 @@ debugserver_error_t debugserver_client_send_command(debugserver_client_t client,
164 * @return DEBUGSERVER_E_SUCCESS on success, 164 * @return DEBUGSERVER_E_SUCCESS on success,
165 * DEBUGSERVER_E_INVALID_ARG when client is NULL 165 * DEBUGSERVER_E_INVALID_ARG when client is NULL
166 */ 166 */
167debugserver_error_t debugserver_client_receive_response(debugserver_client_t client, char** response, size_t* response_size); 167LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_receive_response(debugserver_client_t client, char** response, size_t* response_size);
168 168
169/** 169/**
170 * Controls status of ACK mode when sending commands or receiving responses. 170 * Controls status of ACK mode when sending commands or receiving responses.
@@ -178,7 +178,7 @@ debugserver_error_t debugserver_client_receive_response(debugserver_client_t cli
178 * @return DEBUGSERVER_E_SUCCESS on success, or an DEBUGSERVER_E_* error 178 * @return DEBUGSERVER_E_SUCCESS on success, or an DEBUGSERVER_E_* error
179 * code otherwise. 179 * code otherwise.
180 */ 180 */
181debugserver_error_t debugserver_client_set_ack_mode(debugserver_client_t client, int enabled); 181LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_set_ack_mode(debugserver_client_t client, int enabled);
182 182
183/** 183/**
184 * Sets behavior when awaiting a response from the server. 184 * Sets behavior when awaiting a response from the server.
@@ -197,7 +197,7 @@ debugserver_error_t debugserver_client_set_ack_mode(debugserver_client_t client,
197 * @return DEBUGSERVER_E_SUCCESS on success, or an DEBUGSERVER_E_* error 197 * @return DEBUGSERVER_E_SUCCESS on success, or an DEBUGSERVER_E_* error
198 * code otherwise. 198 * code otherwise.
199 */ 199 */
200debugserver_error_t debugserver_client_set_receive_params(debugserver_client_t client, int (*cancel_receive)(), int receive_loop_timeout); 200LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_set_receive_params(debugserver_client_t client, int (*cancel_receive)(), int receive_loop_timeout);
201 201
202/** 202/**
203 * Sets the argv which launches an app. 203 * Sets the argv which launches an app.
@@ -210,7 +210,7 @@ debugserver_error_t debugserver_client_set_receive_params(debugserver_client_t c
210 * @return DEBUGSERVER_E_SUCCESS on success, 210 * @return DEBUGSERVER_E_SUCCESS on success,
211 * DEBUGSERVER_E_INVALID_ARG when client is NULL 211 * DEBUGSERVER_E_INVALID_ARG when client is NULL
212 */ 212 */
213debugserver_error_t debugserver_client_set_argv(debugserver_client_t client, int argc, char* argv[], char** response); 213LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_set_argv(debugserver_client_t client, int argc, char* argv[], char** response);
214 214
215/** 215/**
216 * Adds or sets an environment variable. 216 * Adds or sets an environment variable.
@@ -222,7 +222,7 @@ debugserver_error_t debugserver_client_set_argv(debugserver_client_t client, int
222 * @return DEBUGSERVER_E_SUCCESS on success, 222 * @return DEBUGSERVER_E_SUCCESS on success,
223 * DEBUGSERVER_E_INVALID_ARG when client is NULL 223 * DEBUGSERVER_E_INVALID_ARG when client is NULL
224 */ 224 */
225debugserver_error_t debugserver_client_set_environment_hex_encoded(debugserver_client_t client, const char* env, char** response); 225LIBIMOBILEDEVICE_API debugserver_error_t debugserver_client_set_environment_hex_encoded(debugserver_client_t client, const char* env, char** response);
226 226
227/** 227/**
228 * Creates and initializes a new command object. 228 * Creates and initializes a new command object.
@@ -235,7 +235,7 @@ debugserver_error_t debugserver_client_set_environment_hex_encoded(debugserver_c
235 * @return DEBUGSERVER_E_SUCCESS on success, 235 * @return DEBUGSERVER_E_SUCCESS on success,
236 * DEBUGSERVER_E_INVALID_ARG when name or command is NULL 236 * DEBUGSERVER_E_INVALID_ARG when name or command is NULL
237 */ 237 */
238debugserver_error_t debugserver_command_new(const char* name, int argc, char* argv[], debugserver_command_t* command); 238LIBIMOBILEDEVICE_API debugserver_error_t debugserver_command_new(const char* name, int argc, char* argv[], debugserver_command_t* command);
239 239
240/** 240/**
241 * Frees memory of command object. 241 * Frees memory of command object.
@@ -245,7 +245,7 @@ debugserver_error_t debugserver_command_new(const char* name, int argc, char* ar
245 * @return DEBUGSERVER_E_SUCCESS on success, 245 * @return DEBUGSERVER_E_SUCCESS on success,
246 * DEBUGSERVER_E_INVALID_ARG when command is NULL 246 * DEBUGSERVER_E_INVALID_ARG when command is NULL
247 */ 247 */
248debugserver_error_t debugserver_command_free(debugserver_command_t command); 248LIBIMOBILEDEVICE_API debugserver_error_t debugserver_command_free(debugserver_command_t command);
249 249
250/** 250/**
251 * Encodes a string into hex notation. 251 * Encodes a string into hex notation.
@@ -254,7 +254,7 @@ debugserver_error_t debugserver_command_free(debugserver_command_t command);
254 * @param encoded_buffer The buffer receives a hex encoded string 254 * @param encoded_buffer The buffer receives a hex encoded string
255 * @param encoded_length Length of the hex encoded string 255 * @param encoded_length Length of the hex encoded string
256 */ 256 */
257void debugserver_encode_string(const char* buffer, char** encoded_buffer, uint32_t* encoded_length); 257LIBIMOBILEDEVICE_API void debugserver_encode_string(const char* buffer, char** encoded_buffer, uint32_t* encoded_length);
258 258
259/** 259/**
260 * Decodes a hex encoded string. 260 * Decodes a hex encoded string.
@@ -263,7 +263,7 @@ void debugserver_encode_string(const char* buffer, char** encoded_buffer, uint32
263 * @param encoded_length Length of the encoded buffer 263 * @param encoded_length Length of the encoded buffer
264 * @param buffer Decoded string to be freed by the caller 264 * @param buffer Decoded string to be freed by the caller
265 */ 265 */
266void debugserver_decode_string(const char *encoded_buffer, size_t encoded_length, char** buffer); 266LIBIMOBILEDEVICE_API void debugserver_decode_string(const char *encoded_buffer, size_t encoded_length, char** buffer);
267 267
268#ifdef __cplusplus 268#ifdef __cplusplus
269} 269}
diff --git a/include/libimobiledevice/diagnostics_relay.h b/include/libimobiledevice/diagnostics_relay.h
index f80a86b..6ab47a9 100644
--- a/include/libimobiledevice/diagnostics_relay.h
+++ b/include/libimobiledevice/diagnostics_relay.h
@@ -70,7 +70,7 @@ typedef diagnostics_relay_client_private *diagnostics_relay_client_t; /**< The c
70 * DIAGNOSTICS_RELAY_E_INVALID_ARG when one of the parameters is invalid, 70 * DIAGNOSTICS_RELAY_E_INVALID_ARG when one of the parameters is invalid,
71 * or DIAGNOSTICS_RELAY_E_MUX_ERROR when the connection failed. 71 * or DIAGNOSTICS_RELAY_E_MUX_ERROR when the connection failed.
72 */ 72 */
73diagnostics_relay_error_t diagnostics_relay_client_new(idevice_t device, lockdownd_service_descriptor_t service, diagnostics_relay_client_t *client); 73LIBIMOBILEDEVICE_API diagnostics_relay_error_t diagnostics_relay_client_new(idevice_t device, lockdownd_service_descriptor_t service, diagnostics_relay_client_t *client);
74 74
75/** 75/**
76 * Starts a new diagnostics_relay service on the specified device and connects to it. 76 * Starts a new diagnostics_relay service on the specified device and connects to it.
@@ -85,7 +85,7 @@ diagnostics_relay_error_t diagnostics_relay_client_new(idevice_t device, lockdow
85 * @return DIAGNOSTICS_RELAY_E_SUCCESS on success, or an DIAGNOSTICS_RELAY_E_* error 85 * @return DIAGNOSTICS_RELAY_E_SUCCESS on success, or an DIAGNOSTICS_RELAY_E_* error
86 * code otherwise. 86 * code otherwise.
87 */ 87 */
88diagnostics_relay_error_t diagnostics_relay_client_start_service(idevice_t device, diagnostics_relay_client_t* client, const char* label); 88LIBIMOBILEDEVICE_API diagnostics_relay_error_t diagnostics_relay_client_start_service(idevice_t device, diagnostics_relay_client_t* client, const char* label);
89 89
90/** 90/**
91 * Disconnects a diagnostics_relay client from the device and frees up the 91 * Disconnects a diagnostics_relay client from the device and frees up the
@@ -98,7 +98,7 @@ diagnostics_relay_error_t diagnostics_relay_client_start_service(idevice_t devic
98 * is invalid, or DIAGNOSTICS_RELAY_E_UNKNOWN_ERROR when the was an 98 * is invalid, or DIAGNOSTICS_RELAY_E_UNKNOWN_ERROR when the was an
99 * error freeing the parent property_list_service client. 99 * error freeing the parent property_list_service client.
100 */ 100 */
101diagnostics_relay_error_t diagnostics_relay_client_free(diagnostics_relay_client_t client); 101LIBIMOBILEDEVICE_API diagnostics_relay_error_t diagnostics_relay_client_free(diagnostics_relay_client_t client);
102 102
103 103
104/** 104/**
@@ -111,7 +111,7 @@ diagnostics_relay_error_t diagnostics_relay_client_free(diagnostics_relay_client
111 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the 111 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the
112 * request 112 * request
113 */ 113 */
114diagnostics_relay_error_t diagnostics_relay_goodbye(diagnostics_relay_client_t client); 114LIBIMOBILEDEVICE_API diagnostics_relay_error_t diagnostics_relay_goodbye(diagnostics_relay_client_t client);
115 115
116/** 116/**
117 * Puts the device into deep sleep mode and disconnects from host. 117 * Puts the device into deep sleep mode and disconnects from host.
@@ -123,7 +123,7 @@ diagnostics_relay_error_t diagnostics_relay_goodbye(diagnostics_relay_client_t c
123 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the 123 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the
124 * request 124 * request
125 */ 125 */
126diagnostics_relay_error_t diagnostics_relay_sleep(diagnostics_relay_client_t client); 126LIBIMOBILEDEVICE_API diagnostics_relay_error_t diagnostics_relay_sleep(diagnostics_relay_client_t client);
127 127
128/** 128/**
129 * Restart the device and optionally show a user notification. 129 * Restart the device and optionally show a user notification.
@@ -140,7 +140,7 @@ diagnostics_relay_error_t diagnostics_relay_sleep(diagnostics_relay_client_t cli
140 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the 140 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the
141 * request 141 * request
142 */ 142 */
143diagnostics_relay_error_t diagnostics_relay_restart(diagnostics_relay_client_t client, diagnostics_relay_action_t flags); 143LIBIMOBILEDEVICE_API diagnostics_relay_error_t diagnostics_relay_restart(diagnostics_relay_client_t client, diagnostics_relay_action_t flags);
144 144
145/** 145/**
146 * Shutdown of the device and optionally show a user notification. 146 * Shutdown of the device and optionally show a user notification.
@@ -157,7 +157,7 @@ diagnostics_relay_error_t diagnostics_relay_restart(diagnostics_relay_client_t c
157 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the 157 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the
158 * request 158 * request
159 */ 159 */
160diagnostics_relay_error_t diagnostics_relay_shutdown(diagnostics_relay_client_t client, diagnostics_relay_action_t flags); 160LIBIMOBILEDEVICE_API diagnostics_relay_error_t diagnostics_relay_shutdown(diagnostics_relay_client_t client, diagnostics_relay_action_t flags);
161 161
162/** 162/**
163 * Request diagnostics information for a given type. 163 * Request diagnostics information for a given type.
@@ -173,7 +173,7 @@ diagnostics_relay_error_t diagnostics_relay_shutdown(diagnostics_relay_client_t
173 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the 173 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the
174 * request 174 * request
175 */ 175 */
176diagnostics_relay_error_t diagnostics_relay_request_diagnostics(diagnostics_relay_client_t client, const char* type, plist_t* diagnostics); 176LIBIMOBILEDEVICE_API diagnostics_relay_error_t diagnostics_relay_request_diagnostics(diagnostics_relay_client_t client, const char* type, plist_t* diagnostics);
177 177
178/** 178/**
179 * Query one or multiple MobileGestalt keys. 179 * Query one or multiple MobileGestalt keys.
@@ -188,7 +188,7 @@ diagnostics_relay_error_t diagnostics_relay_request_diagnostics(diagnostics_rela
188 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the 188 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the
189 * request 189 * request
190 */ 190 */
191diagnostics_relay_error_t diagnostics_relay_query_mobilegestalt(diagnostics_relay_client_t client, plist_t keys, plist_t* result); 191LIBIMOBILEDEVICE_API diagnostics_relay_error_t diagnostics_relay_query_mobilegestalt(diagnostics_relay_client_t client, plist_t keys, plist_t* result);
192 192
193/** 193/**
194 * Query an IORegistry entry of a given class. 194 * Query an IORegistry entry of a given class.
@@ -204,7 +204,7 @@ diagnostics_relay_error_t diagnostics_relay_query_mobilegestalt(diagnostics_rela
204 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the 204 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the
205 * request 205 * request
206 */ 206 */
207diagnostics_relay_error_t diagnostics_relay_query_ioregistry_entry(diagnostics_relay_client_t client, const char* entry_name, const char* entry_class, plist_t* result); 207LIBIMOBILEDEVICE_API diagnostics_relay_error_t diagnostics_relay_query_ioregistry_entry(diagnostics_relay_client_t client, const char* entry_name, const char* entry_class, plist_t* result);
208 208
209/** 209/**
210 * Query an IORegistry plane. 210 * Query an IORegistry plane.
@@ -219,7 +219,7 @@ diagnostics_relay_error_t diagnostics_relay_query_ioregistry_entry(diagnostics_r
219 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the 219 * DIAGNOSTICS_RELAY_E_PLIST_ERROR if the device did not acknowledge the
220 * request 220 * request
221 */ 221 */
222diagnostics_relay_error_t diagnostics_relay_query_ioregistry_plane(diagnostics_relay_client_t client, const char* plane, plist_t* result); 222LIBIMOBILEDEVICE_API diagnostics_relay_error_t diagnostics_relay_query_ioregistry_plane(diagnostics_relay_client_t client, const char* plane, plist_t* result);
223 223
224#ifdef __cplusplus 224#ifdef __cplusplus
225} 225}
diff --git a/include/libimobiledevice/file_relay.h b/include/libimobiledevice/file_relay.h
index 6b30e65..00773b8 100644
--- a/include/libimobiledevice/file_relay.h
+++ b/include/libimobiledevice/file_relay.h
@@ -62,7 +62,7 @@ typedef file_relay_client_private *file_relay_client_t; /**< The client handle.
62 * FILE_RELAY_E_INVALID_ARG when one of the parameters is invalid, 62 * FILE_RELAY_E_INVALID_ARG when one of the parameters is invalid,
63 * or FILE_RELAY_E_MUX_ERROR when the connection failed. 63 * or FILE_RELAY_E_MUX_ERROR when the connection failed.
64 */ 64 */
65file_relay_error_t file_relay_client_new(idevice_t device, lockdownd_service_descriptor_t service, file_relay_client_t *client); 65LIBIMOBILEDEVICE_API file_relay_error_t file_relay_client_new(idevice_t device, lockdownd_service_descriptor_t service, file_relay_client_t *client);
66 66
67/** 67/**
68 * Starts a new file_relay service on the specified device and connects to it. 68 * Starts a new file_relay service on the specified device and connects to it.
@@ -77,7 +77,7 @@ file_relay_error_t file_relay_client_new(idevice_t device, lockdownd_service_des
77 * @return FILE_RELAY_E_SUCCESS on success, or an FILE_RELAY_E_* error 77 * @return FILE_RELAY_E_SUCCESS on success, or an FILE_RELAY_E_* error
78 * code otherwise. 78 * code otherwise.
79 */ 79 */
80file_relay_error_t file_relay_client_start_service(idevice_t device, file_relay_client_t* client, const char* label); 80LIBIMOBILEDEVICE_API file_relay_error_t file_relay_client_start_service(idevice_t device, file_relay_client_t* client, const char* label);
81 81
82/** 82/**
83 * Disconnects a file_relay client from the device and frees up the file_relay 83 * Disconnects a file_relay client from the device and frees up the file_relay
@@ -90,7 +90,7 @@ file_relay_error_t file_relay_client_start_service(idevice_t device, file_relay_
90 * is invalid, or FILE_RELAY_E_UNKNOWN_ERROR when the was an error 90 * is invalid, or FILE_RELAY_E_UNKNOWN_ERROR when the was an error
91 * freeing the parent property_list_service client. 91 * freeing the parent property_list_service client.
92 */ 92 */
93file_relay_error_t file_relay_client_free(file_relay_client_t client); 93LIBIMOBILEDEVICE_API file_relay_error_t file_relay_client_free(file_relay_client_t client);
94 94
95 95
96/** 96/**
@@ -123,7 +123,7 @@ file_relay_error_t file_relay_client_free(file_relay_client_t client);
123 * sources are invalid, FILE_RELAY_E_STAGING_EMPTY if no data is available 123 * sources are invalid, FILE_RELAY_E_STAGING_EMPTY if no data is available
124 * for the given sources, or FILE_RELAY_E_UNKNOWN_ERROR otherwise. 124 * for the given sources, or FILE_RELAY_E_UNKNOWN_ERROR otherwise.
125 */ 125 */
126file_relay_error_t file_relay_request_sources(file_relay_client_t client, const char **sources, idevice_connection_t *connection); 126LIBIMOBILEDEVICE_API file_relay_error_t file_relay_request_sources(file_relay_client_t client, const char **sources, idevice_connection_t *connection);
127 127
128/** 128/**
129 * Request data for the given sources. Calls file_relay_request_sources_timeout() with 129 * Request data for the given sources. Calls file_relay_request_sources_timeout() with
@@ -157,7 +157,7 @@ file_relay_error_t file_relay_request_sources(file_relay_client_t client, const
157 * sources are invalid, FILE_RELAY_E_STAGING_EMPTY if no data is available 157 * sources are invalid, FILE_RELAY_E_STAGING_EMPTY if no data is available
158 * for the given sources, or FILE_RELAY_E_UNKNOWN_ERROR otherwise. 158 * for the given sources, or FILE_RELAY_E_UNKNOWN_ERROR otherwise.
159 */ 159 */
160file_relay_error_t file_relay_request_sources_timeout(file_relay_client_t client, const char **sources, idevice_connection_t *connection, unsigned int timeout); 160LIBIMOBILEDEVICE_API file_relay_error_t file_relay_request_sources_timeout(file_relay_client_t client, const char **sources, idevice_connection_t *connection, unsigned int timeout);
161 161
162#ifdef __cplusplus 162#ifdef __cplusplus
163} 163}
diff --git a/include/libimobiledevice/heartbeat.h b/include/libimobiledevice/heartbeat.h
index 42b318d..4074b8b 100644
--- a/include/libimobiledevice/heartbeat.h
+++ b/include/libimobiledevice/heartbeat.h
@@ -60,7 +60,7 @@ typedef heartbeat_client_private *heartbeat_client_t; /**< The client handle. */
60 * @return HEARTBEAT_E_SUCCESS on success, HEARTBEAT_E_INVALID_ARG when 60 * @return HEARTBEAT_E_SUCCESS on success, HEARTBEAT_E_INVALID_ARG when
61 * client is NULL, or an HEARTBEAT_E_* error code otherwise. 61 * client is NULL, or an HEARTBEAT_E_* error code otherwise.
62 */ 62 */
63heartbeat_error_t heartbeat_client_new(idevice_t device, lockdownd_service_descriptor_t service, heartbeat_client_t * client); 63LIBIMOBILEDEVICE_API heartbeat_error_t heartbeat_client_new(idevice_t device, lockdownd_service_descriptor_t service, heartbeat_client_t * client);
64 64
65/** 65/**
66 * Starts a new heartbeat service on the specified device and connects to it. 66 * Starts a new heartbeat service on the specified device and connects to it.
@@ -75,7 +75,7 @@ heartbeat_error_t heartbeat_client_new(idevice_t device, lockdownd_service_descr
75 * @return HEARTBEAT_E_SUCCESS on success, or an HEARTBEAT_E_* error 75 * @return HEARTBEAT_E_SUCCESS on success, or an HEARTBEAT_E_* error
76 * code otherwise. 76 * code otherwise.
77 */ 77 */
78heartbeat_error_t heartbeat_client_start_service(idevice_t device, heartbeat_client_t * client, const char* label); 78LIBIMOBILEDEVICE_API heartbeat_error_t heartbeat_client_start_service(idevice_t device, heartbeat_client_t * client, const char* label);
79 79
80/** 80/**
81 * Disconnects a heartbeat client from the device and frees up the 81 * Disconnects a heartbeat client from the device and frees up the
@@ -86,7 +86,7 @@ heartbeat_error_t heartbeat_client_start_service(idevice_t device, heartbeat_cli
86 * @return HEARTBEAT_E_SUCCESS on success, HEARTBEAT_E_INVALID_ARG when 86 * @return HEARTBEAT_E_SUCCESS on success, HEARTBEAT_E_INVALID_ARG when
87 * client is NULL, or an HEARTBEAT_E_* error code otherwise. 87 * client is NULL, or an HEARTBEAT_E_* error code otherwise.
88 */ 88 */
89heartbeat_error_t heartbeat_client_free(heartbeat_client_t client); 89LIBIMOBILEDEVICE_API heartbeat_error_t heartbeat_client_free(heartbeat_client_t client);
90 90
91 91
92/** 92/**
@@ -98,7 +98,7 @@ heartbeat_error_t heartbeat_client_free(heartbeat_client_t client);
98 * @return HEARTBEAT_E_SUCCESS on success, 98 * @return HEARTBEAT_E_SUCCESS on success,
99 * HEARTBEAT_E_INVALID_ARG when client or plist is NULL 99 * HEARTBEAT_E_INVALID_ARG when client or plist is NULL
100 */ 100 */
101heartbeat_error_t heartbeat_send(heartbeat_client_t client, plist_t plist); 101LIBIMOBILEDEVICE_API heartbeat_error_t heartbeat_send(heartbeat_client_t client, plist_t plist);
102 102
103/** 103/**
104 * Receives a plist from the service. 104 * Receives a plist from the service.
@@ -109,7 +109,7 @@ heartbeat_error_t heartbeat_send(heartbeat_client_t client, plist_t plist);
109 * @return HEARTBEAT_E_SUCCESS on success, 109 * @return HEARTBEAT_E_SUCCESS on success,
110 * HEARTBEAT_E_INVALID_ARG when client or plist is NULL 110 * HEARTBEAT_E_INVALID_ARG when client or plist is NULL
111 */ 111 */
112heartbeat_error_t heartbeat_receive(heartbeat_client_t client, plist_t * plist); 112LIBIMOBILEDEVICE_API heartbeat_error_t heartbeat_receive(heartbeat_client_t client, plist_t * plist);
113 113
114/** 114/**
115 * Receives a plist using the given heartbeat client. 115 * Receives a plist using the given heartbeat client.
@@ -128,7 +128,7 @@ heartbeat_error_t heartbeat_receive(heartbeat_client_t client, plist_t * plist);
128 * communication error occurs, or HEARTBEAT_E_UNKNOWN_ERROR 128 * communication error occurs, or HEARTBEAT_E_UNKNOWN_ERROR
129 * when an unspecified error occurs. 129 * when an unspecified error occurs.
130 */ 130 */
131heartbeat_error_t heartbeat_receive_with_timeout(heartbeat_client_t client, plist_t * plist, uint32_t timeout_ms); 131LIBIMOBILEDEVICE_API heartbeat_error_t heartbeat_receive_with_timeout(heartbeat_client_t client, plist_t * plist, uint32_t timeout_ms);
132 132
133#ifdef __cplusplus 133#ifdef __cplusplus
134} 134}
diff --git a/include/libimobiledevice/house_arrest.h b/include/libimobiledevice/house_arrest.h
index 3785847..f9ba68a 100644
--- a/include/libimobiledevice/house_arrest.h
+++ b/include/libimobiledevice/house_arrest.h
@@ -61,7 +61,7 @@ typedef house_arrest_client_private *house_arrest_client_t; /**< The client hand
61 * @return HOUSE_ARREST_E_SUCCESS on success, HOUSE_ARREST_E_INVALID_ARG when 61 * @return HOUSE_ARREST_E_SUCCESS on success, HOUSE_ARREST_E_INVALID_ARG when
62 * client is NULL, or an HOUSE_ARREST_E_* error code otherwise. 62 * client is NULL, or an HOUSE_ARREST_E_* error code otherwise.
63 */ 63 */
64house_arrest_error_t house_arrest_client_new(idevice_t device, lockdownd_service_descriptor_t service, house_arrest_client_t *client); 64LIBIMOBILEDEVICE_API house_arrest_error_t house_arrest_client_new(idevice_t device, lockdownd_service_descriptor_t service, house_arrest_client_t *client);
65 65
66/** 66/**
67 * Starts a new house_arrest service on the specified device and connects to it. 67 * Starts a new house_arrest service on the specified device and connects to it.
@@ -76,7 +76,7 @@ house_arrest_error_t house_arrest_client_new(idevice_t device, lockdownd_service
76 * @return HOUSE_ARREST_E_SUCCESS on success, or an HOUSE_ARREST_E_* error 76 * @return HOUSE_ARREST_E_SUCCESS on success, or an HOUSE_ARREST_E_* error
77 * code otherwise. 77 * code otherwise.
78 */ 78 */
79house_arrest_error_t house_arrest_client_start_service(idevice_t device, house_arrest_client_t* client, const char* label); 79LIBIMOBILEDEVICE_API house_arrest_error_t house_arrest_client_start_service(idevice_t device, house_arrest_client_t* client, const char* label);
80 80
81/** 81/**
82 * Disconnects an house_arrest client from the device and frees up the 82 * Disconnects an house_arrest client from the device and frees up the
@@ -92,7 +92,7 @@ house_arrest_error_t house_arrest_client_start_service(idevice_t device, house_a
92 * @return HOUSE_ARREST_E_SUCCESS on success, HOUSE_ARREST_E_INVALID_ARG when 92 * @return HOUSE_ARREST_E_SUCCESS on success, HOUSE_ARREST_E_INVALID_ARG when
93 * client is NULL, or an HOUSE_ARREST_E_* error code otherwise. 93 * client is NULL, or an HOUSE_ARREST_E_* error code otherwise.
94 */ 94 */
95house_arrest_error_t house_arrest_client_free(house_arrest_client_t client); 95LIBIMOBILEDEVICE_API house_arrest_error_t house_arrest_client_free(house_arrest_client_t client);
96 96
97 97
98/** 98/**
@@ -112,7 +112,7 @@ house_arrest_error_t house_arrest_client_free(house_arrest_client_t client);
112 * HOUSE_ARREST_E_INVALID_MODE if the client is not in the correct mode, 112 * HOUSE_ARREST_E_INVALID_MODE if the client is not in the correct mode,
113 * or HOUSE_ARREST_E_CONN_FAILED if a connection error occurred. 113 * or HOUSE_ARREST_E_CONN_FAILED if a connection error occurred.
114 */ 114 */
115house_arrest_error_t house_arrest_send_request(house_arrest_client_t client, plist_t dict); 115LIBIMOBILEDEVICE_API house_arrest_error_t house_arrest_send_request(house_arrest_client_t client, plist_t dict);
116 116
117/** 117/**
118 * Send a command to the connected house_arrest service. 118 * Send a command to the connected house_arrest service.
@@ -133,7 +133,7 @@ house_arrest_error_t house_arrest_send_request(house_arrest_client_t client, pli
133 * HOUSE_ARREST_E_INVALID_MODE if the client is not in the correct mode, 133 * HOUSE_ARREST_E_INVALID_MODE if the client is not in the correct mode,
134 * or HOUSE_ARREST_E_CONN_FAILED if a connection error occurred. 134 * or HOUSE_ARREST_E_CONN_FAILED if a connection error occurred.
135 */ 135 */
136house_arrest_error_t house_arrest_send_command(house_arrest_client_t client, const char *command, const char *appid); 136LIBIMOBILEDEVICE_API house_arrest_error_t house_arrest_send_command(house_arrest_client_t client, const char *command, const char *appid);
137 137
138/** 138/**
139 * Retrieves the result of a previously sent house_arrest_request_* request. 139 * Retrieves the result of a previously sent house_arrest_request_* request.
@@ -149,7 +149,7 @@ house_arrest_error_t house_arrest_send_command(house_arrest_client_t client, con
149 * HOUSE_ARREST_E_INVALID_MODE if the client is not in the correct mode, 149 * HOUSE_ARREST_E_INVALID_MODE if the client is not in the correct mode,
150 * or HOUSE_ARREST_E_CONN_FAILED if a connection error occurred. 150 * or HOUSE_ARREST_E_CONN_FAILED if a connection error occurred.
151 */ 151 */
152house_arrest_error_t house_arrest_get_result(house_arrest_client_t client, plist_t *dict); 152LIBIMOBILEDEVICE_API house_arrest_error_t house_arrest_get_result(house_arrest_client_t client, plist_t *dict);
153 153
154 154
155/** 155/**
@@ -171,7 +171,7 @@ house_arrest_error_t house_arrest_get_result(house_arrest_client_t client, plist
171 * an afc client, or an AFC_E_* error code returned by 171 * an afc client, or an AFC_E_* error code returned by
172 * afc_client_new_with_service_client(). 172 * afc_client_new_with_service_client().
173 */ 173 */
174afc_error_t afc_client_new_from_house_arrest_client(house_arrest_client_t client, afc_client_t *afc_client); 174LIBIMOBILEDEVICE_API afc_error_t afc_client_new_from_house_arrest_client(house_arrest_client_t client, afc_client_t *afc_client);
175 175
176#ifdef __cplusplus 176#ifdef __cplusplus
177} 177}
diff --git a/include/libimobiledevice/installation_proxy.h b/include/libimobiledevice/installation_proxy.h
index 87132b9..44331aa 100644
--- a/include/libimobiledevice/installation_proxy.h
+++ b/include/libimobiledevice/installation_proxy.h
@@ -127,7 +127,7 @@ typedef void (*instproxy_status_cb_t) (plist_t command, plist_t status, void *us
127 * @return INSTPROXY_E_SUCCESS on success, or an INSTPROXY_E_* error value 127 * @return INSTPROXY_E_SUCCESS on success, or an INSTPROXY_E_* error value
128 * when an error occurred. 128 * when an error occurred.
129 */ 129 */
130instproxy_error_t instproxy_client_new(idevice_t device, lockdownd_service_descriptor_t service, instproxy_client_t *client); 130LIBIMOBILEDEVICE_API instproxy_error_t instproxy_client_new(idevice_t device, lockdownd_service_descriptor_t service, instproxy_client_t *client);
131 131
132/** 132/**
133 * Starts a new installation_proxy service on the specified device and connects to it. 133 * Starts a new installation_proxy service on the specified device and connects to it.
@@ -142,7 +142,7 @@ instproxy_error_t instproxy_client_new(idevice_t device, lockdownd_service_descr
142 * @return INSTPROXY_E_SUCCESS on success, or an INSTPROXY_E_* error 142 * @return INSTPROXY_E_SUCCESS on success, or an INSTPROXY_E_* error
143 * code otherwise. 143 * code otherwise.
144 */ 144 */
145instproxy_error_t instproxy_client_start_service(idevice_t device, instproxy_client_t * client, const char* label); 145LIBIMOBILEDEVICE_API instproxy_error_t instproxy_client_start_service(idevice_t device, instproxy_client_t * client, const char* label);
146 146
147/** 147/**
148 * Disconnects an installation_proxy client from the device and frees up the 148 * Disconnects an installation_proxy client from the device and frees up the
@@ -153,7 +153,7 @@ instproxy_error_t instproxy_client_start_service(idevice_t device, instproxy_cli
153 * @return INSTPROXY_E_SUCCESS on success 153 * @return INSTPROXY_E_SUCCESS on success
154 * or INSTPROXY_E_INVALID_ARG if client is NULL. 154 * or INSTPROXY_E_INVALID_ARG if client is NULL.
155 */ 155 */
156instproxy_error_t instproxy_client_free(instproxy_client_t client); 156LIBIMOBILEDEVICE_API instproxy_error_t instproxy_client_free(instproxy_client_t client);
157 157
158/** 158/**
159 * List installed applications. This function runs synchronously. 159 * List installed applications. This function runs synchronously.
@@ -171,7 +171,7 @@ instproxy_error_t instproxy_client_free(instproxy_client_t client);
171 * @return INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if 171 * @return INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if
172 * an error occurred. 172 * an error occurred.
173 */ 173 */
174instproxy_error_t instproxy_browse(instproxy_client_t client, plist_t client_options, plist_t *result); 174LIBIMOBILEDEVICE_API instproxy_error_t instproxy_browse(instproxy_client_t client, plist_t client_options, plist_t *result);
175 175
176/** 176/**
177 * List pages of installed applications in a callback. 177 * List pages of installed applications in a callback.
@@ -190,7 +190,7 @@ instproxy_error_t instproxy_browse(instproxy_client_t client, plist_t client_opt
190 * @return INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if 190 * @return INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if
191 * an error occurred. 191 * an error occurred.
192 */ 192 */
193instproxy_error_t instproxy_browse_with_callback(instproxy_client_t client, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data); 193LIBIMOBILEDEVICE_API instproxy_error_t instproxy_browse_with_callback(instproxy_client_t client, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data);
194 194
195/** 195/**
196 * Lookup information about specific applications from the device. 196 * Lookup information about specific applications from the device.
@@ -206,7 +206,7 @@ instproxy_error_t instproxy_browse_with_callback(instproxy_client_t client, plis
206 * @return INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if 206 * @return INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if
207 * an error occurred. 207 * an error occurred.
208 */ 208 */
209instproxy_error_t instproxy_lookup(instproxy_client_t client, const char** appids, plist_t client_options, plist_t *result); 209LIBIMOBILEDEVICE_API instproxy_error_t instproxy_lookup(instproxy_client_t client, const char** appids, plist_t client_options, plist_t *result);
210 210
211/** 211/**
212 * Install an application on the device. 212 * Install an application on the device.
@@ -232,7 +232,7 @@ instproxy_error_t instproxy_lookup(instproxy_client_t client, const char** appid
232 * created successfully; any error occurring during the command has to be 232 * created successfully; any error occurring during the command has to be
233 * handled inside the specified callback function. 233 * handled inside the specified callback function.
234 */ 234 */
235instproxy_error_t instproxy_install(instproxy_client_t client, const char *pkg_path, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data); 235LIBIMOBILEDEVICE_API instproxy_error_t instproxy_install(instproxy_client_t client, const char *pkg_path, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data);
236 236
237/** 237/**
238 * Upgrade an application on the device. This function is nearly the same as 238 * Upgrade an application on the device. This function is nearly the same as
@@ -260,7 +260,7 @@ instproxy_error_t instproxy_install(instproxy_client_t client, const char *pkg_p
260 * created successfully; any error occurring during the command has to be 260 * created successfully; any error occurring during the command has to be
261 * handled inside the specified callback function. 261 * handled inside the specified callback function.
262 */ 262 */
263instproxy_error_t instproxy_upgrade(instproxy_client_t client, const char *pkg_path, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data); 263LIBIMOBILEDEVICE_API instproxy_error_t instproxy_upgrade(instproxy_client_t client, const char *pkg_path, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data);
264 264
265/** 265/**
266 * Uninstall an application from the device. 266 * Uninstall an application from the device.
@@ -281,7 +281,7 @@ instproxy_error_t instproxy_upgrade(instproxy_client_t client, const char *pkg_p
281 * created successfully; any error occurring during the command has to be 281 * created successfully; any error occurring during the command has to be
282 * handled inside the specified callback function. 282 * handled inside the specified callback function.
283 */ 283 */
284instproxy_error_t instproxy_uninstall(instproxy_client_t client, const char *appid, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data); 284LIBIMOBILEDEVICE_API instproxy_error_t instproxy_uninstall(instproxy_client_t client, const char *appid, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data);
285 285
286/** 286/**
287 * List archived applications. This function runs synchronously. 287 * List archived applications. This function runs synchronously.
@@ -297,7 +297,7 @@ instproxy_error_t instproxy_uninstall(instproxy_client_t client, const char *app
297 * @return INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if 297 * @return INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if
298 * an error occurred. 298 * an error occurred.
299 */ 299 */
300instproxy_error_t instproxy_lookup_archives(instproxy_client_t client, plist_t client_options, plist_t *result); 300LIBIMOBILEDEVICE_API instproxy_error_t instproxy_lookup_archives(instproxy_client_t client, plist_t client_options, plist_t *result);
301 301
302/** 302/**
303 * Archive an application on the device. 303 * Archive an application on the device.
@@ -323,7 +323,7 @@ instproxy_error_t instproxy_lookup_archives(instproxy_client_t client, plist_t c
323 * created successfully; any error occurring during the command has to be 323 * created successfully; any error occurring during the command has to be
324 * handled inside the specified callback function. 324 * handled inside the specified callback function.
325 */ 325 */
326instproxy_error_t instproxy_archive(instproxy_client_t client, const char *appid, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data); 326LIBIMOBILEDEVICE_API instproxy_error_t instproxy_archive(instproxy_client_t client, const char *appid, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data);
327 327
328/** 328/**
329 * Restore a previously archived application on the device. 329 * Restore a previously archived application on the device.
@@ -347,7 +347,7 @@ instproxy_error_t instproxy_archive(instproxy_client_t client, const char *appid
347 * created successfully; any error occurring during the command has to be 347 * created successfully; any error occurring during the command has to be
348 * handled inside the specified callback function. 348 * handled inside the specified callback function.
349 */ 349 */
350instproxy_error_t instproxy_restore(instproxy_client_t client, const char *appid, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data); 350LIBIMOBILEDEVICE_API instproxy_error_t instproxy_restore(instproxy_client_t client, const char *appid, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data);
351 351
352/** 352/**
353 * Removes a previously archived application from the device. 353 * Removes a previously archived application from the device.
@@ -370,7 +370,7 @@ instproxy_error_t instproxy_restore(instproxy_client_t client, const char *appid
370 * created successfully; any error occurring during the command has to be 370 * created successfully; any error occurring during the command has to be
371 * handled inside the specified callback function. 371 * handled inside the specified callback function.
372 */ 372 */
373instproxy_error_t instproxy_remove_archive(instproxy_client_t client, const char *appid, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data); 373LIBIMOBILEDEVICE_API instproxy_error_t instproxy_remove_archive(instproxy_client_t client, const char *appid, plist_t client_options, instproxy_status_cb_t status_cb, void *user_data);
374 374
375/** 375/**
376 * Checks a device for certain capabilities. 376 * Checks a device for certain capabilities.
@@ -386,7 +386,7 @@ instproxy_error_t instproxy_remove_archive(instproxy_client_t client, const char
386 * @return INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if 386 * @return INSTPROXY_E_SUCCESS on success or an INSTPROXY_E_* error value if
387 * an error occurred. 387 * an error occurred.
388 */ 388 */
389instproxy_error_t instproxy_check_capabilities_match(instproxy_client_t client, const char** capabilities, plist_t client_options, plist_t *result); 389LIBIMOBILEDEVICE_API instproxy_error_t instproxy_check_capabilities_match(instproxy_client_t client, const char** capabilities, plist_t client_options, plist_t *result);
390 390
391/* Helper */ 391/* Helper */
392 392
@@ -396,7 +396,7 @@ instproxy_error_t instproxy_check_capabilities_match(instproxy_client_t client,
396 * @param command The dictionary describing the command. 396 * @param command The dictionary describing the command.
397 * @param name Pointer to store the name of the command. 397 * @param name Pointer to store the name of the command.
398 */ 398 */
399void instproxy_command_get_name(plist_t command, char** name); 399LIBIMOBILEDEVICE_API void instproxy_command_get_name(plist_t command, char** name);
400 400
401/** 401/**
402 * Gets the name of a status. 402 * Gets the name of a status.
@@ -404,7 +404,7 @@ void instproxy_command_get_name(plist_t command, char** name);
404 * @param status The dictionary status response to use. 404 * @param status The dictionary status response to use.
405 * @param name Pointer to store the name of the status. 405 * @param name Pointer to store the name of the status.
406 */ 406 */
407void instproxy_status_get_name(plist_t status, char **name); 407LIBIMOBILEDEVICE_API void instproxy_status_get_name(plist_t status, char **name);
408 408
409/** 409/**
410 * Gets error name, code and description from a response if available. 410 * Gets error name, code and description from a response if available.
@@ -420,7 +420,7 @@ void instproxy_status_get_name(plist_t status, char **name);
420 * @return INSTPROXY_E_SUCCESS if no error is found or an INSTPROXY_E_* error 420 * @return INSTPROXY_E_SUCCESS if no error is found or an INSTPROXY_E_* error
421 * value matching the error that ẃas found in the status. 421 * value matching the error that ẃas found in the status.
422 */ 422 */
423instproxy_error_t instproxy_status_get_error(plist_t status, char **name, char** description, uint64_t* code); 423LIBIMOBILEDEVICE_API instproxy_error_t instproxy_status_get_error(plist_t status, char **name, char** description, uint64_t* code);
424 424
425/** 425/**
426 * Gets total and current item information from a browse response if available. 426 * Gets total and current item information from a browse response if available.
@@ -435,7 +435,7 @@ instproxy_error_t instproxy_status_get_error(plist_t status, char **name, char**
435 * If NULL is passed no list will be returned. If NULL is returned no 435 * If NULL is passed no list will be returned. If NULL is returned no
436 * list was found in the status. 436 * list was found in the status.
437 */ 437 */
438void instproxy_status_get_current_list(plist_t status, uint64_t* total, uint64_t* current_index, uint64_t* current_amount, plist_t* list); 438LIBIMOBILEDEVICE_API void instproxy_status_get_current_list(plist_t status, uint64_t* total, uint64_t* current_index, uint64_t* current_amount, plist_t* list);
439 439
440 440
441/** 441/**
@@ -445,14 +445,14 @@ void instproxy_status_get_current_list(plist_t status, uint64_t* total, uint64_t
445 * @param percent Pointer to an int to store the progress in percent (0-100) 445 * @param percent Pointer to an int to store the progress in percent (0-100)
446 * or -1 if no progress was found in the status. 446 * or -1 if no progress was found in the status.
447 */ 447 */
448void instproxy_status_get_percent_complete(plist_t status, int *percent); 448LIBIMOBILEDEVICE_API void instproxy_status_get_percent_complete(plist_t status, int *percent);
449 449
450/** 450/**
451 * Creates a new client_options plist. 451 * Creates a new client_options plist.
452 * 452 *
453 * @return A new plist_t of type PLIST_DICT. 453 * @return A new plist_t of type PLIST_DICT.
454 */ 454 */
455plist_t instproxy_client_options_new(void); 455LIBIMOBILEDEVICE_API plist_t instproxy_client_options_new(void);
456 456
457/** 457/**
458 * Adds one or more new key:value pairs to the given client_options. 458 * Adds one or more new key:value pairs to the given client_options.
@@ -464,7 +464,7 @@ plist_t instproxy_client_options_new(void);
464 * keys "ApplicationSINF", "iTunesMetadata", "ReturnAttributes" which are 464 * keys "ApplicationSINF", "iTunesMetadata", "ReturnAttributes" which are
465 * expecting a plist_t node as value and "SkipUninstall" expects int. 465 * expecting a plist_t node as value and "SkipUninstall" expects int.
466 */ 466 */
467void instproxy_client_options_add(plist_t client_options, ...); 467LIBIMOBILEDEVICE_API void instproxy_client_options_add(plist_t client_options, ...);
468 468
469/** 469/**
470 * Adds attributes to the given client_options to filter browse results. 470 * Adds attributes to the given client_options to filter browse results.
@@ -474,7 +474,7 @@ void instproxy_client_options_add(plist_t client_options, ...);
474 * 474 *
475 * @note The values passed are expected to be strings. 475 * @note The values passed are expected to be strings.
476 */ 476 */
477void instproxy_client_options_set_return_attributes(plist_t client_options, ...); 477LIBIMOBILEDEVICE_API void instproxy_client_options_set_return_attributes(plist_t client_options, ...);
478 478
479/** 479/**
480 * Frees client_options plist. 480 * Frees client_options plist.
@@ -482,7 +482,7 @@ void instproxy_client_options_set_return_attributes(plist_t client_options, ...)
482 * @param client_options The client options plist to free. Does nothing if NULL 482 * @param client_options The client options plist to free. Does nothing if NULL
483 * is passed. 483 * is passed.
484 */ 484 */
485void instproxy_client_options_free(plist_t client_options); 485LIBIMOBILEDEVICE_API void instproxy_client_options_free(plist_t client_options);
486 486
487/** 487/**
488 * Queries the device for the path of an application. 488 * Queries the device for the path of an application.
@@ -496,7 +496,7 @@ void instproxy_client_options_free(plist_t client_options);
496 * the path could not be determined or an INSTPROXY_E_* error 496 * the path could not be determined or an INSTPROXY_E_* error
497 * value if an error occurred. 497 * value if an error occurred.
498 */ 498 */
499instproxy_error_t instproxy_client_get_path_for_bundle_identifier(instproxy_client_t client, const char* bundle_id, char** path); 499LIBIMOBILEDEVICE_API instproxy_error_t instproxy_client_get_path_for_bundle_identifier(instproxy_client_t client, const char* bundle_id, char** path);
500 500
501#ifdef __cplusplus 501#ifdef __cplusplus
502} 502}
diff --git a/include/libimobiledevice/libimobiledevice.h b/include/libimobiledevice/libimobiledevice.h
index 6851145..66b4145 100644
--- a/include/libimobiledevice/libimobiledevice.h
+++ b/include/libimobiledevice/libimobiledevice.h
@@ -35,6 +35,16 @@ extern "C" {
35#include <sys/stat.h> 35#include <sys/stat.h>
36#include <plist/plist.h> 36#include <plist/plist.h>
37 37
38#ifndef LIBIMOBILEDEVICE_API
39 #ifdef LIBIMOBILEDEVICE_STATIC
40 #define LIBIMOBILEDEVICE_API
41 #elif defined(_WIN32)
42 #define LIBIMOBILEDEVICE_API __declspec(dllimport)
43 #else
44 #define LIBIMOBILEDEVICE_API
45 #endif
46#endif
47
38/** Error Codes */ 48/** Error Codes */
39typedef enum { 49typedef enum {
40 IDEVICE_E_SUCCESS = 0, 50 IDEVICE_E_SUCCESS = 0,
@@ -104,7 +114,7 @@ typedef struct idevice_subscription_context* idevice_subscription_context_t;
104 * 114 *
105 * @param level Set to 0 for no debug output or 1 to enable debug output. 115 * @param level Set to 0 for no debug output or 1 to enable debug output.
106 */ 116 */
107void idevice_set_debug_level(int level); 117LIBIMOBILEDEVICE_API void idevice_set_debug_level(int level);
108 118
109/** 119/**
110 * Subscribe a callback function that will be called when device add/remove 120 * Subscribe a callback function that will be called when device add/remove
@@ -119,7 +129,7 @@ void idevice_set_debug_level(int level);
119 * 129 *
120 * @return IDEVICE_E_SUCCESS on success or an error value when an error occurred. 130 * @return IDEVICE_E_SUCCESS on success or an error value when an error occurred.
121 */ 131 */
122idevice_error_t idevice_events_subscribe(idevice_subscription_context_t *context, idevice_event_cb_t callback, void *user_data); 132LIBIMOBILEDEVICE_API idevice_error_t idevice_events_subscribe(idevice_subscription_context_t *context, idevice_event_cb_t callback, void *user_data);
123 133
124/** 134/**
125 * Unsubscribe the event callback function that has been registered with 135 * Unsubscribe the event callback function that has been registered with
@@ -129,7 +139,7 @@ idevice_error_t idevice_events_subscribe(idevice_subscription_context_t *context
129 * 139 *
130 * @return IDEVICE_E_SUCCESS on success or an error value when an error occurred. 140 * @return IDEVICE_E_SUCCESS on success or an error value when an error occurred.
131 */ 141 */
132idevice_error_t idevice_events_unsubscribe(idevice_subscription_context_t context); 142LIBIMOBILEDEVICE_API idevice_error_t idevice_events_unsubscribe(idevice_subscription_context_t context);
133 143
134/** 144/**
135 * (DEPRECATED) Register a callback function that will be called when device add/remove 145 * (DEPRECATED) Register a callback function that will be called when device add/remove
@@ -143,7 +153,7 @@ idevice_error_t idevice_events_unsubscribe(idevice_subscription_context_t contex
143 * 153 *
144 * @return IDEVICE_E_SUCCESS on success or an error value when an error occurred. 154 * @return IDEVICE_E_SUCCESS on success or an error value when an error occurred.
145 */ 155 */
146idevice_error_t idevice_event_subscribe(idevice_event_cb_t callback, void *user_data); 156LIBIMOBILEDEVICE_API idevice_error_t idevice_event_subscribe(idevice_event_cb_t callback, void *user_data);
147 157
148/** 158/**
149 * (DEPRECATED) Release the event callback function that has been registered with 159 * (DEPRECATED) Release the event callback function that has been registered with
@@ -153,7 +163,7 @@ idevice_error_t idevice_event_subscribe(idevice_event_cb_t callback, void *user_
153 * 163 *
154 * @return IDEVICE_E_SUCCESS on success or an error value when an error occurred. 164 * @return IDEVICE_E_SUCCESS on success or an error value when an error occurred.
155 */ 165 */
156idevice_error_t idevice_event_unsubscribe(void); 166LIBIMOBILEDEVICE_API idevice_error_t idevice_event_unsubscribe(void);
157 167
158/* discovery (synchronous) */ 168/* discovery (synchronous) */
159 169
@@ -170,7 +180,7 @@ idevice_error_t idevice_event_unsubscribe(void);
170 * network devices in the list, use idevice_get_device_list_extended(). 180 * network devices in the list, use idevice_get_device_list_extended().
171 * @see idevice_get_device_list_extended 181 * @see idevice_get_device_list_extended
172 */ 182 */
173idevice_error_t idevice_get_device_list(char ***devices, int *count); 183LIBIMOBILEDEVICE_API idevice_error_t idevice_get_device_list(char ***devices, int *count);
174 184
175/** 185/**
176 * Free a list of device UDIDs. 186 * Free a list of device UDIDs.
@@ -179,7 +189,7 @@ idevice_error_t idevice_get_device_list(char ***devices, int *count);
179 * 189 *
180 * @return Always returnes IDEVICE_E_SUCCESS. 190 * @return Always returnes IDEVICE_E_SUCCESS.
181 */ 191 */
182idevice_error_t idevice_device_list_free(char **devices); 192LIBIMOBILEDEVICE_API idevice_error_t idevice_device_list_free(char **devices);
183 193
184/** 194/**
185 * Get a list of currently available devices 195 * Get a list of currently available devices
@@ -190,7 +200,7 @@ idevice_error_t idevice_device_list_free(char **devices);
190 * 200 *
191 * @return IDEVICE_E_SUCCESS on success or an error value when an error occurred. 201 * @return IDEVICE_E_SUCCESS on success or an error value when an error occurred.
192 */ 202 */
193idevice_error_t idevice_get_device_list_extended(idevice_info_t **devices, int *count); 203LIBIMOBILEDEVICE_API idevice_error_t idevice_get_device_list_extended(idevice_info_t **devices, int *count);
194 204
195/** 205/**
196 * Free an extended device list retrieved through idevice_get_device_list_extended(). 206 * Free an extended device list retrieved through idevice_get_device_list_extended().
@@ -199,7 +209,7 @@ idevice_error_t idevice_get_device_list_extended(idevice_info_t **devices, int *
199 * 209 *
200 * @return IDEVICE_E_SUCCESS on success or an error value when an error occurred. 210 * @return IDEVICE_E_SUCCESS on success or an error value when an error occurred.
201 */ 211 */
202idevice_error_t idevice_device_list_extended_free(idevice_info_t *devices); 212LIBIMOBILEDEVICE_API idevice_error_t idevice_device_list_extended_free(idevice_info_t *devices);
203 213
204/* device structure creation and destruction */ 214/* device structure creation and destruction */
205 215
@@ -220,7 +230,7 @@ idevice_error_t idevice_device_list_extended_free(idevice_info_t *devices);
220 * 230 *
221 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code. 231 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code.
222 */ 232 */
223idevice_error_t idevice_new(idevice_t *device, const char *udid); 233LIBIMOBILEDEVICE_API idevice_error_t idevice_new(idevice_t *device, const char *udid);
224 234
225/** 235/**
226 * Creates an idevice_t structure for the device specified by UDID, 236 * Creates an idevice_t structure for the device specified by UDID,
@@ -243,14 +253,14 @@ idevice_error_t idevice_new(idevice_t *device, const char *udid);
243 * 253 *
244 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code. 254 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code.
245 */ 255 */
246idevice_error_t idevice_new_with_options(idevice_t *device, const char *udid, enum idevice_options options); 256LIBIMOBILEDEVICE_API idevice_error_t idevice_new_with_options(idevice_t *device, const char *udid, enum idevice_options options);
247 257
248/** 258/**
249 * Cleans up an idevice structure, then frees the structure itself. 259 * Cleans up an idevice structure, then frees the structure itself.
250 * 260 *
251 * @param device idevice_t to free. 261 * @param device idevice_t to free.
252 */ 262 */
253idevice_error_t idevice_free(idevice_t device); 263LIBIMOBILEDEVICE_API idevice_error_t idevice_free(idevice_t device);
254 264
255/* connection/disconnection */ 265/* connection/disconnection */
256 266
@@ -264,7 +274,7 @@ idevice_error_t idevice_free(idevice_t device);
264 * 274 *
265 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code. 275 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code.
266 */ 276 */
267idevice_error_t idevice_connect(idevice_t device, uint16_t port, idevice_connection_t *connection); 277LIBIMOBILEDEVICE_API idevice_error_t idevice_connect(idevice_t device, uint16_t port, idevice_connection_t *connection);
268 278
269/** 279/**
270 * Disconnect from the device and clean up the connection structure. 280 * Disconnect from the device and clean up the connection structure.
@@ -273,7 +283,7 @@ idevice_error_t idevice_connect(idevice_t device, uint16_t port, idevice_connect
273 * 283 *
274 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code. 284 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code.
275 */ 285 */
276idevice_error_t idevice_disconnect(idevice_connection_t connection); 286LIBIMOBILEDEVICE_API idevice_error_t idevice_disconnect(idevice_connection_t connection);
277 287
278/* communication */ 288/* communication */
279 289
@@ -288,7 +298,7 @@ idevice_error_t idevice_disconnect(idevice_connection_t connection);
288 * 298 *
289 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code. 299 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code.
290 */ 300 */
291idevice_error_t idevice_connection_send(idevice_connection_t connection, const char *data, uint32_t len, uint32_t *sent_bytes); 301LIBIMOBILEDEVICE_API idevice_error_t idevice_connection_send(idevice_connection_t connection, const char *data, uint32_t len, uint32_t *sent_bytes);
292 302
293/** 303/**
294 * Receive data from a device via the given connection. 304 * Receive data from a device via the given connection.
@@ -305,7 +315,7 @@ idevice_error_t idevice_connection_send(idevice_connection_t connection, const c
305 * 315 *
306 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code. 316 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code.
307 */ 317 */
308idevice_error_t idevice_connection_receive_timeout(idevice_connection_t connection, char *data, uint32_t len, uint32_t *recv_bytes, unsigned int timeout); 318LIBIMOBILEDEVICE_API idevice_error_t idevice_connection_receive_timeout(idevice_connection_t connection, char *data, uint32_t len, uint32_t *recv_bytes, unsigned int timeout);
309 319
310/** 320/**
311 * Receive data from a device via the given connection. 321 * Receive data from a device via the given connection.
@@ -320,7 +330,7 @@ idevice_error_t idevice_connection_receive_timeout(idevice_connection_t connecti
320 * 330 *
321 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code. 331 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code.
322 */ 332 */
323idevice_error_t idevice_connection_receive(idevice_connection_t connection, char *data, uint32_t len, uint32_t *recv_bytes); 333LIBIMOBILEDEVICE_API idevice_error_t idevice_connection_receive(idevice_connection_t connection, char *data, uint32_t len, uint32_t *recv_bytes);
324 334
325/** 335/**
326 * Enables SSL for the given connection. 336 * Enables SSL for the given connection.
@@ -331,7 +341,7 @@ idevice_error_t idevice_connection_receive(idevice_connection_t connection, char
331 * is NULL or connection->ssl_data is non-NULL, or IDEVICE_E_SSL_ERROR when 341 * is NULL or connection->ssl_data is non-NULL, or IDEVICE_E_SSL_ERROR when
332 * SSL initialization, setup, or handshake fails. 342 * SSL initialization, setup, or handshake fails.
333 */ 343 */
334idevice_error_t idevice_connection_enable_ssl(idevice_connection_t connection); 344LIBIMOBILEDEVICE_API idevice_error_t idevice_connection_enable_ssl(idevice_connection_t connection);
335 345
336/** 346/**
337 * Disable SSL for the given connection. 347 * Disable SSL for the given connection.
@@ -342,7 +352,7 @@ idevice_error_t idevice_connection_enable_ssl(idevice_connection_t connection);
342 * is NULL. This function also returns IDEVICE_E_SUCCESS when SSL is not 352 * is NULL. This function also returns IDEVICE_E_SUCCESS when SSL is not
343 * enabled and does no further error checking on cleanup. 353 * enabled and does no further error checking on cleanup.
344 */ 354 */
345idevice_error_t idevice_connection_disable_ssl(idevice_connection_t connection); 355LIBIMOBILEDEVICE_API idevice_error_t idevice_connection_disable_ssl(idevice_connection_t connection);
346 356
347/** 357/**
348 * Disable bypass SSL for the given connection without sending out terminate messages. 358 * Disable bypass SSL for the given connection without sending out terminate messages.
@@ -355,7 +365,7 @@ idevice_error_t idevice_connection_disable_ssl(idevice_connection_t connection);
355 * is NULL. This function also returns IDEVICE_E_SUCCESS when SSL is not 365 * is NULL. This function also returns IDEVICE_E_SUCCESS when SSL is not
356 * enabled and does no further error checking on cleanup. 366 * enabled and does no further error checking on cleanup.
357 */ 367 */
358idevice_error_t idevice_connection_disable_bypass_ssl(idevice_connection_t connection, uint8_t sslBypass); 368LIBIMOBILEDEVICE_API idevice_error_t idevice_connection_disable_bypass_ssl(idevice_connection_t connection, uint8_t sslBypass);
359 369
360 370
361/** 371/**
@@ -366,7 +376,7 @@ idevice_error_t idevice_connection_disable_bypass_ssl(idevice_connection_t conne
366 * 376 *
367 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code. 377 * @return IDEVICE_E_SUCCESS if ok, otherwise an error code.
368 */ 378 */
369idevice_error_t idevice_connection_get_fd(idevice_connection_t connection, int *fd); 379LIBIMOBILEDEVICE_API idevice_error_t idevice_connection_get_fd(idevice_connection_t connection, int *fd);
370 380
371/* misc */ 381/* misc */
372 382
@@ -378,7 +388,7 @@ idevice_error_t idevice_connection_get_fd(idevice_connection_t connection, int *
378 * 388 *
379 * @return IDEVICE_E_SUCCESS on success, otherwise an error code. 389 * @return IDEVICE_E_SUCCESS on success, otherwise an error code.
380 */ 390 */
381idevice_error_t idevice_get_handle(idevice_t device, uint32_t *handle); 391LIBIMOBILEDEVICE_API idevice_error_t idevice_get_handle(idevice_t device, uint32_t *handle);
382 392
383/** 393/**
384 * Gets the Unique Device ID for the device. 394 * Gets the Unique Device ID for the device.
@@ -388,7 +398,7 @@ idevice_error_t idevice_get_handle(idevice_t device, uint32_t *handle);
388 * 398 *
389 * @return IDEVICE_E_SUCCESS on success, otherwise an error code. 399 * @return IDEVICE_E_SUCCESS on success, otherwise an error code.
390 */ 400 */
391idevice_error_t idevice_get_udid(idevice_t device, char **udid); 401LIBIMOBILEDEVICE_API idevice_error_t idevice_get_udid(idevice_t device, char **udid);
392 402
393#ifdef __cplusplus 403#ifdef __cplusplus
394} 404}
diff --git a/include/libimobiledevice/lockdown.h b/include/libimobiledevice/lockdown.h
index 6d390fd..21669ef 100644
--- a/include/libimobiledevice/lockdown.h
+++ b/include/libimobiledevice/lockdown.h
@@ -130,7 +130,7 @@ typedef void (*lockdownd_cu_pairing_cb_t) (lockdownd_cu_pairing_cb_type_t cb_typ
130 * 130 *
131 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL 131 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL
132 */ 132 */
133lockdownd_error_t lockdownd_client_new(idevice_t device, lockdownd_client_t *client, const char *label); 133LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_client_new(idevice_t device, lockdownd_client_t *client, const char *label);
134 134
135/** 135/**
136 * Creates a new lockdownd client for the device and starts initial handshake. 136 * Creates a new lockdownd client for the device and starts initial handshake.
@@ -149,7 +149,7 @@ lockdownd_error_t lockdownd_client_new(idevice_t device, lockdownd_client_t *cli
149 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL, 149 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL,
150 * LOCKDOWN_E_INVALID_CONF if configuration data is wrong 150 * LOCKDOWN_E_INVALID_CONF if configuration data is wrong
151 */ 151 */
152lockdownd_error_t lockdownd_client_new_with_handshake(idevice_t device, lockdownd_client_t *client, const char *label); 152LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_client_new_with_handshake(idevice_t device, lockdownd_client_t *client, const char *label);
153 153
154/** 154/**
155 * Closes the lockdownd client session if one is running and frees up the 155 * Closes the lockdownd client session if one is running and frees up the
@@ -159,7 +159,7 @@ lockdownd_error_t lockdownd_client_new_with_handshake(idevice_t device, lockdown
159 * 159 *
160 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL 160 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL
161 */ 161 */
162lockdownd_error_t lockdownd_client_free(lockdownd_client_t client); 162LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_client_free(lockdownd_client_t client);
163 163
164 164
165/** 165/**
@@ -171,7 +171,7 @@ lockdownd_error_t lockdownd_client_free(lockdownd_client_t client);
171 * 171 *
172 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL 172 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL
173 */ 173 */
174lockdownd_error_t lockdownd_query_type(lockdownd_client_t client, char **type); 174LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_query_type(lockdownd_client_t client, char **type);
175 175
176/** 176/**
177 * Retrieves a preferences plist using an optional domain and/or key name. 177 * Retrieves a preferences plist using an optional domain and/or key name.
@@ -183,7 +183,7 @@ lockdownd_error_t lockdownd_query_type(lockdownd_client_t client, char **type);
183 * 183 *
184 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL 184 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL
185 */ 185 */
186lockdownd_error_t lockdownd_get_value(lockdownd_client_t client, const char *domain, const char *key, plist_t *value); 186LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_get_value(lockdownd_client_t client, const char *domain, const char *key, plist_t *value);
187 187
188/** 188/**
189 * Sets a preferences value using a plist and optional by domain and/or key name. 189 * Sets a preferences value using a plist and optional by domain and/or key name.
@@ -196,7 +196,7 @@ lockdownd_error_t lockdownd_get_value(lockdownd_client_t client, const char *dom
196 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client or 196 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client or
197 * value is NULL 197 * value is NULL
198 */ 198 */
199lockdownd_error_t lockdownd_set_value(lockdownd_client_t client, const char *domain, const char *key, plist_t value); 199LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_set_value(lockdownd_client_t client, const char *domain, const char *key, plist_t value);
200 200
201/** 201/**
202 * Removes a preference node by domain and/or key name. 202 * Removes a preference node by domain and/or key name.
@@ -209,7 +209,7 @@ lockdownd_error_t lockdownd_set_value(lockdownd_client_t client, const char *dom
209 * 209 *
210 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL 210 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL
211 */ 211 */
212lockdownd_error_t lockdownd_remove_value(lockdownd_client_t client, const char *domain, const char *key); 212LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_remove_value(lockdownd_client_t client, const char *domain, const char *key);
213 213
214/** 214/**
215 * Requests to start a service and retrieve it's port on success. 215 * Requests to start a service and retrieve it's port on success.
@@ -223,7 +223,7 @@ lockdownd_error_t lockdownd_remove_value(lockdownd_client_t client, const char *
223 * by the device, LOCKDOWN_E_START_SERVICE_FAILED if the service could not be 223 * by the device, LOCKDOWN_E_START_SERVICE_FAILED if the service could not be
224 * started by the device 224 * started by the device
225 */ 225 */
226lockdownd_error_t lockdownd_start_service(lockdownd_client_t client, const char *identifier, lockdownd_service_descriptor_t *service); 226LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_start_service(lockdownd_client_t client, const char *identifier, lockdownd_service_descriptor_t *service);
227 227
228/** 228/**
229 * Requests to start a service and retrieve it's port on success. 229 * Requests to start a service and retrieve it's port on success.
@@ -239,7 +239,7 @@ lockdownd_error_t lockdownd_start_service(lockdownd_client_t client, const char
239 * started by the device, LOCKDOWN_E_INVALID_CONF if the host id or escrow bag are 239 * started by the device, LOCKDOWN_E_INVALID_CONF if the host id or escrow bag are
240 * missing from the device record. 240 * missing from the device record.
241 */ 241 */
242lockdownd_error_t lockdownd_start_service_with_escrow_bag(lockdownd_client_t client, const char *identifier, lockdownd_service_descriptor_t *service); 242LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_start_service_with_escrow_bag(lockdownd_client_t client, const char *identifier, lockdownd_service_descriptor_t *service);
243 243
244/** 244/**
245 * Opens a session with lockdownd and switches to SSL mode if device wants it. 245 * Opens a session with lockdownd and switches to SSL mode if device wants it.
@@ -254,7 +254,7 @@ lockdownd_error_t lockdownd_start_service_with_escrow_bag(lockdownd_client_t cli
254 * LOCKDOWN_E_INVALID_HOST_ID if the device does not know the supplied HostID, 254 * LOCKDOWN_E_INVALID_HOST_ID if the device does not know the supplied HostID,
255 * LOCKDOWN_E_SSL_ERROR if enabling SSL communication failed 255 * LOCKDOWN_E_SSL_ERROR if enabling SSL communication failed
256 */ 256 */
257lockdownd_error_t lockdownd_start_session(lockdownd_client_t client, const char *host_id, char **session_id, int *ssl_enabled); 257LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_start_session(lockdownd_client_t client, const char *host_id, char **session_id, int *ssl_enabled);
258 258
259/** 259/**
260 * Closes the lockdownd session by sending the StopSession request. 260 * Closes the lockdownd session by sending the StopSession request.
@@ -266,7 +266,7 @@ lockdownd_error_t lockdownd_start_session(lockdownd_client_t client, const char
266 * 266 *
267 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL 267 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL
268 */ 268 */
269lockdownd_error_t lockdownd_stop_session(lockdownd_client_t client, const char *session_id); 269LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_stop_session(lockdownd_client_t client, const char *session_id);
270 270
271/** 271/**
272 * Sends a plist to lockdownd. 272 * Sends a plist to lockdownd.
@@ -280,7 +280,7 @@ lockdownd_error_t lockdownd_stop_session(lockdownd_client_t client, const char *
280 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client or 280 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client or
281 * plist is NULL 281 * plist is NULL
282 */ 282 */
283lockdownd_error_t lockdownd_send(lockdownd_client_t client, plist_t plist); 283LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_send(lockdownd_client_t client, plist_t plist);
284 284
285/** 285/**
286 * Receives a plist from lockdownd. 286 * Receives a plist from lockdownd.
@@ -291,7 +291,7 @@ lockdownd_error_t lockdownd_send(lockdownd_client_t client, plist_t plist);
291 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client or 291 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client or
292 * plist is NULL 292 * plist is NULL
293 */ 293 */
294lockdownd_error_t lockdownd_receive(lockdownd_client_t client, plist_t *plist); 294LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_receive(lockdownd_client_t client, plist_t *plist);
295 295
296/** 296/**
297 * Pairs the device using the supplied pair record. 297 * Pairs the device using the supplied pair record.
@@ -307,7 +307,7 @@ lockdownd_error_t lockdownd_receive(lockdownd_client_t client, plist_t *plist);
307 * LOCKDOWN_E_PASSWORD_PROTECTED if the device is password protected, 307 * LOCKDOWN_E_PASSWORD_PROTECTED if the device is password protected,
308 * LOCKDOWN_E_INVALID_HOST_ID if the device does not know the caller's host id 308 * LOCKDOWN_E_INVALID_HOST_ID if the device does not know the caller's host id
309 */ 309 */
310lockdownd_error_t lockdownd_pair(lockdownd_client_t client, lockdownd_pair_record_t pair_record); 310LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_pair(lockdownd_client_t client, lockdownd_pair_record_t pair_record);
311 311
312 /** 312 /**
313 * Pairs the device using the supplied pair record and passing the given options. 313 * Pairs the device using the supplied pair record and passing the given options.
@@ -326,7 +326,7 @@ lockdownd_error_t lockdownd_pair(lockdownd_client_t client, lockdownd_pair_recor
326 * LOCKDOWN_E_PASSWORD_PROTECTED if the device is password protected, 326 * LOCKDOWN_E_PASSWORD_PROTECTED if the device is password protected,
327 * LOCKDOWN_E_INVALID_HOST_ID if the device does not know the caller's host id 327 * LOCKDOWN_E_INVALID_HOST_ID if the device does not know the caller's host id
328 */ 328 */
329lockdownd_error_t lockdownd_pair_with_options(lockdownd_client_t client, lockdownd_pair_record_t pair_record, plist_t options, plist_t *response); 329LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_pair_with_options(lockdownd_client_t client, lockdownd_pair_record_t pair_record, plist_t options, plist_t *response);
330 330
331/** 331/**
332 * Validates if the device is paired with the given HostID. If successful the 332 * Validates if the device is paired with the given HostID. If successful the
@@ -345,7 +345,7 @@ lockdownd_error_t lockdownd_pair_with_options(lockdownd_client_t client, lockdow
345 * LOCKDOWN_E_PASSWORD_PROTECTED if the device is password protected, 345 * LOCKDOWN_E_PASSWORD_PROTECTED if the device is password protected,
346 * LOCKDOWN_E_INVALID_HOST_ID if the device does not know the caller's host id 346 * LOCKDOWN_E_INVALID_HOST_ID if the device does not know the caller's host id
347 */ 347 */
348lockdownd_error_t lockdownd_validate_pair(lockdownd_client_t client, lockdownd_pair_record_t pair_record); 348LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_validate_pair(lockdownd_client_t client, lockdownd_pair_record_t pair_record);
349 349
350/** 350/**
351 * Unpairs the device with the given HostID and removes the pairing records 351 * Unpairs the device with the given HostID and removes the pairing records
@@ -361,7 +361,7 @@ lockdownd_error_t lockdownd_validate_pair(lockdownd_client_t client, lockdownd_p
361 * LOCKDOWN_E_PASSWORD_PROTECTED if the device is password protected, 361 * LOCKDOWN_E_PASSWORD_PROTECTED if the device is password protected,
362 * LOCKDOWN_E_INVALID_HOST_ID if the device does not know the caller's host id 362 * LOCKDOWN_E_INVALID_HOST_ID if the device does not know the caller's host id
363 */ 363 */
364lockdownd_error_t lockdownd_unpair(lockdownd_client_t client, lockdownd_pair_record_t pair_record); 364LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_unpair(lockdownd_client_t client, lockdownd_pair_record_t pair_record);
365 365
366/** 366/**
367 * Activates the device. Only works within an open session. 367 * Activates the device. Only works within an open session.
@@ -378,7 +378,7 @@ lockdownd_error_t lockdownd_unpair(lockdownd_client_t client, lockdownd_pair_rec
378 * LOCKDOWN_E_INVALID_ACTIVATION_RECORD if the device reports that the 378 * LOCKDOWN_E_INVALID_ACTIVATION_RECORD if the device reports that the
379 * activation_record is invalid 379 * activation_record is invalid
380 */ 380 */
381lockdownd_error_t lockdownd_activate(lockdownd_client_t client, plist_t activation_record); 381LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_activate(lockdownd_client_t client, plist_t activation_record);
382 382
383/** 383/**
384 * Deactivates the device, returning it to the locked “Activate with iTunes” 384 * Deactivates the device, returning it to the locked “Activate with iTunes”
@@ -390,7 +390,7 @@ lockdownd_error_t lockdownd_activate(lockdownd_client_t client, plist_t activati
390 * LOCKDOWN_E_NO_RUNNING_SESSION if no session is open, 390 * LOCKDOWN_E_NO_RUNNING_SESSION if no session is open,
391 * LOCKDOWN_E_PLIST_ERROR if the received plist is broken 391 * LOCKDOWN_E_PLIST_ERROR if the received plist is broken
392 */ 392 */
393lockdownd_error_t lockdownd_deactivate(lockdownd_client_t client); 393LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_deactivate(lockdownd_client_t client);
394 394
395/** 395/**
396 * Tells the device to immediately enter recovery mode. 396 * Tells the device to immediately enter recovery mode.
@@ -399,7 +399,7 @@ lockdownd_error_t lockdownd_deactivate(lockdownd_client_t client);
399 * 399 *
400 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL 400 * @return LOCKDOWN_E_SUCCESS on success, LOCKDOWN_E_INVALID_ARG when client is NULL
401 */ 401 */
402lockdownd_error_t lockdownd_enter_recovery(lockdownd_client_t client); 402LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_enter_recovery(lockdownd_client_t client);
403 403
404/** 404/**
405 * Sends the Goodbye request to lockdownd signaling the end of communication. 405 * Sends the Goodbye request to lockdownd signaling the end of communication.
@@ -410,7 +410,7 @@ lockdownd_error_t lockdownd_enter_recovery(lockdownd_client_t client);
410 * is NULL, LOCKDOWN_E_PLIST_ERROR if the device did not acknowledge the 410 * is NULL, LOCKDOWN_E_PLIST_ERROR if the device did not acknowledge the
411 * request 411 * request
412 */ 412 */
413lockdownd_error_t lockdownd_goodbye(lockdownd_client_t client); 413LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_goodbye(lockdownd_client_t client);
414 414
415/** 415/**
416 * Creates a CU pairing session for the current lockdown client. 416 * Creates a CU pairing session for the current lockdown client.
@@ -439,7 +439,7 @@ lockdownd_error_t lockdownd_goodbye(lockdownd_client_t client);
439 * parameters is invalid, LOCKDOWN_E_PAIRING_FAILED if the pairing failed, 439 * parameters is invalid, LOCKDOWN_E_PAIRING_FAILED if the pairing failed,
440 * or a LOCKDOWN_E_* error code otherwise. 440 * or a LOCKDOWN_E_* error code otherwise.
441 */ 441 */
442lockdownd_error_t lockdownd_cu_pairing_create(lockdownd_client_t client, lockdownd_cu_pairing_cb_t pairing_callback, void* cb_user_data, plist_t host_info, plist_t acl); 442LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_cu_pairing_create(lockdownd_client_t client, lockdownd_cu_pairing_cb_t pairing_callback, void* cb_user_data, plist_t host_info, plist_t acl);
443 443
444/** 444/**
445 * Sends a request via lockdown client with established CU pairing session 445 * Sends a request via lockdown client with established CU pairing session
@@ -459,7 +459,7 @@ lockdownd_error_t lockdownd_cu_pairing_create(lockdownd_client_t client, lockdow
459 * lockdown client does not have an established CU pairing session, 459 * lockdown client does not have an established CU pairing session,
460 * or a LOCKDOWN_E_* error code otherwise. 460 * or a LOCKDOWN_E_* error code otherwise.
461 */ 461 */
462lockdownd_error_t lockdownd_cu_send_request_and_get_reply(lockdownd_client_t client, const char* request, plist_t request_payload, plist_t* reply); 462LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_cu_send_request_and_get_reply(lockdownd_client_t client, const char* request, plist_t request_payload, plist_t* reply);
463 463
464/** 464/**
465 * Retrieves a value using an optional domain and/or key name from a lockdown 465 * Retrieves a value using an optional domain and/or key name from a lockdown
@@ -479,7 +479,7 @@ lockdownd_error_t lockdownd_cu_send_request_and_get_reply(lockdownd_client_t cli
479 * lockdown client does not have an established CU pairing session, 479 * lockdown client does not have an established CU pairing session,
480 * or a LOCKDOWN_E_* error code otherwise. 480 * or a LOCKDOWN_E_* error code otherwise.
481 */ 481 */
482lockdownd_error_t lockdownd_get_value_cu(lockdownd_client_t client, const char* domain, const char* key, plist_t* value); 482LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_get_value_cu(lockdownd_client_t client, const char* domain, const char* key, plist_t* value);
483 483
484/** 484/**
485 * Perform a device pairing with a lockdown client that has an established 485 * Perform a device pairing with a lockdown client that has an established
@@ -492,7 +492,7 @@ lockdownd_error_t lockdownd_get_value_cu(lockdownd_client_t client, const char*
492 * does not have an established CU pairing session, or a LOCKDOWN_E_* error 492 * does not have an established CU pairing session, or a LOCKDOWN_E_* error
493 * code otherwise. 493 * code otherwise.
494 */ 494 */
495lockdownd_error_t lockdownd_pair_cu(lockdownd_client_t client); 495LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_pair_cu(lockdownd_client_t client);
496 496
497 497
498/* Helper */ 498/* Helper */
@@ -504,7 +504,7 @@ lockdownd_error_t lockdownd_pair_cu(lockdownd_client_t client);
504 * @param label The label to set or NULL to disable sending a label 504 * @param label The label to set or NULL to disable sending a label
505 * 505 *
506 */ 506 */
507void lockdownd_client_set_label(lockdownd_client_t client, const char *label); 507LIBIMOBILEDEVICE_API void lockdownd_client_set_label(lockdownd_client_t client, const char *label);
508 508
509/** 509/**
510 * Returns the unique id of the device from lockdownd. 510 * Returns the unique id of the device from lockdownd.
@@ -515,7 +515,7 @@ void lockdownd_client_set_label(lockdownd_client_t client, const char *label);
515 * 515 *
516 * @return LOCKDOWN_E_SUCCESS on success 516 * @return LOCKDOWN_E_SUCCESS on success
517 */ 517 */
518lockdownd_error_t lockdownd_get_device_udid(lockdownd_client_t client, char **udid); 518LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_get_device_udid(lockdownd_client_t client, char **udid);
519 519
520/** 520/**
521 * Retrieves the name of the device from lockdownd set by the user. 521 * Retrieves the name of the device from lockdownd set by the user.
@@ -526,7 +526,7 @@ lockdownd_error_t lockdownd_get_device_udid(lockdownd_client_t client, char **ud
526 * 526 *
527 * @return LOCKDOWN_E_SUCCESS on success 527 * @return LOCKDOWN_E_SUCCESS on success
528 */ 528 */
529lockdownd_error_t lockdownd_get_device_name(lockdownd_client_t client, char **device_name); 529LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_get_device_name(lockdownd_client_t client, char **device_name);
530 530
531/** 531/**
532 * Calculates and returns the data classes the device supports from lockdownd. 532 * Calculates and returns the data classes the device supports from lockdownd.
@@ -541,7 +541,7 @@ lockdownd_error_t lockdownd_get_device_name(lockdownd_client_t client, char **de
541 * LOCKDOWN_E_NO_RUNNING_SESSION if no session is open, 541 * LOCKDOWN_E_NO_RUNNING_SESSION if no session is open,
542 * LOCKDOWN_E_PLIST_ERROR if the received plist is broken 542 * LOCKDOWN_E_PLIST_ERROR if the received plist is broken
543 */ 543 */
544lockdownd_error_t lockdownd_get_sync_data_classes(lockdownd_client_t client, char ***classes, int *count); 544LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_get_sync_data_classes(lockdownd_client_t client, char ***classes, int *count);
545 545
546/** 546/**
547 * Frees memory of an allocated array of data classes as returned by lockdownd_get_sync_data_classes() 547 * Frees memory of an allocated array of data classes as returned by lockdownd_get_sync_data_classes()
@@ -550,7 +550,7 @@ lockdownd_error_t lockdownd_get_sync_data_classes(lockdownd_client_t client, cha
550 * 550 *
551 * @return LOCKDOWN_E_SUCCESS on success 551 * @return LOCKDOWN_E_SUCCESS on success
552 */ 552 */
553lockdownd_error_t lockdownd_data_classes_free(char **classes); 553LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_data_classes_free(char **classes);
554 554
555/** 555/**
556 * Frees memory of a service descriptor as returned by lockdownd_start_service() 556 * Frees memory of a service descriptor as returned by lockdownd_start_service()
@@ -559,7 +559,7 @@ lockdownd_error_t lockdownd_data_classes_free(char **classes);
559 * 559 *
560 * @return LOCKDOWN_E_SUCCESS on success 560 * @return LOCKDOWN_E_SUCCESS on success
561 */ 561 */
562lockdownd_error_t lockdownd_service_descriptor_free(lockdownd_service_descriptor_t service); 562LIBIMOBILEDEVICE_API lockdownd_error_t lockdownd_service_descriptor_free(lockdownd_service_descriptor_t service);
563 563
564/** 564/**
565 * Gets a readable error string for a given lockdown error code. 565 * Gets a readable error string for a given lockdown error code.
@@ -568,7 +568,7 @@ lockdownd_error_t lockdownd_service_descriptor_free(lockdownd_service_descriptor
568 * 568 *
569 * @returns A readable error string 569 * @returns A readable error string
570 */ 570 */
571const char* lockdownd_strerror(lockdownd_error_t err); 571LIBIMOBILEDEVICE_API const char* lockdownd_strerror(lockdownd_error_t err);
572 572
573#ifdef __cplusplus 573#ifdef __cplusplus
574} 574}
diff --git a/include/libimobiledevice/misagent.h b/include/libimobiledevice/misagent.h
index 394f5ce..7981a8b 100644
--- a/include/libimobiledevice/misagent.h
+++ b/include/libimobiledevice/misagent.h
@@ -60,7 +60,7 @@ typedef misagent_client_private *misagent_client_t; /**< The client handle. */
60 * @return MISAGENT_E_SUCCESS on success, MISAGENT_E_INVALID_ARG when 60 * @return MISAGENT_E_SUCCESS on success, MISAGENT_E_INVALID_ARG when
61 * client is NULL, or an MISAGENT_E_* error code otherwise. 61 * client is NULL, or an MISAGENT_E_* error code otherwise.
62 */ 62 */
63misagent_error_t misagent_client_new(idevice_t device, lockdownd_service_descriptor_t service, misagent_client_t *client); 63LIBIMOBILEDEVICE_API misagent_error_t misagent_client_new(idevice_t device, lockdownd_service_descriptor_t service, misagent_client_t *client);
64 64
65/** 65/**
66 * Starts a new misagent service on the specified device and connects to it. 66 * Starts a new misagent service on the specified device and connects to it.
@@ -75,7 +75,7 @@ misagent_error_t misagent_client_new(idevice_t device, lockdownd_service_descrip
75 * @return MISAGENT_E_SUCCESS on success, or an MISAGENT_E_* error 75 * @return MISAGENT_E_SUCCESS on success, or an MISAGENT_E_* error
76 * code otherwise. 76 * code otherwise.
77 */ 77 */
78misagent_error_t misagent_client_start_service(idevice_t device, misagent_client_t* client, const char* label); 78LIBIMOBILEDEVICE_API misagent_error_t misagent_client_start_service(idevice_t device, misagent_client_t* client, const char* label);
79 79
80/** 80/**
81 * Disconnects an misagent client from the device and frees up the 81 * Disconnects an misagent client from the device and frees up the
@@ -86,7 +86,7 @@ misagent_error_t misagent_client_start_service(idevice_t device, misagent_client
86 * @return MISAGENT_E_SUCCESS on success, MISAGENT_E_INVALID_ARG when 86 * @return MISAGENT_E_SUCCESS on success, MISAGENT_E_INVALID_ARG when
87 * client is NULL, or an MISAGENT_E_* error code otherwise. 87 * client is NULL, or an MISAGENT_E_* error code otherwise.
88 */ 88 */
89misagent_error_t misagent_client_free(misagent_client_t client); 89LIBIMOBILEDEVICE_API misagent_error_t misagent_client_free(misagent_client_t client);
90 90
91 91
92/** 92/**
@@ -99,7 +99,7 @@ misagent_error_t misagent_client_free(misagent_client_t client);
99 * @return MISAGENT_E_SUCCESS on success, MISAGENT_E_INVALID_ARG when 99 * @return MISAGENT_E_SUCCESS on success, MISAGENT_E_INVALID_ARG when
100 * client is invalid, or an MISAGENT_E_* error code otherwise. 100 * client is invalid, or an MISAGENT_E_* error code otherwise.
101 */ 101 */
102misagent_error_t misagent_install(misagent_client_t client, plist_t profile); 102LIBIMOBILEDEVICE_API misagent_error_t misagent_install(misagent_client_t client, plist_t profile);
103 103
104/** 104/**
105 * Retrieves all installed provisioning profiles (iOS 9.2.1 or below). 105 * Retrieves all installed provisioning profiles (iOS 9.2.1 or below).
@@ -118,7 +118,7 @@ misagent_error_t misagent_install(misagent_client_t client, plist_t profile);
118 * still returns MISAGENT_E_SUCCESS and profiles will just point to an 118 * still returns MISAGENT_E_SUCCESS and profiles will just point to an
119 * empty array. 119 * empty array.
120 */ 120 */
121misagent_error_t misagent_copy(misagent_client_t client, plist_t* profiles); 121LIBIMOBILEDEVICE_API misagent_error_t misagent_copy(misagent_client_t client, plist_t* profiles);
122 122
123/** 123/**
124 * Retrieves all installed provisioning profiles (iOS 9.3 or higher). 124 * Retrieves all installed provisioning profiles (iOS 9.3 or higher).
@@ -137,7 +137,7 @@ misagent_error_t misagent_copy(misagent_client_t client, plist_t* profiles);
137 * still returns MISAGENT_E_SUCCESS and profiles will just point to an 137 * still returns MISAGENT_E_SUCCESS and profiles will just point to an
138 * empty array. 138 * empty array.
139 */ 139 */
140misagent_error_t misagent_copy_all(misagent_client_t client, plist_t* profiles); 140LIBIMOBILEDEVICE_API misagent_error_t misagent_copy_all(misagent_client_t client, plist_t* profiles);
141 141
142/** 142/**
143 * Removes a given provisioning profile. 143 * Removes a given provisioning profile.
@@ -150,7 +150,7 @@ misagent_error_t misagent_copy_all(misagent_client_t client, plist_t* profiles);
150 * @return MISAGENT_E_SUCCESS on success, MISAGENT_E_INVALID_ARG when 150 * @return MISAGENT_E_SUCCESS on success, MISAGENT_E_INVALID_ARG when
151 * client is invalid, or an MISAGENT_E_* error code otherwise. 151 * client is invalid, or an MISAGENT_E_* error code otherwise.
152 */ 152 */
153misagent_error_t misagent_remove(misagent_client_t client, const char* profileID); 153LIBIMOBILEDEVICE_API misagent_error_t misagent_remove(misagent_client_t client, const char* profileID);
154 154
155/** 155/**
156 * Retrieves the status code from the last operation. 156 * Retrieves the status code from the last operation.
@@ -159,7 +159,7 @@ misagent_error_t misagent_remove(misagent_client_t client, const char* profileID
159 * 159 *
160 * @return -1 if client is invalid, or the status code from the last operation 160 * @return -1 if client is invalid, or the status code from the last operation
161 */ 161 */
162int misagent_get_status_code(misagent_client_t client); 162LIBIMOBILEDEVICE_API int misagent_get_status_code(misagent_client_t client);
163 163
164#ifdef __cplusplus 164#ifdef __cplusplus
165} 165}
diff --git a/include/libimobiledevice/mobile_image_mounter.h b/include/libimobiledevice/mobile_image_mounter.h
index 891df40..d4fc3f4 100644
--- a/include/libimobiledevice/mobile_image_mounter.h
+++ b/include/libimobiledevice/mobile_image_mounter.h
@@ -66,7 +66,7 @@ typedef ssize_t (*mobile_image_mounter_upload_cb_t) (void* buffer, size_t length
66 * or MOBILE_IMAGE_MOUNTER_E_CONN_FAILED if the connection to the 66 * or MOBILE_IMAGE_MOUNTER_E_CONN_FAILED if the connection to the
67 * device could not be established. 67 * device could not be established.
68 */ 68 */
69mobile_image_mounter_error_t mobile_image_mounter_new(idevice_t device, lockdownd_service_descriptor_t service, mobile_image_mounter_client_t *client); 69LIBIMOBILEDEVICE_API mobile_image_mounter_error_t mobile_image_mounter_new(idevice_t device, lockdownd_service_descriptor_t service, mobile_image_mounter_client_t *client);
70 70
71/** 71/**
72 * Starts a new mobile_image_mounter service on the specified device and connects to it. 72 * Starts a new mobile_image_mounter service on the specified device and connects to it.
@@ -81,7 +81,7 @@ mobile_image_mounter_error_t mobile_image_mounter_new(idevice_t device, lockdown
81 * @return MOBILE_IMAGE_MOUNTER_E_SUCCESS on success, or an MOBILE_IMAGE_MOUNTER_E_* error 81 * @return MOBILE_IMAGE_MOUNTER_E_SUCCESS on success, or an MOBILE_IMAGE_MOUNTER_E_* error
82 * code otherwise. 82 * code otherwise.
83 */ 83 */
84mobile_image_mounter_error_t mobile_image_mounter_start_service(idevice_t device, mobile_image_mounter_client_t* client, const char* label); 84LIBIMOBILEDEVICE_API mobile_image_mounter_error_t mobile_image_mounter_start_service(idevice_t device, mobile_image_mounter_client_t* client, const char* label);
85 85
86/** 86/**
87 * Disconnects a mobile_image_mounter client from the device and frees up the 87 * Disconnects a mobile_image_mounter client from the device and frees up the
@@ -92,7 +92,7 @@ mobile_image_mounter_error_t mobile_image_mounter_start_service(idevice_t device
92 * @return MOBILE_IMAGE_MOUNTER_E_SUCCESS on success, 92 * @return MOBILE_IMAGE_MOUNTER_E_SUCCESS on success,
93 * or MOBILE_IMAGE_MOUNTER_E_INVALID_ARG if client is NULL. 93 * or MOBILE_IMAGE_MOUNTER_E_INVALID_ARG if client is NULL.
94 */ 94 */
95mobile_image_mounter_error_t mobile_image_mounter_free(mobile_image_mounter_client_t client); 95LIBIMOBILEDEVICE_API mobile_image_mounter_error_t mobile_image_mounter_free(mobile_image_mounter_client_t client);
96 96
97 97
98/** 98/**
@@ -108,7 +108,7 @@ mobile_image_mounter_error_t mobile_image_mounter_free(mobile_image_mounter_clie
108 * 108 *
109 * @return MOBILE_IMAGE_MOUNTER_E_SUCCESS on success, or an error code on error 109 * @return MOBILE_IMAGE_MOUNTER_E_SUCCESS on success, or an error code on error
110 */ 110 */
111mobile_image_mounter_error_t mobile_image_mounter_lookup_image(mobile_image_mounter_client_t client, const char *image_type, plist_t *result); 111LIBIMOBILEDEVICE_API mobile_image_mounter_error_t mobile_image_mounter_lookup_image(mobile_image_mounter_client_t client, const char *image_type, plist_t *result);
112 112
113/** 113/**
114 * Uploads an image with an optional signature to the device. 114 * Uploads an image with an optional signature to the device.
@@ -127,7 +127,7 @@ mobile_image_mounter_error_t mobile_image_mounter_lookup_image(mobile_image_moun
127 * @return MOBILE_IMAGE_MOUNTER_E_SUCCESS on succes, or a 127 * @return MOBILE_IMAGE_MOUNTER_E_SUCCESS on succes, or a
128 * MOBILE_IMAGE_MOUNTER_E_* error code otherwise. 128 * MOBILE_IMAGE_MOUNTER_E_* error code otherwise.
129 */ 129 */
130mobile_image_mounter_error_t mobile_image_mounter_upload_image(mobile_image_mounter_client_t client, const char *image_type, size_t image_size, const char *signature, uint16_t signature_size, mobile_image_mounter_upload_cb_t upload_cb, void* userdata); 130LIBIMOBILEDEVICE_API mobile_image_mounter_error_t mobile_image_mounter_upload_image(mobile_image_mounter_client_t client, const char *image_type, size_t image_size, const char *signature, uint16_t signature_size, mobile_image_mounter_upload_cb_t upload_cb, void* userdata);
131 131
132/** 132/**
133 * Mounts an image on the device. 133 * Mounts an image on the device.
@@ -150,7 +150,7 @@ mobile_image_mounter_error_t mobile_image_mounter_upload_image(mobile_image_moun
150 * MOBILE_IMAGE_MOUNTER_E_INVALID_ARG if on ore more parameters are 150 * MOBILE_IMAGE_MOUNTER_E_INVALID_ARG if on ore more parameters are
151 * invalid, or another error code otherwise. 151 * invalid, or another error code otherwise.
152 */ 152 */
153mobile_image_mounter_error_t mobile_image_mounter_mount_image(mobile_image_mounter_client_t client, const char *image_path, const char *signature, uint16_t signature_size, const char *image_type, plist_t *result); 153LIBIMOBILEDEVICE_API mobile_image_mounter_error_t mobile_image_mounter_mount_image(mobile_image_mounter_client_t client, const char *image_path, const char *signature, uint16_t signature_size, const char *image_type, plist_t *result);
154 154
155/** 155/**
156 * Hangs up the connection to the mobile_image_mounter service. 156 * Hangs up the connection to the mobile_image_mounter service.
@@ -163,7 +163,7 @@ mobile_image_mounter_error_t mobile_image_mounter_mount_image(mobile_image_mount
163 * MOBILE_IMAGE_MOUNTER_E_INVALID_ARG if client is invalid, 163 * MOBILE_IMAGE_MOUNTER_E_INVALID_ARG if client is invalid,
164 * or another error code otherwise. 164 * or another error code otherwise.
165 */ 165 */
166mobile_image_mounter_error_t mobile_image_mounter_hangup(mobile_image_mounter_client_t client); 166LIBIMOBILEDEVICE_API mobile_image_mounter_error_t mobile_image_mounter_hangup(mobile_image_mounter_client_t client);
167 167
168#ifdef __cplusplus 168#ifdef __cplusplus
169} 169}
diff --git a/include/libimobiledevice/mobileactivation.h b/include/libimobiledevice/mobileactivation.h
index 774c116..8e036a8 100644
--- a/include/libimobiledevice/mobileactivation.h
+++ b/include/libimobiledevice/mobileactivation.h
@@ -59,7 +59,7 @@ typedef mobileactivation_client_private *mobileactivation_client_t; /**< The cli
59 * MOBILEACTIVATION_E_INVALID_ARG when one of the parameters is invalid, 59 * MOBILEACTIVATION_E_INVALID_ARG when one of the parameters is invalid,
60 * or MOBILEACTIVATION_E_MUX_ERROR when the connection failed. 60 * or MOBILEACTIVATION_E_MUX_ERROR when the connection failed.
61 */ 61 */
62mobileactivation_error_t mobileactivation_client_new(idevice_t device, lockdownd_service_descriptor_t service, mobileactivation_client_t *client); 62LIBIMOBILEDEVICE_API mobileactivation_error_t mobileactivation_client_new(idevice_t device, lockdownd_service_descriptor_t service, mobileactivation_client_t *client);
63 63
64/** 64/**
65 * Starts a new mobileactivation service on the specified device and connects to it. 65 * Starts a new mobileactivation service on the specified device and connects to it.
@@ -74,7 +74,7 @@ mobileactivation_error_t mobileactivation_client_new(idevice_t device, lockdownd
74 * @return MOBILEACTIVATION_E_SUCCESS on success, or an MOBILEACTIVATION_E_* 74 * @return MOBILEACTIVATION_E_SUCCESS on success, or an MOBILEACTIVATION_E_*
75 * error code otherwise. 75 * error code otherwise.
76 */ 76 */
77mobileactivation_error_t mobileactivation_client_start_service(idevice_t device, mobileactivation_client_t* client, const char* label); 77LIBIMOBILEDEVICE_API mobileactivation_error_t mobileactivation_client_start_service(idevice_t device, mobileactivation_client_t* client, const char* label);
78 78
79/** 79/**
80 * Disconnects a mobileactivation client from the device and frees up the 80 * Disconnects a mobileactivation client from the device and frees up the
@@ -87,7 +87,7 @@ mobileactivation_error_t mobileactivation_client_start_service(idevice_t device,
87 * is invalid, or MOBILEACTIVATION_E_UNKNOWN_ERROR when the was an 87 * is invalid, or MOBILEACTIVATION_E_UNKNOWN_ERROR when the was an
88 * error freeing the parent property_list_service client. 88 * error freeing the parent property_list_service client.
89 */ 89 */
90mobileactivation_error_t mobileactivation_client_free(mobileactivation_client_t client); 90LIBIMOBILEDEVICE_API mobileactivation_error_t mobileactivation_client_free(mobileactivation_client_t client);
91 91
92 92
93/** 93/**
@@ -102,7 +102,7 @@ mobileactivation_error_t mobileactivation_client_free(mobileactivation_client_t
102 * @return MOBILEACTIVATION_E_SUCCESS on success, or an MOBILEACTIVATION_E_* 102 * @return MOBILEACTIVATION_E_SUCCESS on success, or an MOBILEACTIVATION_E_*
103 * error code otherwise. 103 * error code otherwise.
104 */ 104 */
105mobileactivation_error_t mobileactivation_get_activation_state(mobileactivation_client_t client, plist_t *state); 105LIBIMOBILEDEVICE_API mobileactivation_error_t mobileactivation_get_activation_state(mobileactivation_client_t client, plist_t *state);
106 106
107/** 107/**
108 * Retrieves a session blob required for 'drmHandshake' via albert.apple.com. 108 * Retrieves a session blob required for 'drmHandshake' via albert.apple.com.
@@ -116,7 +116,7 @@ mobileactivation_error_t mobileactivation_get_activation_state(mobileactivation_
116 * @return MOBILEACTIVATION_E_SUCCESS on success, or an MOBILEACTIVATION_E_* 116 * @return MOBILEACTIVATION_E_SUCCESS on success, or an MOBILEACTIVATION_E_*
117 * error code otherwise. 117 * error code otherwise.
118 */ 118 */
119mobileactivation_error_t mobileactivation_create_activation_session_info(mobileactivation_client_t client, plist_t *blob); 119LIBIMOBILEDEVICE_API mobileactivation_error_t mobileactivation_create_activation_session_info(mobileactivation_client_t client, plist_t *blob);
120 120
121/** 121/**
122 * Retrieves the activation info required for device activation. 122 * Retrieves the activation info required for device activation.
@@ -130,7 +130,7 @@ mobileactivation_error_t mobileactivation_create_activation_session_info(mobilea
130 * @return MOBILEACTIVATION_E_SUCCESS on success, or an MOBILEACTIVATION_E_* 130 * @return MOBILEACTIVATION_E_SUCCESS on success, or an MOBILEACTIVATION_E_*
131 * error code otherwise. 131 * error code otherwise.
132 */ 132 */
133mobileactivation_error_t mobileactivation_create_activation_info(mobileactivation_client_t client, plist_t *info); 133LIBIMOBILEDEVICE_API mobileactivation_error_t mobileactivation_create_activation_info(mobileactivation_client_t client, plist_t *info);
134 134
135/** 135/**
136 * Retrieves the activation info required for device activation in 'session' 136 * Retrieves the activation info required for device activation in 'session'
@@ -148,7 +148,7 @@ mobileactivation_error_t mobileactivation_create_activation_info(mobileactivatio
148 * @return MOBILEACTIVATION_E_SUCCESS on success, or an MOBILEACTIVATION_E_* 148 * @return MOBILEACTIVATION_E_SUCCESS on success, or an MOBILEACTIVATION_E_*
149 * error code otherwise. 149 * error code otherwise.
150 */ 150 */
151mobileactivation_error_t mobileactivation_create_activation_info_with_session(mobileactivation_client_t client, plist_t handshake_response, plist_t *info); 151LIBIMOBILEDEVICE_API mobileactivation_error_t mobileactivation_create_activation_info_with_session(mobileactivation_client_t client, plist_t handshake_response, plist_t *info);
152 152
153/** 153/**
154 * Activates the device with the given activation record. 154 * Activates the device with the given activation record.
@@ -161,7 +161,7 @@ mobileactivation_error_t mobileactivation_create_activation_info_with_session(mo
161 * @return MOBILEACTIVATION_E_SUCCESS on success, or an MOBILEACTIVATION_E_* 161 * @return MOBILEACTIVATION_E_SUCCESS on success, or an MOBILEACTIVATION_E_*
162 * error code otherwise. 162 * error code otherwise.
163 */ 163 */
164mobileactivation_error_t mobileactivation_activate(mobileactivation_client_t client, plist_t activation_record); 164LIBIMOBILEDEVICE_API mobileactivation_error_t mobileactivation_activate(mobileactivation_client_t client, plist_t activation_record);
165 165
166/** 166/**
167 * Activates the device with the given activation record in 'session' mode. 167 * Activates the device with the given activation record in 'session' mode.
@@ -176,14 +176,14 @@ mobileactivation_error_t mobileactivation_activate(mobileactivation_client_t cli
176 * @return MOBILEACTIVATION_E_SUCCESS on success, or an MOBILEACTIVATION_E_* 176 * @return MOBILEACTIVATION_E_SUCCESS on success, or an MOBILEACTIVATION_E_*
177 * error code otherwise. 177 * error code otherwise.
178 */ 178 */
179mobileactivation_error_t mobileactivation_activate_with_session(mobileactivation_client_t client, plist_t activation_record, plist_t headers); 179LIBIMOBILEDEVICE_API mobileactivation_error_t mobileactivation_activate_with_session(mobileactivation_client_t client, plist_t activation_record, plist_t headers);
180 180
181/** 181/**
182 * Deactivates the device. 182 * Deactivates the device.
183 * 183 *
184 * @param client The mobileactivation client 184 * @param client The mobileactivation client
185 */ 185 */
186mobileactivation_error_t mobileactivation_deactivate(mobileactivation_client_t client); 186LIBIMOBILEDEVICE_API mobileactivation_error_t mobileactivation_deactivate(mobileactivation_client_t client);
187 187
188#ifdef __cplusplus 188#ifdef __cplusplus
189} 189}
diff --git a/include/libimobiledevice/mobilebackup.h b/include/libimobiledevice/mobilebackup.h
index d4c042e..2ecb60c 100644
--- a/include/libimobiledevice/mobilebackup.h
+++ b/include/libimobiledevice/mobilebackup.h
@@ -69,7 +69,7 @@ typedef enum {
69 * or more parameters are invalid, or DEVICE_LINK_SERVICE_E_BAD_VERSION if 69 * or more parameters are invalid, or DEVICE_LINK_SERVICE_E_BAD_VERSION if
70 * the mobilebackup version on the device is newer. 70 * the mobilebackup version on the device is newer.
71 */ 71 */
72mobilebackup_error_t mobilebackup_client_new(idevice_t device, lockdownd_service_descriptor_t service, mobilebackup_client_t * client); 72LIBIMOBILEDEVICE_API mobilebackup_error_t mobilebackup_client_new(idevice_t device, lockdownd_service_descriptor_t service, mobilebackup_client_t * client);
73 73
74/** 74/**
75 * Starts a new mobilebackup service on the specified device and connects to it. 75 * Starts a new mobilebackup service on the specified device and connects to it.
@@ -84,7 +84,7 @@ mobilebackup_error_t mobilebackup_client_new(idevice_t device, lockdownd_service
84 * @return MOBILEBACKUP_E_SUCCESS on success, or an MOBILEBACKUP_E_* error 84 * @return MOBILEBACKUP_E_SUCCESS on success, or an MOBILEBACKUP_E_* error
85 * code otherwise. 85 * code otherwise.
86 */ 86 */
87mobilebackup_error_t mobilebackup_client_start_service(idevice_t device, mobilebackup_client_t* client, const char* label); 87LIBIMOBILEDEVICE_API mobilebackup_error_t mobilebackup_client_start_service(idevice_t device, mobilebackup_client_t* client, const char* label);
88 88
89/** 89/**
90 * Disconnects a mobilebackup client from the device and frees up the 90 * Disconnects a mobilebackup client from the device and frees up the
@@ -95,7 +95,7 @@ mobilebackup_error_t mobilebackup_client_start_service(idevice_t device, mobileb
95 * @return MOBILEBACKUP_E_SUCCESS on success, or MOBILEBACKUP_E_INVALID_ARG 95 * @return MOBILEBACKUP_E_SUCCESS on success, or MOBILEBACKUP_E_INVALID_ARG
96 * if client is NULL. 96 * if client is NULL.
97 */ 97 */
98mobilebackup_error_t mobilebackup_client_free(mobilebackup_client_t client); 98LIBIMOBILEDEVICE_API mobilebackup_error_t mobilebackup_client_free(mobilebackup_client_t client);
99 99
100 100
101/** 101/**
@@ -106,7 +106,7 @@ mobilebackup_error_t mobilebackup_client_free(mobilebackup_client_t client);
106 * 106 *
107 * @return an error code 107 * @return an error code
108 */ 108 */
109mobilebackup_error_t mobilebackup_receive(mobilebackup_client_t client, plist_t *plist); 109LIBIMOBILEDEVICE_API mobilebackup_error_t mobilebackup_receive(mobilebackup_client_t client, plist_t *plist);
110 110
111/** 111/**
112 * Sends mobilebackup data to the device 112 * Sends mobilebackup data to the device
@@ -119,7 +119,7 @@ mobilebackup_error_t mobilebackup_receive(mobilebackup_client_t client, plist_t
119 * 119 *
120 * @return an error code 120 * @return an error code
121 */ 121 */
122mobilebackup_error_t mobilebackup_send(mobilebackup_client_t client, plist_t plist); 122LIBIMOBILEDEVICE_API mobilebackup_error_t mobilebackup_send(mobilebackup_client_t client, plist_t plist);
123 123
124/** 124/**
125 * Request a backup from the connected device. 125 * Request a backup from the connected device.
@@ -138,7 +138,7 @@ mobilebackup_error_t mobilebackup_send(mobilebackup_client_t client, plist_t pli
138 * backup_manifest is not of type PLIST_DICT, MOBILEBACKUP_E_MUX_ERROR 138 * backup_manifest is not of type PLIST_DICT, MOBILEBACKUP_E_MUX_ERROR
139 * if a communication error occurs, MOBILEBACKUP_E_REPLY_NOT_OK 139 * if a communication error occurs, MOBILEBACKUP_E_REPLY_NOT_OK
140 */ 140 */
141mobilebackup_error_t mobilebackup_request_backup(mobilebackup_client_t client, plist_t backup_manifest, const char *base_path, const char *proto_version); 141LIBIMOBILEDEVICE_API mobilebackup_error_t mobilebackup_request_backup(mobilebackup_client_t client, plist_t backup_manifest, const char *base_path, const char *proto_version);
142 142
143/** 143/**
144 * Sends a confirmation to the device that a backup file has been received. 144 * Sends a confirmation to the device that a backup file has been received.
@@ -149,7 +149,7 @@ mobilebackup_error_t mobilebackup_request_backup(mobilebackup_client_t client, p
149 * client is invalid, or MOBILEBACKUP_E_MUX_ERROR if a communication error 149 * client is invalid, or MOBILEBACKUP_E_MUX_ERROR if a communication error
150 * occurs. 150 * occurs.
151 */ 151 */
152mobilebackup_error_t mobilebackup_send_backup_file_received(mobilebackup_client_t client); 152LIBIMOBILEDEVICE_API mobilebackup_error_t mobilebackup_send_backup_file_received(mobilebackup_client_t client);
153 153
154/** 154/**
155 * Request that a backup should be restored to the connected device. 155 * Request that a backup should be restored to the connected device.
@@ -172,7 +172,7 @@ mobilebackup_error_t mobilebackup_send_backup_file_received(mobilebackup_client_
172 * if a communication error occurs, or MOBILEBACKUP_E_REPLY_NOT_OK 172 * if a communication error occurs, or MOBILEBACKUP_E_REPLY_NOT_OK
173 * if the device did not accept the request. 173 * if the device did not accept the request.
174 */ 174 */
175mobilebackup_error_t mobilebackup_request_restore(mobilebackup_client_t client, plist_t backup_manifest, mobilebackup_flags_t flags, const char *proto_version); 175LIBIMOBILEDEVICE_API mobilebackup_error_t mobilebackup_request_restore(mobilebackup_client_t client, plist_t backup_manifest, mobilebackup_flags_t flags, const char *proto_version);
176 176
177/** 177/**
178 * Receive a confirmation from the device that it successfully received 178 * Receive a confirmation from the device that it successfully received
@@ -192,7 +192,7 @@ mobilebackup_error_t mobilebackup_request_restore(mobilebackup_client_t client,
192 * message plist, or MOBILEBACKUP_E_MUX_ERROR if a communication error 192 * message plist, or MOBILEBACKUP_E_MUX_ERROR if a communication error
193 * occurs. 193 * occurs.
194 */ 194 */
195mobilebackup_error_t mobilebackup_receive_restore_file_received(mobilebackup_client_t client, plist_t *result); 195LIBIMOBILEDEVICE_API mobilebackup_error_t mobilebackup_receive_restore_file_received(mobilebackup_client_t client, plist_t *result);
196 196
197/** 197/**
198 * Receive a confirmation from the device that it successfully received 198 * Receive a confirmation from the device that it successfully received
@@ -212,7 +212,7 @@ mobilebackup_error_t mobilebackup_receive_restore_file_received(mobilebackup_cli
212 * message plist, or MOBILEBACKUP_E_MUX_ERROR if a communication error 212 * message plist, or MOBILEBACKUP_E_MUX_ERROR if a communication error
213 * occurs. 213 * occurs.
214 */ 214 */
215mobilebackup_error_t mobilebackup_receive_restore_application_received(mobilebackup_client_t client, plist_t *result); 215LIBIMOBILEDEVICE_API mobilebackup_error_t mobilebackup_receive_restore_application_received(mobilebackup_client_t client, plist_t *result);
216 216
217/** 217/**
218 * Tells the device that the restore process is complete and waits for the 218 * Tells the device that the restore process is complete and waits for the
@@ -225,7 +225,7 @@ mobilebackup_error_t mobilebackup_receive_restore_application_received(mobilebac
225 * message plist is invalid, or MOBILEBACKUP_E_MUX_ERROR if a communication 225 * message plist is invalid, or MOBILEBACKUP_E_MUX_ERROR if a communication
226 * error occurs. 226 * error occurs.
227 */ 227 */
228mobilebackup_error_t mobilebackup_send_restore_complete(mobilebackup_client_t client); 228LIBIMOBILEDEVICE_API mobilebackup_error_t mobilebackup_send_restore_complete(mobilebackup_client_t client);
229 229
230/** 230/**
231 * Sends a backup error message to the device. 231 * Sends a backup error message to the device.
@@ -237,7 +237,7 @@ mobilebackup_error_t mobilebackup_send_restore_complete(mobilebackup_client_t cl
237 * one of the parameters is invalid, or MOBILEBACKUP_E_MUX_ERROR if a 237 * one of the parameters is invalid, or MOBILEBACKUP_E_MUX_ERROR if a
238 * communication error occurs. 238 * communication error occurs.
239 */ 239 */
240mobilebackup_error_t mobilebackup_send_error(mobilebackup_client_t client, const char *reason); 240LIBIMOBILEDEVICE_API mobilebackup_error_t mobilebackup_send_error(mobilebackup_client_t client, const char *reason);
241 241
242#ifdef __cplusplus 242#ifdef __cplusplus
243} 243}
diff --git a/include/libimobiledevice/mobilebackup2.h b/include/libimobiledevice/mobilebackup2.h
index 1af4141..2e9222d 100644
--- a/include/libimobiledevice/mobilebackup2.h
+++ b/include/libimobiledevice/mobilebackup2.h
@@ -64,7 +64,7 @@ typedef mobilebackup2_client_private *mobilebackup2_client_t; /**< The client ha
64 * if one or more parameter is invalid, or MOBILEBACKUP2_E_BAD_VERSION 64 * if one or more parameter is invalid, or MOBILEBACKUP2_E_BAD_VERSION
65 * if the mobilebackup2 version on the device is newer. 65 * if the mobilebackup2 version on the device is newer.
66 */ 66 */
67mobilebackup2_error_t mobilebackup2_client_new(idevice_t device, lockdownd_service_descriptor_t service, mobilebackup2_client_t * client); 67LIBIMOBILEDEVICE_API mobilebackup2_error_t mobilebackup2_client_new(idevice_t device, lockdownd_service_descriptor_t service, mobilebackup2_client_t * client);
68 68
69/** 69/**
70 * Starts a new mobilebackup2 service on the specified device and connects to it. 70 * Starts a new mobilebackup2 service on the specified device and connects to it.
@@ -79,7 +79,7 @@ mobilebackup2_error_t mobilebackup2_client_new(idevice_t device, lockdownd_servi
79 * @return MOBILEBACKUP2_E_SUCCESS on success, or an MOBILEBACKUP2_E_* error 79 * @return MOBILEBACKUP2_E_SUCCESS on success, or an MOBILEBACKUP2_E_* error
80 * code otherwise. 80 * code otherwise.
81 */ 81 */
82mobilebackup2_error_t mobilebackup2_client_start_service(idevice_t device, mobilebackup2_client_t* client, const char* label); 82LIBIMOBILEDEVICE_API mobilebackup2_error_t mobilebackup2_client_start_service(idevice_t device, mobilebackup2_client_t* client, const char* label);
83 83
84/** 84/**
85 * Disconnects a mobilebackup2 client from the device and frees up the 85 * Disconnects a mobilebackup2 client from the device and frees up the
@@ -90,7 +90,7 @@ mobilebackup2_error_t mobilebackup2_client_start_service(idevice_t device, mobil
90 * @return MOBILEBACKUP2_E_SUCCESS on success, or MOBILEBACKUP2_E_INVALID_ARG 90 * @return MOBILEBACKUP2_E_SUCCESS on success, or MOBILEBACKUP2_E_INVALID_ARG
91 * if client is NULL. 91 * if client is NULL.
92 */ 92 */
93mobilebackup2_error_t mobilebackup2_client_free(mobilebackup2_client_t client); 93LIBIMOBILEDEVICE_API mobilebackup2_error_t mobilebackup2_client_free(mobilebackup2_client_t client);
94 94
95 95
96/** 96/**
@@ -105,7 +105,7 @@ mobilebackup2_error_t mobilebackup2_client_free(mobilebackup2_client_t client);
105 * will be inserted into this plist before sending it. This parameter 105 * will be inserted into this plist before sending it. This parameter
106 * can be NULL if message is not NULL. 106 * can be NULL if message is not NULL.
107 */ 107 */
108mobilebackup2_error_t mobilebackup2_send_message(mobilebackup2_client_t client, const char *message, plist_t options); 108LIBIMOBILEDEVICE_API mobilebackup2_error_t mobilebackup2_send_message(mobilebackup2_client_t client, const char *message, plist_t options);
109 109
110/** 110/**
111 * Receives a DL* message plist from the device. 111 * Receives a DL* message plist from the device.
@@ -125,7 +125,7 @@ mobilebackup2_error_t mobilebackup2_send_message(mobilebackup2_client_t client,
125 * or is not a DL* message plist, or MOBILEBACKUP2_E_MUX_ERROR if 125 * or is not a DL* message plist, or MOBILEBACKUP2_E_MUX_ERROR if
126 * receiving from the device failed. 126 * receiving from the device failed.
127 */ 127 */
128mobilebackup2_error_t mobilebackup2_receive_message(mobilebackup2_client_t client, plist_t *msg_plist, char **dlmessage); 128LIBIMOBILEDEVICE_API mobilebackup2_error_t mobilebackup2_receive_message(mobilebackup2_client_t client, plist_t *msg_plist, char **dlmessage);
129 129
130/** 130/**
131 * Send binary data to the device. 131 * Send binary data to the device.
@@ -143,7 +143,7 @@ mobilebackup2_error_t mobilebackup2_receive_message(mobilebackup2_client_t clien
143 * MOBILEBACKUP2_E_INVALID_ARG if one of the parameters is invalid, 143 * MOBILEBACKUP2_E_INVALID_ARG if one of the parameters is invalid,
144 * or MOBILEBACKUP2_E_MUX_ERROR if sending of the data failed. 144 * or MOBILEBACKUP2_E_MUX_ERROR if sending of the data failed.
145 */ 145 */
146mobilebackup2_error_t mobilebackup2_send_raw(mobilebackup2_client_t client, const char *data, uint32_t length, uint32_t *bytes); 146LIBIMOBILEDEVICE_API mobilebackup2_error_t mobilebackup2_send_raw(mobilebackup2_client_t client, const char *data, uint32_t length, uint32_t *bytes);
147 147
148/** 148/**
149 * Receive binary from the device. 149 * Receive binary from the device.
@@ -163,7 +163,7 @@ mobilebackup2_error_t mobilebackup2_send_raw(mobilebackup2_client_t client, cons
163 * MOBILEBACKUP2_E_INVALID_ARG if one of the parameters is invalid, 163 * MOBILEBACKUP2_E_INVALID_ARG if one of the parameters is invalid,
164 * or MOBILEBACKUP2_E_MUX_ERROR if receiving the data failed. 164 * or MOBILEBACKUP2_E_MUX_ERROR if receiving the data failed.
165 */ 165 */
166mobilebackup2_error_t mobilebackup2_receive_raw(mobilebackup2_client_t client, char *data, uint32_t length, uint32_t *bytes); 166LIBIMOBILEDEVICE_API mobilebackup2_error_t mobilebackup2_receive_raw(mobilebackup2_client_t client, char *data, uint32_t length, uint32_t *bytes);
167 167
168/** 168/**
169 * Performs the mobilebackup2 protocol version exchange. 169 * Performs the mobilebackup2 protocol version exchange.
@@ -176,7 +176,7 @@ mobilebackup2_error_t mobilebackup2_receive_raw(mobilebackup2_client_t client, c
176 * @return MOBILEBACKUP2_E_SUCCESS on success, or a MOBILEBACKUP2_E_* error 176 * @return MOBILEBACKUP2_E_SUCCESS on success, or a MOBILEBACKUP2_E_* error
177 * code otherwise. 177 * code otherwise.
178 */ 178 */
179mobilebackup2_error_t mobilebackup2_version_exchange(mobilebackup2_client_t client, double local_versions[], char count, double *remote_version); 179LIBIMOBILEDEVICE_API mobilebackup2_error_t mobilebackup2_version_exchange(mobilebackup2_client_t client, double local_versions[], char count, double *remote_version);
180 180
181/** 181/**
182 * Send a request to the connected mobilebackup2 service. 182 * Send a request to the connected mobilebackup2 service.
@@ -191,7 +191,7 @@ mobilebackup2_error_t mobilebackup2_version_exchange(mobilebackup2_client_t clie
191 * @return MOBILEBACKUP2_E_SUCCESS if the request was successfully sent, 191 * @return MOBILEBACKUP2_E_SUCCESS if the request was successfully sent,
192 * or a MOBILEBACKUP2_E_* error value otherwise. 192 * or a MOBILEBACKUP2_E_* error value otherwise.
193 */ 193 */
194mobilebackup2_error_t mobilebackup2_send_request(mobilebackup2_client_t client, const char *request, const char *target_identifier, const char *source_identifier, plist_t options); 194LIBIMOBILEDEVICE_API mobilebackup2_error_t mobilebackup2_send_request(mobilebackup2_client_t client, const char *request, const char *target_identifier, const char *source_identifier, plist_t options);
195 195
196/** 196/**
197 * Sends a DLMessageStatusResponse to the device. 197 * Sends a DLMessageStatusResponse to the device.
@@ -205,7 +205,7 @@ mobilebackup2_error_t mobilebackup2_send_request(mobilebackup2_client_t client,
205 * @return MOBILEBACKUP2_E_SUCCESS on success, MOBILEBACKUP2_E_INVALID_ARG 205 * @return MOBILEBACKUP2_E_SUCCESS on success, MOBILEBACKUP2_E_INVALID_ARG
206 * if client is invalid, or another MOBILEBACKUP2_E_* otherwise. 206 * if client is invalid, or another MOBILEBACKUP2_E_* otherwise.
207 */ 207 */
208mobilebackup2_error_t mobilebackup2_send_status_response(mobilebackup2_client_t client, int status_code, const char *status1, plist_t status2); 208LIBIMOBILEDEVICE_API mobilebackup2_error_t mobilebackup2_send_status_response(mobilebackup2_client_t client, int status_code, const char *status1, plist_t status2);
209 209
210#ifdef __cplusplus 210#ifdef __cplusplus
211} 211}
diff --git a/include/libimobiledevice/mobilesync.h b/include/libimobiledevice/mobilesync.h
index 6b1af18..c3bc53d 100644
--- a/include/libimobiledevice/mobilesync.h
+++ b/include/libimobiledevice/mobilesync.h
@@ -86,7 +86,7 @@ typedef mobilesync_anchors *mobilesync_anchors_t;
86 * @retval DEVICE_LINK_SERVICE_E_BAD_VERSION if the mobilesync version on 86 * @retval DEVICE_LINK_SERVICE_E_BAD_VERSION if the mobilesync version on
87 * the device is newer. 87 * the device is newer.
88 */ 88 */
89mobilesync_error_t mobilesync_client_new(idevice_t device, lockdownd_service_descriptor_t service, mobilesync_client_t * client); 89LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_client_new(idevice_t device, lockdownd_service_descriptor_t service, mobilesync_client_t * client);
90 90
91/** 91/**
92 * Starts a new mobilesync service on the specified device and connects to it. 92 * Starts a new mobilesync service on the specified device and connects to it.
@@ -101,7 +101,7 @@ mobilesync_error_t mobilesync_client_new(idevice_t device, lockdownd_service_des
101 * @return MOBILESYNC_E_SUCCESS on success, or an MOBILESYNC_E_* error 101 * @return MOBILESYNC_E_SUCCESS on success, or an MOBILESYNC_E_* error
102 * code otherwise. 102 * code otherwise.
103 */ 103 */
104mobilesync_error_t mobilesync_client_start_service(idevice_t device, mobilesync_client_t* client, const char* label); 104LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_client_start_service(idevice_t device, mobilesync_client_t* client, const char* label);
105 105
106/** 106/**
107 * Disconnects a mobilesync client from the device and frees up the 107 * Disconnects a mobilesync client from the device and frees up the
@@ -112,7 +112,7 @@ mobilesync_error_t mobilesync_client_start_service(idevice_t device, mobilesync_
112 * @retval MOBILESYNC_E_SUCCESS on success 112 * @retval MOBILESYNC_E_SUCCESS on success
113 * @retval MOBILESYNC_E_INVALID_ARG if \a client is NULL. 113 * @retval MOBILESYNC_E_INVALID_ARG if \a client is NULL.
114 */ 114 */
115mobilesync_error_t mobilesync_client_free(mobilesync_client_t client); 115LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_client_free(mobilesync_client_t client);
116 116
117 117
118/** 118/**
@@ -123,7 +123,7 @@ mobilesync_error_t mobilesync_client_free(mobilesync_client_t client);
123 * 123 *
124 * @return an error code 124 * @return an error code
125 */ 125 */
126mobilesync_error_t mobilesync_receive(mobilesync_client_t client, plist_t *plist); 126LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_receive(mobilesync_client_t client, plist_t *plist);
127 127
128/** 128/**
129 * Sends mobilesync data to the device 129 * Sends mobilesync data to the device
@@ -136,7 +136,7 @@ mobilesync_error_t mobilesync_receive(mobilesync_client_t client, plist_t *plist
136 * 136 *
137 * @return an error code 137 * @return an error code
138 */ 138 */
139mobilesync_error_t mobilesync_send(mobilesync_client_t client, plist_t plist); 139LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_send(mobilesync_client_t client, plist_t plist);
140 140
141 141
142/** 142/**
@@ -159,7 +159,7 @@ mobilesync_error_t mobilesync_send(mobilesync_client_t client, plist_t plist);
159 * @retval MOBILESYNC_E_CANCELLED if the device explicitly cancelled the 159 * @retval MOBILESYNC_E_CANCELLED if the device explicitly cancelled the
160 * sync request 160 * sync request
161 */ 161 */
162mobilesync_error_t mobilesync_start(mobilesync_client_t client, const char *data_class, mobilesync_anchors_t anchors, uint64_t computer_data_class_version, mobilesync_sync_type_t *sync_type, uint64_t *device_data_class_version, char** error_description); 162LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_start(mobilesync_client_t client, const char *data_class, mobilesync_anchors_t anchors, uint64_t computer_data_class_version, mobilesync_sync_type_t *sync_type, uint64_t *device_data_class_version, char** error_description);
163 163
164/** 164/**
165 * Cancels a running synchronization session with a device at any time. 165 * Cancels a running synchronization session with a device at any time.
@@ -170,7 +170,7 @@ mobilesync_error_t mobilesync_start(mobilesync_client_t client, const char *data
170 * @retval MOBILESYNC_E_SUCCESS on success 170 * @retval MOBILESYNC_E_SUCCESS on success
171 * @retval MOBILESYNC_E_INVALID_ARG if one of the parameters is invalid 171 * @retval MOBILESYNC_E_INVALID_ARG if one of the parameters is invalid
172 */ 172 */
173mobilesync_error_t mobilesync_cancel(mobilesync_client_t client, const char* reason); 173LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_cancel(mobilesync_client_t client, const char* reason);
174 174
175/** 175/**
176 * Finish a synchronization session of a data class on the device. 176 * Finish a synchronization session of a data class on the device.
@@ -183,7 +183,7 @@ mobilesync_error_t mobilesync_cancel(mobilesync_client_t client, const char* rea
183 * @retval MOBILESYNC_E_PLIST_ERROR if the received plist is not of valid 183 * @retval MOBILESYNC_E_PLIST_ERROR if the received plist is not of valid
184 * form 184 * form
185 */ 185 */
186mobilesync_error_t mobilesync_finish(mobilesync_client_t client); 186LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_finish(mobilesync_client_t client);
187 187
188 188
189/** 189/**
@@ -196,7 +196,7 @@ mobilesync_error_t mobilesync_finish(mobilesync_client_t client);
196 * @retval MOBILESYNC_E_SUCCESS on success 196 * @retval MOBILESYNC_E_SUCCESS on success
197 * @retval MOBILESYNC_E_INVALID_ARG if one of the parameters is invalid 197 * @retval MOBILESYNC_E_INVALID_ARG if one of the parameters is invalid
198 */ 198 */
199mobilesync_error_t mobilesync_get_all_records_from_device(mobilesync_client_t client); 199LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_get_all_records_from_device(mobilesync_client_t client);
200 200
201/** 201/**
202 * Requests to receive only changed records of the currently set data class from the device. 202 * Requests to receive only changed records of the currently set data class from the device.
@@ -208,7 +208,7 @@ mobilesync_error_t mobilesync_get_all_records_from_device(mobilesync_client_t cl
208 * @retval MOBILESYNC_E_SUCCESS on success 208 * @retval MOBILESYNC_E_SUCCESS on success
209 * @retval MOBILESYNC_E_INVALID_ARG if one of the parameters is invalid 209 * @retval MOBILESYNC_E_INVALID_ARG if one of the parameters is invalid
210 */ 210 */
211mobilesync_error_t mobilesync_get_changes_from_device(mobilesync_client_t client); 211LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_get_changes_from_device(mobilesync_client_t client);
212 212
213/** 213/**
214 * Requests the device to delete all records of the current data class 214 * Requests the device to delete all records of the current data class
@@ -221,7 +221,7 @@ mobilesync_error_t mobilesync_get_changes_from_device(mobilesync_client_t client
221 * @retval MOBILESYNC_E_INVALID_ARG if one of the parameters is invalid 221 * @retval MOBILESYNC_E_INVALID_ARG if one of the parameters is invalid
222 * @retval MOBILESYNC_E_PLIST_ERROR if the received plist is not of valid form 222 * @retval MOBILESYNC_E_PLIST_ERROR if the received plist is not of valid form
223 */ 223 */
224mobilesync_error_t mobilesync_clear_all_records_on_device(mobilesync_client_t client); 224LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_clear_all_records_on_device(mobilesync_client_t client);
225 225
226 226
227/** 227/**
@@ -237,7 +237,7 @@ mobilesync_error_t mobilesync_clear_all_records_on_device(mobilesync_client_t cl
237 * @retval MOBILESYNC_E_CANCELLED if the device explicitly cancelled the 237 * @retval MOBILESYNC_E_CANCELLED if the device explicitly cancelled the
238 * session 238 * session
239 */ 239 */
240mobilesync_error_t mobilesync_receive_changes(mobilesync_client_t client, plist_t *entities, uint8_t *is_last_record, plist_t *actions); 240LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_receive_changes(mobilesync_client_t client, plist_t *entities, uint8_t *is_last_record, plist_t *actions);
241 241
242/** 242/**
243 * Acknowledges to the device that the changes have been merged on the computer 243 * Acknowledges to the device that the changes have been merged on the computer
@@ -247,7 +247,7 @@ mobilesync_error_t mobilesync_receive_changes(mobilesync_client_t client, plist_
247 * @retval MOBILESYNC_E_SUCCESS on success 247 * @retval MOBILESYNC_E_SUCCESS on success
248 * @retval MOBILESYNC_E_INVALID_ARG if one of the parameters is invalid 248 * @retval MOBILESYNC_E_INVALID_ARG if one of the parameters is invalid
249 */ 249 */
250mobilesync_error_t mobilesync_acknowledge_changes_from_device(mobilesync_client_t client); 250LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_acknowledge_changes_from_device(mobilesync_client_t client);
251 251
252 252
253/** 253/**
@@ -267,7 +267,7 @@ mobilesync_error_t mobilesync_acknowledge_changes_from_device(mobilesync_client_
267 * @retval MOBILESYNC_E_NOT_READY if the device is not ready to start 267 * @retval MOBILESYNC_E_NOT_READY if the device is not ready to start
268 * receiving any changes 268 * receiving any changes
269 */ 269 */
270mobilesync_error_t mobilesync_ready_to_send_changes_from_computer(mobilesync_client_t client); 270LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_ready_to_send_changes_from_computer(mobilesync_client_t client);
271 271
272 272
273/** 273/**
@@ -284,7 +284,7 @@ mobilesync_error_t mobilesync_ready_to_send_changes_from_computer(mobilesync_cli
284 * @retval MOBILESYNC_E_WRONG_DIRECTION if the current sync direction does 284 * @retval MOBILESYNC_E_WRONG_DIRECTION if the current sync direction does
285 * not permit this call 285 * not permit this call
286 */ 286 */
287mobilesync_error_t mobilesync_send_changes(mobilesync_client_t client, plist_t entities, uint8_t is_last_record, plist_t actions); 287LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_send_changes(mobilesync_client_t client, plist_t entities, uint8_t is_last_record, plist_t actions);
288 288
289/** 289/**
290 * Receives any remapped identifiers reported after the device merged submitted changes. 290 * Receives any remapped identifiers reported after the device merged submitted changes.
@@ -301,7 +301,7 @@ mobilesync_error_t mobilesync_send_changes(mobilesync_client_t client, plist_t e
301 * @retval MOBILESYNC_E_CANCELLED if the device explicitly cancelled the 301 * @retval MOBILESYNC_E_CANCELLED if the device explicitly cancelled the
302 * session 302 * session
303 */ 303 */
304mobilesync_error_t mobilesync_remap_identifiers(mobilesync_client_t client, plist_t *mapping); 304LIBIMOBILEDEVICE_API mobilesync_error_t mobilesync_remap_identifiers(mobilesync_client_t client, plist_t *mapping);
305 305
306/* Helper */ 306/* Helper */
307 307
@@ -314,14 +314,14 @@ mobilesync_error_t mobilesync_remap_identifiers(mobilesync_client_t client, plis
314 * 314 *
315 * @return A new #mobilesync_anchors_t struct. Must be freed using mobilesync_anchors_free(). 315 * @return A new #mobilesync_anchors_t struct. Must be freed using mobilesync_anchors_free().
316 */ 316 */
317mobilesync_anchors_t mobilesync_anchors_new(const char *device_anchor, const char *computer_anchor); 317LIBIMOBILEDEVICE_API mobilesync_anchors_t mobilesync_anchors_new(const char *device_anchor, const char *computer_anchor);
318 318
319/** 319/**
320 * Free memory used by anchors. 320 * Free memory used by anchors.
321 * 321 *
322 * @param anchors The anchors to free. 322 * @param anchors The anchors to free.
323 */ 323 */
324void mobilesync_anchors_free(mobilesync_anchors_t anchors); 324LIBIMOBILEDEVICE_API void mobilesync_anchors_free(mobilesync_anchors_t anchors);
325 325
326 326
327/** 327/**
@@ -329,7 +329,7 @@ void mobilesync_anchors_free(mobilesync_anchors_t anchors);
329 * 329 *
330 * @return A new plist_t of type PLIST_DICT. 330 * @return A new plist_t of type PLIST_DICT.
331 */ 331 */
332plist_t mobilesync_actions_new(void); 332LIBIMOBILEDEVICE_API plist_t mobilesync_actions_new(void);
333 333
334/** 334/**
335 * Add one or more new key:value pairs to the given actions plist. 335 * Add one or more new key:value pairs to the given actions plist.
@@ -343,14 +343,14 @@ plist_t mobilesync_actions_new(void);
343 * integer to use as a boolean value indicating that the device should 343 * integer to use as a boolean value indicating that the device should
344 * link submitted changes and report remapped identifiers. 344 * link submitted changes and report remapped identifiers.
345 */ 345 */
346void mobilesync_actions_add(plist_t actions, ...); 346LIBIMOBILEDEVICE_API void mobilesync_actions_add(plist_t actions, ...);
347 347
348/** 348/**
349 * Free actions plist. 349 * Free actions plist.
350 * 350 *
351 * @param actions The actions plist to free. Does nothing if NULL is passed. 351 * @param actions The actions plist to free. Does nothing if NULL is passed.
352 */ 352 */
353void mobilesync_actions_free(plist_t actions); 353LIBIMOBILEDEVICE_API void mobilesync_actions_free(plist_t actions);
354 354
355#ifdef __cplusplus 355#ifdef __cplusplus
356} 356}
diff --git a/include/libimobiledevice/notification_proxy.h b/include/libimobiledevice/notification_proxy.h
index 4eccf20..f4f090b 100644
--- a/include/libimobiledevice/notification_proxy.h
+++ b/include/libimobiledevice/notification_proxy.h
@@ -109,7 +109,7 @@ typedef void (*np_notify_cb_t) (const char *notification, void *user_data);
109 * or NP_E_CONN_FAILED when the connection to the device could not be 109 * or NP_E_CONN_FAILED when the connection to the device could not be
110 * established. 110 * established.
111 */ 111 */
112np_error_t np_client_new(idevice_t device, lockdownd_service_descriptor_t service, np_client_t *client); 112LIBIMOBILEDEVICE_API np_error_t np_client_new(idevice_t device, lockdownd_service_descriptor_t service, np_client_t *client);
113 113
114/** 114/**
115 * Starts a new notification proxy service on the specified device and connects to it. 115 * Starts a new notification proxy service on the specified device and connects to it.
@@ -124,7 +124,7 @@ np_error_t np_client_new(idevice_t device, lockdownd_service_descriptor_t servic
124 * @return NP_E_SUCCESS on success, or an NP_E_* error 124 * @return NP_E_SUCCESS on success, or an NP_E_* error
125 * code otherwise. 125 * code otherwise.
126 */ 126 */
127np_error_t np_client_start_service(idevice_t device, np_client_t* client, const char* label); 127LIBIMOBILEDEVICE_API np_error_t np_client_start_service(idevice_t device, np_client_t* client, const char* label);
128 128
129/** 129/**
130 * Disconnects a notification_proxy client from the device and frees up the 130 * Disconnects a notification_proxy client from the device and frees up the
@@ -134,7 +134,7 @@ np_error_t np_client_start_service(idevice_t device, np_client_t* client, const
134 * 134 *
135 * @return NP_E_SUCCESS on success, or NP_E_INVALID_ARG when client is NULL. 135 * @return NP_E_SUCCESS on success, or NP_E_INVALID_ARG when client is NULL.
136 */ 136 */
137np_error_t np_client_free(np_client_t client); 137LIBIMOBILEDEVICE_API np_error_t np_client_free(np_client_t client);
138 138
139 139
140/** 140/**
@@ -145,7 +145,7 @@ np_error_t np_client_free(np_client_t client);
145 * 145 *
146 * @return NP_E_SUCCESS on success, or an error returned by np_plist_send 146 * @return NP_E_SUCCESS on success, or an error returned by np_plist_send
147 */ 147 */
148np_error_t np_post_notification(np_client_t client, const char *notification); 148LIBIMOBILEDEVICE_API np_error_t np_post_notification(np_client_t client, const char *notification);
149 149
150/** 150/**
151 * Tells the device to send a notification on the specified event. 151 * Tells the device to send a notification on the specified event.
@@ -156,7 +156,7 @@ np_error_t np_post_notification(np_client_t client, const char *notification);
156 * @return NP_E_SUCCESS on success, NP_E_INVALID_ARG when client or 156 * @return NP_E_SUCCESS on success, NP_E_INVALID_ARG when client or
157 * notification are NULL, or an error returned by np_plist_send. 157 * notification are NULL, or an error returned by np_plist_send.
158 */ 158 */
159np_error_t np_observe_notification(np_client_t client, const char *notification); 159LIBIMOBILEDEVICE_API np_error_t np_observe_notification(np_client_t client, const char *notification);
160 160
161/** 161/**
162 * Tells the device to send a notification on specified events. 162 * Tells the device to send a notification on specified events.
@@ -169,7 +169,7 @@ np_error_t np_observe_notification(np_client_t client, const char *notification)
169 * @return NP_E_SUCCESS on success, NP_E_INVALID_ARG when client is null, 169 * @return NP_E_SUCCESS on success, NP_E_INVALID_ARG when client is null,
170 * or an error returned by np_observe_notification. 170 * or an error returned by np_observe_notification.
171 */ 171 */
172np_error_t np_observe_notifications(np_client_t client, const char **notification_spec); 172LIBIMOBILEDEVICE_API np_error_t np_observe_notifications(np_client_t client, const char **notification_spec);
173 173
174/** 174/**
175 * This function allows an application to define a callback function that will 175 * This function allows an application to define a callback function that will
@@ -193,7 +193,7 @@ np_error_t np_observe_notifications(np_client_t client, const char **notificatio
193 * NP_E_INVALID_ARG when client is NULL, or NP_E_UNKNOWN_ERROR when 193 * NP_E_INVALID_ARG when client is NULL, or NP_E_UNKNOWN_ERROR when
194 * the callback thread could no be created. 194 * the callback thread could no be created.
195 */ 195 */
196np_error_t np_set_notify_callback(np_client_t client, np_notify_cb_t notify_cb, void *user_data); 196LIBIMOBILEDEVICE_API np_error_t np_set_notify_callback(np_client_t client, np_notify_cb_t notify_cb, void *user_data);
197 197
198#ifdef __cplusplus 198#ifdef __cplusplus
199} 199}
diff --git a/include/libimobiledevice/preboard.h b/include/libimobiledevice/preboard.h
index 88e9806..0d89eb4 100644
--- a/include/libimobiledevice/preboard.h
+++ b/include/libimobiledevice/preboard.h
@@ -64,7 +64,7 @@ typedef void (*preboard_status_cb_t) (plist_t message, void *user_data);
64 * @return PREBOARD_E_SUCCESS on success, PREBOARD_E_INVALID_ARG when 64 * @return PREBOARD_E_SUCCESS on success, PREBOARD_E_INVALID_ARG when
65 * client is NULL, or an PREBOARD_E_* error code otherwise. 65 * client is NULL, or an PREBOARD_E_* error code otherwise.
66 */ 66 */
67preboard_error_t preboard_client_new(idevice_t device, lockdownd_service_descriptor_t service, preboard_client_t * client); 67LIBIMOBILEDEVICE_API preboard_error_t preboard_client_new(idevice_t device, lockdownd_service_descriptor_t service, preboard_client_t * client);
68 68
69/** 69/**
70 * Starts a new preboard service on the specified device and connects to it. 70 * Starts a new preboard service on the specified device and connects to it.
@@ -79,7 +79,7 @@ preboard_error_t preboard_client_new(idevice_t device, lockdownd_service_descrip
79 * @return PREBOARD_E_SUCCESS on success, or a PREBOARD_E_* error 79 * @return PREBOARD_E_SUCCESS on success, or a PREBOARD_E_* error
80 * code otherwise. 80 * code otherwise.
81 */ 81 */
82preboard_error_t preboard_client_start_service(idevice_t device, preboard_client_t * client, const char* label); 82LIBIMOBILEDEVICE_API preboard_error_t preboard_client_start_service(idevice_t device, preboard_client_t * client, const char* label);
83 83
84/** 84/**
85 * Disconnects a preboard client from the device and frees up the 85 * Disconnects a preboard client from the device and frees up the
@@ -90,7 +90,7 @@ preboard_error_t preboard_client_start_service(idevice_t device, preboard_client
90 * @return PREBOARD_E_SUCCESS on success, PREBOARD_E_INVALID_ARG when 90 * @return PREBOARD_E_SUCCESS on success, PREBOARD_E_INVALID_ARG when
91 * client is NULL, or a PREBOARD_E_* error code otherwise. 91 * client is NULL, or a PREBOARD_E_* error code otherwise.
92 */ 92 */
93preboard_error_t preboard_client_free(preboard_client_t client); 93LIBIMOBILEDEVICE_API preboard_error_t preboard_client_free(preboard_client_t client);
94 94
95/** 95/**
96 * Sends a plist to the service. 96 * Sends a plist to the service.
@@ -102,7 +102,7 @@ preboard_error_t preboard_client_free(preboard_client_t client);
102 * PREBOARD_E_INVALID_ARG when client or plist is NULL, 102 * PREBOARD_E_INVALID_ARG when client or plist is NULL,
103 * or a PREBOARD_E_* error code on error 103 * or a PREBOARD_E_* error code on error
104 */ 104 */
105preboard_error_t preboard_send(preboard_client_t client, plist_t plist); 105LIBIMOBILEDEVICE_API preboard_error_t preboard_send(preboard_client_t client, plist_t plist);
106 106
107/** 107/**
108 * Receives a plist from the service. 108 * Receives a plist from the service.
@@ -115,7 +115,7 @@ preboard_error_t preboard_send(preboard_client_t client, plist_t plist);
115 * PREBOARD_E_TIMEOUT when no data was received after 5 seconds, 115 * PREBOARD_E_TIMEOUT when no data was received after 5 seconds,
116 * or a PREBOARD_E_* error code on error 116 * or a PREBOARD_E_* error code on error
117 */ 117 */
118preboard_error_t preboard_receive(preboard_client_t client, plist_t * plist); 118LIBIMOBILEDEVICE_API preboard_error_t preboard_receive(preboard_client_t client, plist_t * plist);
119 119
120/** 120/**
121 * Receives a plist from the service with the specified timeout. 121 * Receives a plist from the service with the specified timeout.
@@ -129,7 +129,7 @@ preboard_error_t preboard_receive(preboard_client_t client, plist_t * plist);
129 * PREBOARD_E_TIMEOUT when no data was received after the given timeout, 129 * PREBOARD_E_TIMEOUT when no data was received after the given timeout,
130 * or a PREBOARD_E_* error code on error. 130 * or a PREBOARD_E_* error code on error.
131 */ 131 */
132preboard_error_t preboard_receive_with_timeout(preboard_client_t client, plist_t * plist, uint32_t timeout_ms); 132LIBIMOBILEDEVICE_API preboard_error_t preboard_receive_with_timeout(preboard_client_t client, plist_t * plist, uint32_t timeout_ms);
133 133
134/** 134/**
135 * Tells the preboard service to create a stashbag. This will make the device 135 * Tells the preboard service to create a stashbag. This will make the device
@@ -157,7 +157,7 @@ preboard_error_t preboard_receive_with_timeout(preboard_client_t client, plist_t
157 * PREBOARD_E_INVALID_ARG when client is invalid, 157 * PREBOARD_E_INVALID_ARG when client is invalid,
158 * or a PREBOARD_E_* error code on error. 158 * or a PREBOARD_E_* error code on error.
159 */ 159 */
160preboard_error_t preboard_create_stashbag(preboard_client_t client, plist_t manifest, preboard_status_cb_t status_cb, void *user_data); 160LIBIMOBILEDEVICE_API preboard_error_t preboard_create_stashbag(preboard_client_t client, plist_t manifest, preboard_status_cb_t status_cb, void *user_data);
161 161
162/** 162/**
163 * Instructs the preboard service to commit a previously created stashbag. 163 * Instructs the preboard service to commit a previously created stashbag.
@@ -178,7 +178,7 @@ preboard_error_t preboard_create_stashbag(preboard_client_t client, plist_t mani
178 * PREBOARD_E_INVALID_ARG when client is invalid, 178 * PREBOARD_E_INVALID_ARG when client is invalid,
179 * or a PREBOARD_E_* error code on error. 179 * or a PREBOARD_E_* error code on error.
180 */ 180 */
181preboard_error_t preboard_commit_stashbag(preboard_client_t client, plist_t manifest, preboard_status_cb_t status_cb, void *user_data); 181LIBIMOBILEDEVICE_API preboard_error_t preboard_commit_stashbag(preboard_client_t client, plist_t manifest, preboard_status_cb_t status_cb, void *user_data);
182 182
183#ifdef __cplusplus 183#ifdef __cplusplus
184} 184}
diff --git a/include/libimobiledevice/property_list_service.h b/include/libimobiledevice/property_list_service.h
index 3f6ebad..e6b26a3 100644
--- a/include/libimobiledevice/property_list_service.h
+++ b/include/libimobiledevice/property_list_service.h
@@ -60,7 +60,7 @@ typedef property_list_service_private* property_list_service_client_t; /**< The
60 * PROPERTY_LIST_SERVICE_E_INVALID_ARG when one of the arguments is invalid, 60 * PROPERTY_LIST_SERVICE_E_INVALID_ARG when one of the arguments is invalid,
61 * or PROPERTY_LIST_SERVICE_E_MUX_ERROR when connecting to the device failed. 61 * or PROPERTY_LIST_SERVICE_E_MUX_ERROR when connecting to the device failed.
62 */ 62 */
63property_list_service_error_t property_list_service_client_new(idevice_t device, lockdownd_service_descriptor_t service, property_list_service_client_t *client); 63LIBIMOBILEDEVICE_API property_list_service_error_t property_list_service_client_new(idevice_t device, lockdownd_service_descriptor_t service, property_list_service_client_t *client);
64 64
65/** 65/**
66 * Frees a PropertyList service. 66 * Frees a PropertyList service.
@@ -71,7 +71,7 @@ property_list_service_error_t property_list_service_client_new(idevice_t device,
71 * PROPERTY_LIST_SERVICE_E_INVALID_ARG when client is invalid, or a 71 * PROPERTY_LIST_SERVICE_E_INVALID_ARG when client is invalid, or a
72 * PROPERTY_LIST_SERVICE_E_UNKNOWN_ERROR when another error occurred. 72 * PROPERTY_LIST_SERVICE_E_UNKNOWN_ERROR when another error occurred.
73 */ 73 */
74property_list_service_error_t property_list_service_client_free(property_list_service_client_t client); 74LIBIMOBILEDEVICE_API property_list_service_error_t property_list_service_client_free(property_list_service_client_t client);
75 75
76/** 76/**
77 * Sends an XML plist. 77 * Sends an XML plist.
@@ -84,7 +84,7 @@ property_list_service_error_t property_list_service_client_free(property_list_se
84 * PROPERTY_LIST_SERVICE_E_PLIST_ERROR when dict is not a valid plist, 84 * PROPERTY_LIST_SERVICE_E_PLIST_ERROR when dict is not a valid plist,
85 * or PROPERTY_LIST_SERVICE_E_UNKNOWN_ERROR when an unspecified error occurs. 85 * or PROPERTY_LIST_SERVICE_E_UNKNOWN_ERROR when an unspecified error occurs.
86 */ 86 */
87property_list_service_error_t property_list_service_send_xml_plist(property_list_service_client_t client, plist_t plist); 87LIBIMOBILEDEVICE_API property_list_service_error_t property_list_service_send_xml_plist(property_list_service_client_t client, plist_t plist);
88 88
89/** 89/**
90 * Sends a binary plist. 90 * Sends a binary plist.
@@ -97,7 +97,7 @@ property_list_service_error_t property_list_service_send_xml_plist(property_list
97 * PROPERTY_LIST_SERVICE_E_PLIST_ERROR when dict is not a valid plist, 97 * PROPERTY_LIST_SERVICE_E_PLIST_ERROR when dict is not a valid plist,
98 * or PROPERTY_LIST_SERVICE_E_UNKNOWN_ERROR when an unspecified error occurs. 98 * or PROPERTY_LIST_SERVICE_E_UNKNOWN_ERROR when an unspecified error occurs.
99 */ 99 */
100property_list_service_error_t property_list_service_send_binary_plist(property_list_service_client_t client, plist_t plist); 100LIBIMOBILEDEVICE_API property_list_service_error_t property_list_service_send_binary_plist(property_list_service_client_t client, plist_t plist);
101 101
102/** 102/**
103 * Receives a plist using the given property list service client with specified 103 * Receives a plist using the given property list service client with specified
@@ -116,7 +116,7 @@ property_list_service_error_t property_list_service_send_binary_plist(property_l
116 * communication error occurs, or PROPERTY_LIST_SERVICE_E_UNKNOWN_ERROR when 116 * communication error occurs, or PROPERTY_LIST_SERVICE_E_UNKNOWN_ERROR when
117 * an unspecified error occurs. 117 * an unspecified error occurs.
118 */ 118 */
119property_list_service_error_t property_list_service_receive_plist_with_timeout(property_list_service_client_t client, plist_t *plist, unsigned int timeout); 119LIBIMOBILEDEVICE_API property_list_service_error_t property_list_service_receive_plist_with_timeout(property_list_service_client_t client, plist_t *plist, unsigned int timeout);
120 120
121/** 121/**
122 * Receives a plist using the given property list service client. 122 * Receives a plist using the given property list service client.
@@ -139,7 +139,7 @@ property_list_service_error_t property_list_service_receive_plist_with_timeout(p
139 * communication error occurs, or PROPERTY_LIST_SERVICE_E_UNKNOWN_ERROR when 139 * communication error occurs, or PROPERTY_LIST_SERVICE_E_UNKNOWN_ERROR when
140 * an unspecified error occurs. 140 * an unspecified error occurs.
141 */ 141 */
142property_list_service_error_t property_list_service_receive_plist(property_list_service_client_t client, plist_t *plist); 142LIBIMOBILEDEVICE_API property_list_service_error_t property_list_service_receive_plist(property_list_service_client_t client, plist_t *plist);
143 143
144/** 144/**
145 * Enable SSL for the given property list service client. 145 * Enable SSL for the given property list service client.
@@ -152,7 +152,7 @@ property_list_service_error_t property_list_service_receive_plist(property_list_
152 * PROPERTY_LIST_SERVICE_E_SSL_ERROR when SSL could not be enabled, 152 * PROPERTY_LIST_SERVICE_E_SSL_ERROR when SSL could not be enabled,
153 * or PROPERTY_LIST_SERVICE_E_UNKNOWN_ERROR otherwise. 153 * or PROPERTY_LIST_SERVICE_E_UNKNOWN_ERROR otherwise.
154 */ 154 */
155property_list_service_error_t property_list_service_enable_ssl(property_list_service_client_t client); 155LIBIMOBILEDEVICE_API property_list_service_error_t property_list_service_enable_ssl(property_list_service_client_t client);
156 156
157/** 157/**
158 * Disable SSL for the given property list service client. 158 * Disable SSL for the given property list service client.
@@ -164,7 +164,7 @@ property_list_service_error_t property_list_service_enable_ssl(property_list_ser
164 * PROPERTY_LIST_SERVICE_E_INVALID_ARG if one or more of the arguments are invalid, 164 * PROPERTY_LIST_SERVICE_E_INVALID_ARG if one or more of the arguments are invalid,
165 * or PROPERTY_LIST_SERVICE_E_UNKNOWN_ERROR otherwise. 165 * or PROPERTY_LIST_SERVICE_E_UNKNOWN_ERROR otherwise.
166 */ 166 */
167property_list_service_error_t property_list_service_disable_ssl(property_list_service_client_t client); 167LIBIMOBILEDEVICE_API property_list_service_error_t property_list_service_disable_ssl(property_list_service_client_t client);
168 168
169/** 169/**
170 * Return a handle to the parent #service_client_t of the given property list service client. 170 * Return a handle to the parent #service_client_t of the given property list service client.
@@ -175,7 +175,7 @@ property_list_service_error_t property_list_service_disable_ssl(property_list_se
175 * @return PROPERTY_LIST_SERVICE_E_SUCCESS on success, 175 * @return PROPERTY_LIST_SERVICE_E_SUCCESS on success,
176 * PROPERTY_LIST_SERVICE_E_INVALID_ARG if one or more of the arguments are invalid. 176 * PROPERTY_LIST_SERVICE_E_INVALID_ARG if one or more of the arguments are invalid.
177 */ 177 */
178property_list_service_error_t property_list_service_get_service_client(property_list_service_client_t client, service_client_t *service_client); 178LIBIMOBILEDEVICE_API property_list_service_error_t property_list_service_get_service_client(property_list_service_client_t client, service_client_t *service_client);
179 179
180#ifdef __cplusplus 180#ifdef __cplusplus
181} 181}
diff --git a/include/libimobiledevice/restore.h b/include/libimobiledevice/restore.h
index 0017cfd..859dc98 100644
--- a/include/libimobiledevice/restore.h
+++ b/include/libimobiledevice/restore.h
@@ -56,7 +56,7 @@ typedef restored_client_private *restored_client_t; /**< The client handle. */
56 * 56 *
57 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client is NULL 57 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client is NULL
58 */ 58 */
59restored_error_t restored_client_new(idevice_t device, restored_client_t *client, const char *label); 59LIBIMOBILEDEVICE_API restored_error_t restored_client_new(idevice_t device, restored_client_t *client, const char *label);
60 60
61/** 61/**
62 * Closes the restored client session if one is running and frees up the 62 * Closes the restored client session if one is running and frees up the
@@ -66,7 +66,7 @@ restored_error_t restored_client_new(idevice_t device, restored_client_t *client
66 * 66 *
67 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client is NULL 67 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client is NULL
68 */ 68 */
69restored_error_t restored_client_free(restored_client_t client); 69LIBIMOBILEDEVICE_API restored_error_t restored_client_free(restored_client_t client);
70 70
71 71
72/** 72/**
@@ -79,7 +79,7 @@ restored_error_t restored_client_free(restored_client_t client);
79 * 79 *
80 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client is NULL 80 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client is NULL
81 */ 81 */
82restored_error_t restored_query_type(restored_client_t client, char **type, uint64_t *version); 82LIBIMOBILEDEVICE_API restored_error_t restored_query_type(restored_client_t client, char **type, uint64_t *version);
83 83
84/** 84/**
85 * Queries a value from the device specified by a key. 85 * Queries a value from the device specified by a key.
@@ -90,7 +90,7 @@ restored_error_t restored_query_type(restored_client_t client, char **type, uint
90 * 90 *
91 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client is NULL, RESTORE_E_PLIST_ERROR if value for key can't be found 91 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client is NULL, RESTORE_E_PLIST_ERROR if value for key can't be found
92 */ 92 */
93restored_error_t restored_query_value(restored_client_t client, const char *key, plist_t *value); 93LIBIMOBILEDEVICE_API restored_error_t restored_query_value(restored_client_t client, const char *key, plist_t *value);
94 94
95/** 95/**
96 * Retrieves a value from information plist specified by a key. 96 * Retrieves a value from information plist specified by a key.
@@ -101,7 +101,7 @@ restored_error_t restored_query_value(restored_client_t client, const char *key,
101 * 101 *
102 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client is NULL, RESTORE_E_PLIST_ERROR if value for key can't be found 102 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client is NULL, RESTORE_E_PLIST_ERROR if value for key can't be found
103 */ 103 */
104restored_error_t restored_get_value(restored_client_t client, const char *key, plist_t *value) ; 104LIBIMOBILEDEVICE_API restored_error_t restored_get_value(restored_client_t client, const char *key, plist_t *value) ;
105 105
106/** 106/**
107 * Sends a plist to restored. 107 * Sends a plist to restored.
@@ -115,7 +115,7 @@ restored_error_t restored_get_value(restored_client_t client, const char *key, p
115 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client or 115 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client or
116 * plist is NULL 116 * plist is NULL
117 */ 117 */
118restored_error_t restored_send(restored_client_t client, plist_t plist); 118LIBIMOBILEDEVICE_API restored_error_t restored_send(restored_client_t client, plist_t plist);
119 119
120/** 120/**
121 * Receives a plist from restored. 121 * Receives a plist from restored.
@@ -126,7 +126,7 @@ restored_error_t restored_send(restored_client_t client, plist_t plist);
126 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client or 126 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client or
127 * plist is NULL 127 * plist is NULL
128 */ 128 */
129restored_error_t restored_receive(restored_client_t client, plist_t *plist); 129LIBIMOBILEDEVICE_API restored_error_t restored_receive(restored_client_t client, plist_t *plist);
130 130
131/** 131/**
132 * Sends the Goodbye request to restored signaling the end of communication. 132 * Sends the Goodbye request to restored signaling the end of communication.
@@ -136,7 +136,7 @@ restored_error_t restored_receive(restored_client_t client, plist_t *plist);
136 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client is NULL, 136 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG when client is NULL,
137 * RESTORE_E_PLIST_ERROR if the device did not acknowledge the request 137 * RESTORE_E_PLIST_ERROR if the device did not acknowledge the request
138 */ 138 */
139restored_error_t restored_goodbye(restored_client_t client); 139LIBIMOBILEDEVICE_API restored_error_t restored_goodbye(restored_client_t client);
140 140
141 141
142/** 142/**
@@ -149,7 +149,7 @@ restored_error_t restored_goodbye(restored_client_t client);
149 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG if a parameter 149 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG if a parameter
150 * is NULL, RESTORE_E_START_RESTORE_FAILED if the request fails 150 * is NULL, RESTORE_E_START_RESTORE_FAILED if the request fails
151 */ 151 */
152restored_error_t restored_start_restore(restored_client_t client, plist_t options, uint64_t version); 152LIBIMOBILEDEVICE_API restored_error_t restored_start_restore(restored_client_t client, plist_t options, uint64_t version);
153 153
154/** 154/**
155 * Requests device to reboot. 155 * Requests device to reboot.
@@ -159,7 +159,7 @@ restored_error_t restored_start_restore(restored_client_t client, plist_t option
159 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG if a parameter 159 * @return RESTORE_E_SUCCESS on success, RESTORE_E_INVALID_ARG if a parameter
160 * is NULL 160 * is NULL
161 */ 161 */
162restored_error_t restored_reboot(restored_client_t client); 162LIBIMOBILEDEVICE_API restored_error_t restored_reboot(restored_client_t client);
163 163
164/* Helper */ 164/* Helper */
165 165
@@ -170,7 +170,7 @@ restored_error_t restored_reboot(restored_client_t client);
170 * @param label The label to set or NULL to disable sending a label 170 * @param label The label to set or NULL to disable sending a label
171 * 171 *
172 */ 172 */
173void restored_client_set_label(restored_client_t client, const char *label); 173LIBIMOBILEDEVICE_API void restored_client_set_label(restored_client_t client, const char *label);
174 174
175#ifdef __cplusplus 175#ifdef __cplusplus
176} 176}
diff --git a/include/libimobiledevice/reverse_proxy.h b/include/libimobiledevice/reverse_proxy.h
index b7a93ff..5e2f54b 100644
--- a/include/libimobiledevice/reverse_proxy.h
+++ b/include/libimobiledevice/reverse_proxy.h
@@ -118,7 +118,7 @@ typedef void (*reverse_proxy_status_cb_t) (reverse_proxy_client_t client, revers
118 * @return REVERSE_PROXY_E_SUCCESS on success, 118 * @return REVERSE_PROXY_E_SUCCESS on success,
119 * or a REVERSE_PROXY_E_* error code otherwise. 119 * or a REVERSE_PROXY_E_* error code otherwise.
120 */ 120 */
121reverse_proxy_error_t reverse_proxy_client_create_with_service(idevice_t device, reverse_proxy_client_t* client, const char* label); 121LIBIMOBILEDEVICE_API reverse_proxy_error_t reverse_proxy_client_create_with_service(idevice_t device, reverse_proxy_client_t* client, const char* label);
122 122
123/** 123/**
124 * Create a reverse proxy client using an open port on the device. This is 124 * Create a reverse proxy client using an open port on the device. This is
@@ -136,14 +136,14 @@ reverse_proxy_error_t reverse_proxy_client_create_with_service(idevice_t device,
136 * @return REVERSE_PROXY_E_SUCCESS on success, 136 * @return REVERSE_PROXY_E_SUCCESS on success,
137 * or a REVERSE_PROXY_E_* error code otherwise. 137 * or a REVERSE_PROXY_E_* error code otherwise.
138 */ 138 */
139reverse_proxy_error_t reverse_proxy_client_create_with_port(idevice_t device, reverse_proxy_client_t* client, uint16_t device_port); 139LIBIMOBILEDEVICE_API reverse_proxy_error_t reverse_proxy_client_create_with_port(idevice_t device, reverse_proxy_client_t* client, uint16_t device_port);
140 140
141/** 141/**
142 * Disconnects a reverse proxy client and frees up the client data. 142 * Disconnects a reverse proxy client and frees up the client data.
143 * 143 *
144 * @param client The reverse proxy client to disconnect and free. 144 * @param client The reverse proxy client to disconnect and free.
145 */ 145 */
146reverse_proxy_error_t reverse_proxy_client_free(reverse_proxy_client_t client); 146LIBIMOBILEDEVICE_API reverse_proxy_error_t reverse_proxy_client_free(reverse_proxy_client_t client);
147 147
148/** 148/**
149 * Make an initialized reverse proxy client operational, i.e. start the actual proxy. 149 * Make an initialized reverse proxy client operational, i.e. start the actual proxy.
@@ -155,7 +155,7 @@ reverse_proxy_error_t reverse_proxy_client_free(reverse_proxy_client_t client);
155 * @return REVERSE_PROXY_E_SUCCESS on success, 155 * @return REVERSE_PROXY_E_SUCCESS on success,
156 * or a REVERSE_PROXY_E_* error code otherwise. 156 * or a REVERSE_PROXY_E_* error code otherwise.
157 */ 157 */
158reverse_proxy_error_t reverse_proxy_client_start_proxy(reverse_proxy_client_t client, int control_protocol_version); 158LIBIMOBILEDEVICE_API reverse_proxy_error_t reverse_proxy_client_start_proxy(reverse_proxy_client_t client, int control_protocol_version);
159 159
160/** 160/**
161 * Set a status callback function. This allows to report the status of the 161 * Set a status callback function. This allows to report the status of the
@@ -168,7 +168,7 @@ reverse_proxy_error_t reverse_proxy_client_start_proxy(reverse_proxy_client_t cl
168 * when the status of the reverse proxy changes. 168 * when the status of the reverse proxy changes.
169 * @param user_data A pointer that will be passed to the callback function. 169 * @param user_data A pointer that will be passed to the callback function.
170 */ 170 */
171void reverse_proxy_client_set_status_callback(reverse_proxy_client_t client, reverse_proxy_status_cb_t callback, void* user_data); 171LIBIMOBILEDEVICE_API void reverse_proxy_client_set_status_callback(reverse_proxy_client_t client, reverse_proxy_status_cb_t callback, void* user_data);
172 172
173/** 173/**
174 * Set a log callback function. Useful for debugging or verbosity. 174 * Set a log callback function. Useful for debugging or verbosity.
@@ -180,7 +180,7 @@ void reverse_proxy_client_set_status_callback(reverse_proxy_client_t client, rev
180 * when the reverse proxy logs something. 180 * when the reverse proxy logs something.
181 * @param user_data A pointer that will be passed to the callback function. 181 * @param user_data A pointer that will be passed to the callback function.
182 */ 182 */
183void reverse_proxy_client_set_log_callback(reverse_proxy_client_t client, reverse_proxy_log_cb_t callback, void* user_data); 183LIBIMOBILEDEVICE_API void reverse_proxy_client_set_log_callback(reverse_proxy_client_t client, reverse_proxy_log_cb_t callback, void* user_data);
184 184
185/** 185/**
186 * Set a data callback function. Useful for debugging or extra verbosity. 186 * Set a data callback function. Useful for debugging or extra verbosity.
@@ -193,7 +193,7 @@ void reverse_proxy_client_set_log_callback(reverse_proxy_client_t client, revers
193 * @param user_data A pointer that will be passed to the callback function. 193 * @param user_data A pointer that will be passed to the callback function.
194 */ 194 */
195 195
196void reverse_proxy_client_set_data_callback(reverse_proxy_client_t client, reverse_proxy_data_cb_t callback, void* user_data); 196LIBIMOBILEDEVICE_API void reverse_proxy_client_set_data_callback(reverse_proxy_client_t client, reverse_proxy_data_cb_t callback, void* user_data);
197 197
198/** 198/**
199 * Helper function to return the type of a given reverse proxy client, which 199 * Helper function to return the type of a given reverse proxy client, which
@@ -204,7 +204,7 @@ void reverse_proxy_client_set_data_callback(reverse_proxy_client_t client, rever
204 * 204 *
205 * @return The type of the rerverse proxy client 205 * @return The type of the rerverse proxy client
206 */ 206 */
207reverse_proxy_client_type_t reverse_proxy_get_type(reverse_proxy_client_t client); 207LIBIMOBILEDEVICE_API reverse_proxy_client_type_t reverse_proxy_get_type(reverse_proxy_client_t client);
208 208
209#ifdef __cplusplus 209#ifdef __cplusplus
210} 210}
diff --git a/include/libimobiledevice/sbservices.h b/include/libimobiledevice/sbservices.h
index 509d5b9..7435947 100644
--- a/include/libimobiledevice/sbservices.h
+++ b/include/libimobiledevice/sbservices.h
@@ -68,7 +68,7 @@ typedef sbservices_client_private *sbservices_client_t; /**< The client handle.
68 * @return SBSERVICES_E_SUCCESS on success, SBSERVICES_E_INVALID_ARG when 68 * @return SBSERVICES_E_SUCCESS on success, SBSERVICES_E_INVALID_ARG when
69 * client is NULL, or an SBSERVICES_E_* error code otherwise. 69 * client is NULL, or an SBSERVICES_E_* error code otherwise.
70 */ 70 */
71sbservices_error_t sbservices_client_new(idevice_t device, lockdownd_service_descriptor_t service, sbservices_client_t *client); 71LIBIMOBILEDEVICE_API sbservices_error_t sbservices_client_new(idevice_t device, lockdownd_service_descriptor_t service, sbservices_client_t *client);
72 72
73/** 73/**
74 * Starts a new sbservices service on the specified device and connects to it. 74 * Starts a new sbservices service on the specified device and connects to it.
@@ -83,7 +83,7 @@ sbservices_error_t sbservices_client_new(idevice_t device, lockdownd_service_des
83 * @return SBSERVICES_E_SUCCESS on success, or an SBSERVICES_E_* error 83 * @return SBSERVICES_E_SUCCESS on success, or an SBSERVICES_E_* error
84 * code otherwise. 84 * code otherwise.
85 */ 85 */
86sbservices_error_t sbservices_client_start_service(idevice_t device, sbservices_client_t* client, const char* label); 86LIBIMOBILEDEVICE_API sbservices_error_t sbservices_client_start_service(idevice_t device, sbservices_client_t* client, const char* label);
87 87
88/** 88/**
89 * Disconnects an sbservices client from the device and frees up the 89 * Disconnects an sbservices client from the device and frees up the
@@ -94,7 +94,7 @@ sbservices_error_t sbservices_client_start_service(idevice_t device, sbservices_
94 * @return SBSERVICES_E_SUCCESS on success, SBSERVICES_E_INVALID_ARG when 94 * @return SBSERVICES_E_SUCCESS on success, SBSERVICES_E_INVALID_ARG when
95 * client is NULL, or an SBSERVICES_E_* error code otherwise. 95 * client is NULL, or an SBSERVICES_E_* error code otherwise.
96 */ 96 */
97sbservices_error_t sbservices_client_free(sbservices_client_t client); 97LIBIMOBILEDEVICE_API sbservices_error_t sbservices_client_free(sbservices_client_t client);
98 98
99 99
100/** 100/**
@@ -111,7 +111,7 @@ sbservices_error_t sbservices_client_free(sbservices_client_t client);
111 * @return SBSERVICES_E_SUCCESS on success, SBSERVICES_E_INVALID_ARG when 111 * @return SBSERVICES_E_SUCCESS on success, SBSERVICES_E_INVALID_ARG when
112 * client or state is invalid, or an SBSERVICES_E_* error code otherwise. 112 * client or state is invalid, or an SBSERVICES_E_* error code otherwise.
113 */ 113 */
114sbservices_error_t sbservices_get_icon_state(sbservices_client_t client, plist_t *state, const char *format_version); 114LIBIMOBILEDEVICE_API sbservices_error_t sbservices_get_icon_state(sbservices_client_t client, plist_t *state, const char *format_version);
115 115
116/** 116/**
117 * Sets the icon state of the connected device. 117 * Sets the icon state of the connected device.
@@ -122,7 +122,7 @@ sbservices_error_t sbservices_get_icon_state(sbservices_client_t client, plist_t
122 * @return SBSERVICES_E_SUCCESS on success, SBSERVICES_E_INVALID_ARG when 122 * @return SBSERVICES_E_SUCCESS on success, SBSERVICES_E_INVALID_ARG when
123 * client or newstate is NULL, or an SBSERVICES_E_* error code otherwise. 123 * client or newstate is NULL, or an SBSERVICES_E_* error code otherwise.
124 */ 124 */
125sbservices_error_t sbservices_set_icon_state(sbservices_client_t client, plist_t newstate); 125LIBIMOBILEDEVICE_API sbservices_error_t sbservices_set_icon_state(sbservices_client_t client, plist_t newstate);
126 126
127/** 127/**
128 * Get the icon of the specified app as PNG data. 128 * Get the icon of the specified app as PNG data.
@@ -139,7 +139,7 @@ sbservices_error_t sbservices_set_icon_state(sbservices_client_t client, plist_t
139 * client, bundleId, or pngdata are invalid, or an SBSERVICES_E_* error 139 * client, bundleId, or pngdata are invalid, or an SBSERVICES_E_* error
140 * code otherwise. 140 * code otherwise.
141 */ 141 */
142sbservices_error_t sbservices_get_icon_pngdata(sbservices_client_t client, const char *bundleId, char **pngdata, uint64_t *pngsize); 142LIBIMOBILEDEVICE_API sbservices_error_t sbservices_get_icon_pngdata(sbservices_client_t client, const char *bundleId, char **pngdata, uint64_t *pngsize);
143 143
144/** 144/**
145 * Gets the interface orientation of the device. 145 * Gets the interface orientation of the device.
@@ -150,7 +150,7 @@ sbservices_error_t sbservices_get_icon_pngdata(sbservices_client_t client, const
150 * @return SBSERVICES_E_SUCCESS on success, SBSERVICES_E_INVALID_ARG when 150 * @return SBSERVICES_E_SUCCESS on success, SBSERVICES_E_INVALID_ARG when
151 * client or state is invalid, or an SBSERVICES_E_* error code otherwise. 151 * client or state is invalid, or an SBSERVICES_E_* error code otherwise.
152 */ 152 */
153sbservices_error_t sbservices_get_interface_orientation(sbservices_client_t client, sbservices_interface_orientation_t* interface_orientation); 153LIBIMOBILEDEVICE_API sbservices_error_t sbservices_get_interface_orientation(sbservices_client_t client, sbservices_interface_orientation_t* interface_orientation);
154 154
155/** 155/**
156 * Get the home screen wallpaper as PNG data. 156 * Get the home screen wallpaper as PNG data.
@@ -166,7 +166,7 @@ sbservices_error_t sbservices_get_interface_orientation(sbservices_client_t clie
166 * client or pngdata are invalid, or an SBSERVICES_E_* error 166 * client or pngdata are invalid, or an SBSERVICES_E_* error
167 * code otherwise. 167 * code otherwise.
168 */ 168 */
169sbservices_error_t sbservices_get_home_screen_wallpaper_pngdata(sbservices_client_t client, char **pngdata, uint64_t *pngsize); 169LIBIMOBILEDEVICE_API sbservices_error_t sbservices_get_home_screen_wallpaper_pngdata(sbservices_client_t client, char **pngdata, uint64_t *pngsize);
170 170
171#ifdef __cplusplus 171#ifdef __cplusplus
172} 172}
diff --git a/include/libimobiledevice/screenshotr.h b/include/libimobiledevice/screenshotr.h
index ecbbdbe..db3c969 100644
--- a/include/libimobiledevice/screenshotr.h
+++ b/include/libimobiledevice/screenshotr.h
@@ -66,7 +66,7 @@ typedef screenshotr_client_private *screenshotr_client_t; /**< The client handle
66 * or more parameters are invalid, or SCREENSHOTR_E_CONN_FAILED if the 66 * or more parameters are invalid, or SCREENSHOTR_E_CONN_FAILED if the
67 * connection to the device could not be established. 67 * connection to the device could not be established.
68 */ 68 */
69screenshotr_error_t screenshotr_client_new(idevice_t device, lockdownd_service_descriptor_t service, screenshotr_client_t * client); 69LIBIMOBILEDEVICE_API screenshotr_error_t screenshotr_client_new(idevice_t device, lockdownd_service_descriptor_t service, screenshotr_client_t * client);
70 70
71/** 71/**
72 * Starts a new screenshotr service on the specified device and connects to it. 72 * Starts a new screenshotr service on the specified device and connects to it.
@@ -81,7 +81,7 @@ screenshotr_error_t screenshotr_client_new(idevice_t device, lockdownd_service_d
81 * @return SCREENSHOTR_E_SUCCESS on success, or an SCREENSHOTR_E_* error 81 * @return SCREENSHOTR_E_SUCCESS on success, or an SCREENSHOTR_E_* error
82 * code otherwise. 82 * code otherwise.
83 */ 83 */
84screenshotr_error_t screenshotr_client_start_service(idevice_t device, screenshotr_client_t* client, const char* label); 84LIBIMOBILEDEVICE_API screenshotr_error_t screenshotr_client_start_service(idevice_t device, screenshotr_client_t* client, const char* label);
85 85
86/** 86/**
87 * Disconnects a screenshotr client from the device and frees up the 87 * Disconnects a screenshotr client from the device and frees up the
@@ -92,7 +92,7 @@ screenshotr_error_t screenshotr_client_start_service(idevice_t device, screensho
92 * @return SCREENSHOTR_E_SUCCESS on success, or SCREENSHOTR_E_INVALID_ARG 92 * @return SCREENSHOTR_E_SUCCESS on success, or SCREENSHOTR_E_INVALID_ARG
93 * if client is NULL. 93 * if client is NULL.
94 */ 94 */
95screenshotr_error_t screenshotr_client_free(screenshotr_client_t client); 95LIBIMOBILEDEVICE_API screenshotr_error_t screenshotr_client_free(screenshotr_client_t client);
96 96
97 97
98/** 98/**
@@ -109,7 +109,7 @@ screenshotr_error_t screenshotr_client_free(screenshotr_client_t client);
109 * one or more parameters are invalid, or another error code if an 109 * one or more parameters are invalid, or another error code if an
110 * error occurred. 110 * error occurred.
111 */ 111 */
112screenshotr_error_t screenshotr_take_screenshot(screenshotr_client_t client, char **imgdata, uint64_t *imgsize); 112LIBIMOBILEDEVICE_API screenshotr_error_t screenshotr_take_screenshot(screenshotr_client_t client, char **imgdata, uint64_t *imgsize);
113 113
114#ifdef __cplusplus 114#ifdef __cplusplus
115} 115}
diff --git a/include/libimobiledevice/service.h b/include/libimobiledevice/service.h
index 28b6db6..f31ada4 100644
--- a/include/libimobiledevice/service.h
+++ b/include/libimobiledevice/service.h
@@ -62,7 +62,7 @@ typedef service_client_private* service_client_t; /**< The client handle. */
62 * SERVICE_E_INVALID_ARG when one of the arguments is invalid, 62 * SERVICE_E_INVALID_ARG when one of the arguments is invalid,
63 * or SERVICE_E_MUX_ERROR when connecting to the device failed. 63 * or SERVICE_E_MUX_ERROR when connecting to the device failed.
64 */ 64 */
65service_error_t service_client_new(idevice_t device, lockdownd_service_descriptor_t service, service_client_t *client); 65LIBIMOBILEDEVICE_API service_error_t service_client_new(idevice_t device, lockdownd_service_descriptor_t service, service_client_t *client);
66 66
67/** 67/**
68 * Starts a new service on the specified device with given name and 68 * Starts a new service on the specified device with given name and
@@ -81,7 +81,7 @@ service_error_t service_client_new(idevice_t device, lockdownd_service_descripto
81 * @return SERVICE_E_SUCCESS on success, or a SERVICE_E_* error code 81 * @return SERVICE_E_SUCCESS on success, or a SERVICE_E_* error code
82 * otherwise. 82 * otherwise.
83 */ 83 */
84service_error_t service_client_factory_start_service(idevice_t device, const char* service_name, void **client, const char* label, int32_t (*constructor_func)(idevice_t, lockdownd_service_descriptor_t, void**), int32_t *error_code); 84LIBIMOBILEDEVICE_API service_error_t service_client_factory_start_service(idevice_t device, const char* service_name, void **client, const char* label, int32_t (*constructor_func)(idevice_t, lockdownd_service_descriptor_t, void**), int32_t *error_code);
85 85
86/** 86/**
87 * Frees a service instance. 87 * Frees a service instance.
@@ -92,7 +92,7 @@ service_error_t service_client_factory_start_service(idevice_t device, const cha
92 * SERVICE_E_INVALID_ARG when client is invalid, or a 92 * SERVICE_E_INVALID_ARG when client is invalid, or a
93 * SERVICE_E_UNKNOWN_ERROR when another error occurred. 93 * SERVICE_E_UNKNOWN_ERROR when another error occurred.
94 */ 94 */
95service_error_t service_client_free(service_client_t client); 95LIBIMOBILEDEVICE_API service_error_t service_client_free(service_client_t client);
96 96
97 97
98/** 98/**
@@ -108,7 +108,7 @@ service_error_t service_client_free(service_client_t client);
108 * invalid, or SERVICE_E_UNKNOWN_ERROR when an unspecified 108 * invalid, or SERVICE_E_UNKNOWN_ERROR when an unspecified
109 * error occurs. 109 * error occurs.
110 */ 110 */
111service_error_t service_send(service_client_t client, const char *data, uint32_t size, uint32_t *sent); 111LIBIMOBILEDEVICE_API service_error_t service_send(service_client_t client, const char *data, uint32_t size, uint32_t *sent);
112 112
113/** 113/**
114 * Receives data using the given service client with specified timeout. 114 * Receives data using the given service client with specified timeout.
@@ -125,7 +125,7 @@ service_error_t service_send(service_client_t client, const char *data, uint32_t
125 * occurs, or SERVICE_E_UNKNOWN_ERROR when an unspecified 125 * occurs, or SERVICE_E_UNKNOWN_ERROR when an unspecified
126 * error occurs. 126 * error occurs.
127 */ 127 */
128service_error_t service_receive_with_timeout(service_client_t client, char *data, uint32_t size, uint32_t *received, unsigned int timeout); 128LIBIMOBILEDEVICE_API service_error_t service_receive_with_timeout(service_client_t client, char *data, uint32_t size, uint32_t *received, unsigned int timeout);
129 129
130/** 130/**
131 * Receives data using the given service client. 131 * Receives data using the given service client.
@@ -143,7 +143,7 @@ service_error_t service_receive_with_timeout(service_client_t client, char *data
143 * occurs, or SERVICE_E_UNKNOWN_ERROR when an unspecified 143 * occurs, or SERVICE_E_UNKNOWN_ERROR when an unspecified
144 * error occurs. 144 * error occurs.
145 */ 145 */
146service_error_t service_receive(service_client_t client, char *data, uint32_t size, uint32_t *received); 146LIBIMOBILEDEVICE_API service_error_t service_receive(service_client_t client, char *data, uint32_t size, uint32_t *received);
147 147
148 148
149/** 149/**
@@ -158,7 +158,7 @@ service_error_t service_receive(service_client_t client, char *data, uint32_t si
158 * SERVICE_E_SSL_ERROR when SSL could not be enabled, 158 * SERVICE_E_SSL_ERROR when SSL could not be enabled,
159 * or SERVICE_E_UNKNOWN_ERROR otherwise. 159 * or SERVICE_E_UNKNOWN_ERROR otherwise.
160 */ 160 */
161service_error_t service_enable_ssl(service_client_t client); 161LIBIMOBILEDEVICE_API service_error_t service_enable_ssl(service_client_t client);
162 162
163/** 163/**
164 * Disable SSL for the given service client. 164 * Disable SSL for the given service client.
@@ -169,7 +169,7 @@ service_error_t service_enable_ssl(service_client_t client);
169 * SERVICE_E_INVALID_ARG if client or client->connection is 169 * SERVICE_E_INVALID_ARG if client or client->connection is
170 * NULL, or SERVICE_E_UNKNOWN_ERROR otherwise. 170 * NULL, or SERVICE_E_UNKNOWN_ERROR otherwise.
171 */ 171 */
172service_error_t service_disable_ssl(service_client_t client); 172LIBIMOBILEDEVICE_API service_error_t service_disable_ssl(service_client_t client);
173 173
174/** 174/**
175 * Disable SSL for the given service client, optionally without sending SSL terminate messages. 175 * Disable SSL for the given service client, optionally without sending SSL terminate messages.
@@ -182,7 +182,7 @@ service_error_t service_disable_ssl(service_client_t client);
182 * SERVICE_E_INVALID_ARG if client or client->connection is 182 * SERVICE_E_INVALID_ARG if client or client->connection is
183 * NULL, or SERVICE_E_UNKNOWN_ERROR otherwise. 183 * NULL, or SERVICE_E_UNKNOWN_ERROR otherwise.
184 */ 184 */
185service_error_t service_disable_bypass_ssl(service_client_t client, uint8_t sslBypass); 185LIBIMOBILEDEVICE_API service_error_t service_disable_bypass_ssl(service_client_t client, uint8_t sslBypass);
186 186
187/** 187/**
188 * Return a handle to the parent #idevice_connection_t of the given service client. 188 * Return a handle to the parent #idevice_connection_t of the given service client.
@@ -193,7 +193,8 @@ service_error_t service_disable_bypass_ssl(service_client_t client, uint8_t sslB
193 * @return SERVICE_E_SUCCESS on success, 193 * @return SERVICE_E_SUCCESS on success,
194 * SERVICE_E_INVALID_ARG if one or more of the arguments are invalid. 194 * SERVICE_E_INVALID_ARG if one or more of the arguments are invalid.
195 */ 195 */
196service_error_t service_get_connection(service_client_t client, idevice_connection_t *connection); 196LIBIMOBILEDEVICE_API service_error_t service_get_connection(service_client_t client, idevice_connection_t *connection);
197
197#ifdef __cplusplus 198#ifdef __cplusplus
198} 199}
199#endif 200#endif
diff --git a/include/libimobiledevice/syslog_relay.h b/include/libimobiledevice/syslog_relay.h
index aae5d11..0f6487a 100644
--- a/include/libimobiledevice/syslog_relay.h
+++ b/include/libimobiledevice/syslog_relay.h
@@ -65,7 +65,7 @@ typedef void (*syslog_relay_receive_cb_t)(char c, void *user_data);
65 * @return SYSLOG_RELAY_E_SUCCESS on success, SYSLOG_RELAY_E_INVALID_ARG when 65 * @return SYSLOG_RELAY_E_SUCCESS on success, SYSLOG_RELAY_E_INVALID_ARG when
66 * client is NULL, or an SYSLOG_RELAY_E_* error code otherwise. 66 * client is NULL, or an SYSLOG_RELAY_E_* error code otherwise.
67 */ 67 */
68syslog_relay_error_t syslog_relay_client_new(idevice_t device, lockdownd_service_descriptor_t service, syslog_relay_client_t * client); 68LIBIMOBILEDEVICE_API syslog_relay_error_t syslog_relay_client_new(idevice_t device, lockdownd_service_descriptor_t service, syslog_relay_client_t * client);
69 69
70/** 70/**
71 * Starts a new syslog_relay service on the specified device and connects to it. 71 * Starts a new syslog_relay service on the specified device and connects to it.
@@ -80,7 +80,7 @@ syslog_relay_error_t syslog_relay_client_new(idevice_t device, lockdownd_service
80 * @return SYSLOG_RELAY_E_SUCCESS on success, or an SYSLOG_RELAY_E_* error 80 * @return SYSLOG_RELAY_E_SUCCESS on success, or an SYSLOG_RELAY_E_* error
81 * code otherwise. 81 * code otherwise.
82 */ 82 */
83syslog_relay_error_t syslog_relay_client_start_service(idevice_t device, syslog_relay_client_t * client, const char* label); 83LIBIMOBILEDEVICE_API syslog_relay_error_t syslog_relay_client_start_service(idevice_t device, syslog_relay_client_t * client, const char* label);
84 84
85/** 85/**
86 * Disconnects a syslog_relay client from the device and frees up the 86 * Disconnects a syslog_relay client from the device and frees up the
@@ -91,7 +91,7 @@ syslog_relay_error_t syslog_relay_client_start_service(idevice_t device, syslog_
91 * @return SYSLOG_RELAY_E_SUCCESS on success, SYSLOG_RELAY_E_INVALID_ARG when 91 * @return SYSLOG_RELAY_E_SUCCESS on success, SYSLOG_RELAY_E_INVALID_ARG when
92 * client is NULL, or an SYSLOG_RELAY_E_* error code otherwise. 92 * client is NULL, or an SYSLOG_RELAY_E_* error code otherwise.
93 */ 93 */
94syslog_relay_error_t syslog_relay_client_free(syslog_relay_client_t client); 94LIBIMOBILEDEVICE_API syslog_relay_error_t syslog_relay_client_free(syslog_relay_client_t client);
95 95
96 96
97/** 97/**
@@ -108,7 +108,7 @@ syslog_relay_error_t syslog_relay_client_free(syslog_relay_client_t client);
108 * invalid or SYSLOG_RELAY_E_UNKNOWN_ERROR when an unspecified 108 * invalid or SYSLOG_RELAY_E_UNKNOWN_ERROR when an unspecified
109 * error occurs or a syslog capture has already been started. 109 * error occurs or a syslog capture has already been started.
110 */ 110 */
111syslog_relay_error_t syslog_relay_start_capture(syslog_relay_client_t client, syslog_relay_receive_cb_t callback, void* user_data); 111LIBIMOBILEDEVICE_API syslog_relay_error_t syslog_relay_start_capture(syslog_relay_client_t client, syslog_relay_receive_cb_t callback, void* user_data);
112 112
113/** 113/**
114 * Starts capturing the *raw* syslog of the device using a callback. 114 * Starts capturing the *raw* syslog of the device using a callback.
@@ -129,7 +129,7 @@ syslog_relay_error_t syslog_relay_start_capture(syslog_relay_client_t client, sy
129 * invalid or SYSLOG_RELAY_E_UNKNOWN_ERROR when an unspecified 129 * invalid or SYSLOG_RELAY_E_UNKNOWN_ERROR when an unspecified
130 * error occurs or a syslog capture has already been started. 130 * error occurs or a syslog capture has already been started.
131 */ 131 */
132syslog_relay_error_t syslog_relay_start_capture_raw(syslog_relay_client_t client, syslog_relay_receive_cb_t callback, void* user_data); 132LIBIMOBILEDEVICE_API syslog_relay_error_t syslog_relay_start_capture_raw(syslog_relay_client_t client, syslog_relay_receive_cb_t callback, void* user_data);
133 133
134/** 134/**
135 * Stops capturing the syslog of the device. 135 * Stops capturing the syslog of the device.
@@ -143,7 +143,7 @@ syslog_relay_error_t syslog_relay_start_capture_raw(syslog_relay_client_t client
143 * invalid or SYSLOG_RELAY_E_UNKNOWN_ERROR when an unspecified 143 * invalid or SYSLOG_RELAY_E_UNKNOWN_ERROR when an unspecified
144 * error occurs or a syslog capture has already been started. 144 * error occurs or a syslog capture has already been started.
145 */ 145 */
146syslog_relay_error_t syslog_relay_stop_capture(syslog_relay_client_t client); 146LIBIMOBILEDEVICE_API syslog_relay_error_t syslog_relay_stop_capture(syslog_relay_client_t client);
147 147
148/* Receiving */ 148/* Receiving */
149 149
@@ -162,7 +162,7 @@ syslog_relay_error_t syslog_relay_stop_capture(syslog_relay_client_t client);
162 * occurs, or SYSLOG_RELAY_E_UNKNOWN_ERROR when an unspecified 162 * occurs, or SYSLOG_RELAY_E_UNKNOWN_ERROR when an unspecified
163 * error occurs. 163 * error occurs.
164 */ 164 */
165syslog_relay_error_t syslog_relay_receive_with_timeout(syslog_relay_client_t client, char *data, uint32_t size, uint32_t *received, unsigned int timeout); 165LIBIMOBILEDEVICE_API syslog_relay_error_t syslog_relay_receive_with_timeout(syslog_relay_client_t client, char *data, uint32_t size, uint32_t *received, unsigned int timeout);
166 166
167/** 167/**
168 * Receives data from the service. 168 * Receives data from the service.
@@ -175,7 +175,7 @@ syslog_relay_error_t syslog_relay_receive_with_timeout(syslog_relay_client_t cli
175 * @return SYSLOG_RELAY_E_SUCCESS on success, 175 * @return SYSLOG_RELAY_E_SUCCESS on success,
176 * SYSLOG_RELAY_E_INVALID_ARG when client or plist is NULL 176 * SYSLOG_RELAY_E_INVALID_ARG when client or plist is NULL
177 */ 177 */
178syslog_relay_error_t syslog_relay_receive(syslog_relay_client_t client, char *data, uint32_t size, uint32_t *received); 178LIBIMOBILEDEVICE_API syslog_relay_error_t syslog_relay_receive(syslog_relay_client_t client, char *data, uint32_t size, uint32_t *received);
179 179
180#ifdef __cplusplus 180#ifdef __cplusplus
181} 181}
diff --git a/include/libimobiledevice/webinspector.h b/include/libimobiledevice/webinspector.h
index 064ba91..16d2ca2 100644
--- a/include/libimobiledevice/webinspector.h
+++ b/include/libimobiledevice/webinspector.h
@@ -62,7 +62,7 @@ typedef webinspector_client_private *webinspector_client_t; /**< The client hand
62 * @return WEBINSPECTOR_E_SUCCESS on success, WEBINSPECTOR_E_INVALID_ARG when 62 * @return WEBINSPECTOR_E_SUCCESS on success, WEBINSPECTOR_E_INVALID_ARG when
63 * client is NULL, or an WEBINSPECTOR_E_* error code otherwise. 63 * client is NULL, or an WEBINSPECTOR_E_* error code otherwise.
64 */ 64 */
65webinspector_error_t webinspector_client_new(idevice_t device, lockdownd_service_descriptor_t service, webinspector_client_t * client); 65LIBIMOBILEDEVICE_API webinspector_error_t webinspector_client_new(idevice_t device, lockdownd_service_descriptor_t service, webinspector_client_t * client);
66 66
67/** 67/**
68 * Starts a new webinspector service on the specified device and connects to it. 68 * Starts a new webinspector service on the specified device and connects to it.
@@ -77,7 +77,7 @@ webinspector_error_t webinspector_client_new(idevice_t device, lockdownd_service
77 * @return WEBINSPECTOR_E_SUCCESS on success, or an WEBINSPECTOR_E_* error 77 * @return WEBINSPECTOR_E_SUCCESS on success, or an WEBINSPECTOR_E_* error
78 * code otherwise. 78 * code otherwise.
79 */ 79 */
80webinspector_error_t webinspector_client_start_service(idevice_t device, webinspector_client_t * client, const char* label); 80LIBIMOBILEDEVICE_API webinspector_error_t webinspector_client_start_service(idevice_t device, webinspector_client_t * client, const char* label);
81 81
82/** 82/**
83 * Disconnects a webinspector client from the device and frees up the 83 * Disconnects a webinspector client from the device and frees up the
@@ -88,7 +88,7 @@ webinspector_error_t webinspector_client_start_service(idevice_t device, webinsp
88 * @return WEBINSPECTOR_E_SUCCESS on success, WEBINSPECTOR_E_INVALID_ARG when 88 * @return WEBINSPECTOR_E_SUCCESS on success, WEBINSPECTOR_E_INVALID_ARG when
89 * client is NULL, or an WEBINSPECTOR_E_* error code otherwise. 89 * client is NULL, or an WEBINSPECTOR_E_* error code otherwise.
90 */ 90 */
91webinspector_error_t webinspector_client_free(webinspector_client_t client); 91LIBIMOBILEDEVICE_API webinspector_error_t webinspector_client_free(webinspector_client_t client);
92 92
93 93
94/** 94/**
@@ -100,7 +100,7 @@ webinspector_error_t webinspector_client_free(webinspector_client_t client);
100 * @return DIAGNOSTICS_RELAY_E_SUCCESS on success, 100 * @return DIAGNOSTICS_RELAY_E_SUCCESS on success,
101 * DIAGNOSTICS_RELAY_E_INVALID_ARG when client or plist is NULL 101 * DIAGNOSTICS_RELAY_E_INVALID_ARG when client or plist is NULL
102 */ 102 */
103webinspector_error_t webinspector_send(webinspector_client_t client, plist_t plist); 103LIBIMOBILEDEVICE_API webinspector_error_t webinspector_send(webinspector_client_t client, plist_t plist);
104 104
105/** 105/**
106 * Receives a plist from the service. 106 * Receives a plist from the service.
@@ -111,7 +111,7 @@ webinspector_error_t webinspector_send(webinspector_client_t client, plist_t pli
111 * @return DIAGNOSTICS_RELAY_E_SUCCESS on success, 111 * @return DIAGNOSTICS_RELAY_E_SUCCESS on success,
112 * DIAGNOSTICS_RELAY_E_INVALID_ARG when client or plist is NULL 112 * DIAGNOSTICS_RELAY_E_INVALID_ARG when client or plist is NULL
113 */ 113 */
114webinspector_error_t webinspector_receive(webinspector_client_t client, plist_t * plist); 114LIBIMOBILEDEVICE_API webinspector_error_t webinspector_receive(webinspector_client_t client, plist_t * plist);
115 115
116/** 116/**
117 * Receives a plist using the given webinspector client. 117 * Receives a plist using the given webinspector client.
@@ -128,7 +128,7 @@ webinspector_error_t webinspector_receive(webinspector_client_t client, plist_t
128 * communication error occurs, or WEBINSPECTOR_E_UNKNOWN_ERROR 128 * communication error occurs, or WEBINSPECTOR_E_UNKNOWN_ERROR
129 * when an unspecified error occurs. 129 * when an unspecified error occurs.
130 */ 130 */
131webinspector_error_t webinspector_receive_with_timeout(webinspector_client_t client, plist_t * plist, uint32_t timeout_ms); 131LIBIMOBILEDEVICE_API webinspector_error_t webinspector_receive_with_timeout(webinspector_client_t client, plist_t * plist, uint32_t timeout_ms);
132 132
133#ifdef __cplusplus 133#ifdef __cplusplus
134} 134}