Here is the answer
LIBIMOBILE DEVICE LIBRARY FOR WINDOWS
Now you can use libimobiledevice on windows. For example, you can develop a win app to synchronize Bookmark between Firefox and iPhone etc.
A library you can used on WINDOWS to communicate with services running on Apple iPhone/iPod Touch devices. You can find source code here http://www.libimobiledevice.org/. And there is a list about what this library support. I just compiled it on Windows, so you can use it in your win32 apps.
I both compiled static and dynamic-link library. You can choose one which you prefer, BUT please read this FIRST.
You should install MinGW gcc in your system before using this static library. Because i'm too stupid and lazy to solve some problem there
So you can only compile it on MinGW-gcc and use it on windows.
gcc -o ideviceinfo ideviceinfo.c -I./Include/ ./Lib/imobiwin32.lib ./Lib/glib-2.0.lib ./Lib/libgcrypt.a ./Lib/libgpg-error.a ./Lib/libxml2 -static
gcc -o idevice_id idevice_id.c -I./Include/ ./Lib/imobiwin32.lib ./Lib/glib-2.0.lib ./Lib/libgcrypt.a ./Lib/libgpg-error.a ./Lib/libxml2 -static
gcc -o idevicepair idevicepair.c -I./Include/ ./Lib/imobiwin32.lib ./Lib/glib-2.0.lib ./Lib/libgcrypt.a ./Lib/libgpg-error.a ./Lib/libxml2 -static
This one is much easier to use if you prefer MSVC than gcc.
I only test in Microsoft Visual Studio 2008/2010.
Maybe you need dynamically load free function which exported from msvcrt.dll and use it to free some memory. Since some functions use malloc exported from msvcrt.dll. For example
Both examples had define function ptr Myfree. Like this
typedef void (*MYFREEFUNC)(void *memblock);
HMODULE hMod = LoadLibrary(_T("msvcrt.dll"));
Myfree = (MYFREEFUNC)GetProcAddress(hMod, "free");
char *devname = NULL;
//lockdownd_get_device_name will use malloc exported from
//msvcrt.dll to allocate memory block for devname.
//Now you need to free this memory block.
//If you use free function directly you will get a asset error,
//since msvc link free which exported by msvcr[xx].dll, not msvcrt.dll
plist_t array = NULL;
uint32_t isize = plist_array_get_size(array);
pxml = NULL;
plist_to_xml(array, &pxml, &isize);
//Here, this function alse use malloc exported from msvcrt.dll to
//allocate memory block.
Jan 29, 2012
Update libplist-1.4 to libplist-1.8
Update usbmuxd-1.0.7 to latest master git (Until Jan 29)
Update libimobiledevice-1.1.1 to latest master git
or google - ilibimobile device for windows