Hi,
interesting problem, not easy to find a solution from outside of your enviroment.
Maybe some ideas to solve your problem:
Take care of your os when using printui.dll (althought you wrote it works with local stored drivers):
Win2000/Server 2003:
http://support.microsoft.com/kb/189105[
^]
XP:
http://support.microsoft.com/kb/314486[
^]
Win7/Vista/Server 2008:
http://technet.microsoft.com/de-de/library/ee624057%28v=ws.10%29.aspx[
^]
It would be a great help to know where it exactly stucks, if it's "only" at step 3 of your code, there must be something wrong with credentials/arguments of printui.dll/filepath to your INF. A quick check if it works to get some "normal" file using a process would give a good return if it could be a problem with credentials. Then you're able to try the rest.
In addition I would going safe if Step2 was finished successfully (maybe give Step2 a little time to create port).
Hope that helps.
Regards