diff --git a/src/libmtp.c b/src/libmtp.c
index 14d1532..0031756 100644
--- a/src/libmtp.c
+++ b/src/libmtp.c
@@ -4586,6 +4586,67 @@ LIBMTP_file_t * LIBMTP_Get_Files_And_Folders(LIBMTP_mtpdevice_t *device,
   return retfiles;
 }
 
+/**
+ * This function retrieves the list of ids of files and folders in a certain
+ * folder with id parent on a certain storage on a certain device.
+ * The device used with this operations must have been opened with
+ * LIBMTP_Open_Raw_Device_Uncached() or it will fail.
+ *
+ * NOTE: the request will always perform I/O with the device.
+ * @param device a pointer to the MTP device to report info from.
+ * @param storage a storage on the device to report info from. If
+ *        0 is passed in, the files for the given parent will be
+ *        searched across all available storages.
+ * @param parent the parent folder id.
+ * @param out the pointer where the array of ids is returned. It is
+ *        set only when the returned value > 0. The caller takes the
+ *        ownership of the array and has to free() it.
+ * @return the length of the returned array or -1 in case of failure.
+ */
+
+int LIBMTP_Get_Children(LIBMTP_mtpdevice_t *device,
+                        uint32_t const storage,
+                        uint32_t const parent,
+                        uint32_t **out)
+{
+  PTPParams *params = (PTPParams *) device->params;
+  PTP_USB *ptp_usb = (PTP_USB*) device->usbinfo;
+  LIBMTP_file_t *retfiles = NULL;
+  LIBMTP_file_t *curfile = NULL;
+  PTPObjectHandles currentHandles;
+  uint32_t storageid;
+  uint16_t ret;
+  int i = 0;
+
+  if (device->cached) {
+    // This function is only supposed to be used by devices
+    // opened as uncached!
+    LIBMTP_ERROR("tried to use %s on a cached device!\n", __func__);
+    return -1;
+  }
+
+  if (storage == 0)
+    storageid = PTP_GOH_ALL_STORAGE;
+  else
+    storageid = storage;
+
+  ret = ptp_getobjecthandles(params,
+                             storageid,
+                             PTP_GOH_ALL_FORMATS,
+                             parent,
+                             &currentHandles);
+
+  if (ret != PTP_RC_OK) {
+    add_ptp_error_to_errorstack(device, ret,
+        "LIBMTP_Get_Children(): could not get object handles.");
+    return -1;
+  }
+
+  if (currentHandles.Handler == NULL || currentHandles.n == 0)
+    return 0;
+  *out = currentHandles.Handler;
+  return currentHandles.n;
+}
 
 /**
  * This creates a new track metadata structure and allocates memory
diff --git a/src/libmtp.h.in b/src/libmtp.h.in
index 671b922..5ed5164 100644
--- a/src/libmtp.h.in
+++ b/src/libmtp.h.in
@@ -922,6 +922,10 @@ LIBMTP_file_t *LIBMTP_Get_Filelisting_With_Callback(LIBMTP_mtpdevice_t *,
 LIBMTP_file_t * LIBMTP_Get_Files_And_Folders(LIBMTP_mtpdevice_t *,
 					     uint32_t const,
 					     uint32_t const);
+int LIBMTP_Get_Children(LIBMTP_mtpdevice_t *,
+                        uint32_t const,
+                        uint32_t const,
+                        uint32_t**);
 LIBMTP_file_t *LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const);
 int LIBMTP_Get_File_Chunk(LIBMTP_mtpdevice_t*, uint32_t, uint32_t, uint32_t,
                           unsigned char**, uint32_t*);
diff --git a/src/libmtp.sym b/src/libmtp.sym
index 6736dc4..cc5329a 100644
--- a/src/libmtp.sym
+++ b/src/libmtp.sym
@@ -49,6 +49,7 @@ LIBMTP_Get_Filetype_Description
 LIBMTP_Get_Filelisting
 LIBMTP_Get_Filelisting_With_Callback
 LIBMTP_Get_Files_And_Folders
+LIBMTP_Get_Children
 LIBMTP_Get_Filemetadata
 LIBMTP_Get_File_Chunk
 LIBMTP_Get_File_To_File
