iPhone Configuration Utility and DLL Hell

In Windows NT 4.0 DLL hell was a common occurrence. It was critical to install all apps, service packs, option packs in very specific orders to get a reliable system. When DLL conflicts occurred it was called ‘DLL HELL’ mostly because finding the root cause of such problems was a hellish experience. Today you can use application virtualization technologies such as ThinApp or App-V to eliminate these issues. However even without app virtualization on modern Windows such issues are rare and with good application design can be completely eliminated. Examples on techniques for eliminating this at application level can be found in MSDN Article “Avoiding DLL Hell” http://msdn.microsoft.com/en-us/magazine/bb985026.aspx

But if the app has a problem, you don’t have app virtualization as an option, and there is no fix from software provider available…a bit of ProcMon and file copies are probably all you need to fix it.

On launching iPhone Configuration Utility (iPCU) I was getting this error: The procedure entry point CFHTTPMessageSetHeaderFieldValue could not be located in the dynamic link library CFNetwork.dll. Tried on a few machines in my environment, all had the same error. Re-install of iTunes & iPhone Configuration utility didn’t fix the issue.

clip_image001

The error message displayed after entry point not found suggested re-installation of Apple Mobile Device Support.

clip_image002

However it was definitely installed, re-installing, updating to latest iTunes did not make the error go away.

clip_image004

So straight to ProcMon set a filter where

· Process Name is iPCU.exe

· Result is not SUCCESS

clip_image005

I then launched the iPhone configuration utility. I right clicked one entry where result was “FAST IO DISALLOWED” and selected “Exclude ‘FAST IO DISALLOWED’” This is because this gives no indication that the actual file access failed, an IRP-based operation will be tried instead. For more info on FAST IO refer to

“Disallowing a Fast I/O Operation in a Preoperation Callback Routine” http://msdn.microsoft.com/en-us/library/ff540121(VS.85).aspx

clip_image006

Looking here we find many attempts to load the cfNetwork.dll failing…

clip_image008

Now as DLLs are looked for in multiple locations (including current directory of app & directories in PATH environment variable) I checked did it succeed anywhere…To do this I set my filter to

· Path contains CFNetwork.dll

· Result is SUCCESS

· Path contains CFNetwork.dll

clip_image009

The result … it’s trying to load cfNetwork.dll from a directory that is not Windows included DLLs and is not Apple DLLs. Hmm. Seems strange…

clip_image011

A quick check of cfNetwork.dll on the system by running dir cfNetwork.dll /s from C: find two. The the DSM one is significantly smaller and does not have CFHTTPMessageSetHeaderFieldValue

clip_image013

Checking the path we can see why the DSM one was being used:

image

 

Copying “C:\Program Files\Common Files\Apple\Apple Application Support\CFNetwork.dll” to same directory as iPCU.exe “C:\Program Files\iPhone Configuration Utility” fixes the issue. Note we could have also copied it to C:\Windows\System32 (or C:\Windows\SysWow64 on 64-bit OS as iPCU.exe is a 32-bit EXE) However this could have introduced the risk that then DSM would access the Apple version of this DLL, instead of it’s own.

All looks good now.

clip_image017

Moral of the story; Don’t forget to ProcMon. And with some better application design it is possible to eliminate this problem altogether…

About chentiangemalc

specializes in end-user computing technologies. disclaimer 1) use at your own risk. test any solution in your environment. if you do not understand the impact/consequences of what you're doing please stop, and ask advice from somebody who does. 2) views are my own at the time of posting and do not necessarily represent my current view or the view of my employer and family members/relatives. 3) over the years Microsoft/Citrix/VMWare have given me a few free shirts, pens, paper notebooks/etc. despite these gifts i will try to remain unbiased.
This entry was posted in Mobility, ProcMon and tagged . Bookmark the permalink.

12 Responses to iPhone Configuration Utility and DLL Hell

  1. Thanks soooooooo much. You’re article helped me resolve the exact same problem which was stopping me from getting the PDAnet client running on my PC.

  2. Mark says:

    Thanks a lot, this was driving me nuts all week!

  3. Susie says:

    I am getting a very similar error message… do you think it could work for other similar problems? If so, would you be willing to help me solve my error message issue? Please reply if you can help!

  4. Charles says:

    Thanks alot for posting this! Very helpful

  5. nakamo says:

    Same here, Your solution HELPED ME A LOT to configure stupid PDANET to connect to work laptop >LOL< BTW you could have summerized in begining that simply "Copying “C:\Program Files\Common Files\Apple\Apple Application Support\CFNetwork.dll” to same directory as iPCU.exe “C:\Program Files\iPhone Configuration Utility” fixes the issue. Note we could have also copied it to C:\Windows\System32" fixes problem, or else many people would be scared away by what looks like technical complexities attached with your solution. However I really appreciated time you have taken to write down excellent piece of solution Thanks.

  6. kush chaudhary says:

    Thanks nakamo

  7. Kartik Mehta says:

    Thanks a lot. A very nice solution that explains the problem and resolves it.

  8. This is the second time I’ve used your post to solve this problem. Thanks!!

  9. Frank Funk says:

    Thank you for your help. Your description and screenshots definitely helped.

  10. MartyB says:

    I had the same problem too. But copying the CFNetwork.dll did not work for me. I copied the SQLite3.dll to the C:\Program Files\iPhone Configuration Utility directory and that did the trick. Now working as a charm.

  11. Kaban says:

    Hey guys! Just resolved the same issue but I had a bit another slice. I have a bunch of software installed on my computer and “libxml2.dll” appeared to be also in Flash Builder internals and JRE7 files. So it was prioritized by my PATH to load incorrect DLL thus giving the same error – no such a function.
    I sovled this issue just copying a proper libxml2.dll from Apple Application Support close to iPCU.exe for Windows could load this one and I’ve kept my system config untouched.
    Hope that helps.

  12. Daniel Abreu says:

    Thank you man, i had the same problem, but with with libxml2.dll. Copying from “C:\Program Files\Common Files\Apple\Apple Application Support” to “C:\Program Files\iPhone Configuration Utility” fixed the issue

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s