hahah, yes an x86 binary would indeed cause problems. cellcore.dll is indeed available on ce5, and ce4.x as well. Its not part of the OS, but rather part of the PPC/PPCphone/smartphone platforms (and you dont' have the source to it from platform builder). It has to do with functionality intended for phone operations (hence the name) but it also provides the 'Windows Connection Manager', which is intended to 'simplify' netwroroking by automatically connecting and disconnecting stuff. It causes me much heartache and sorry because it likes to terminate the network link used fo rthe tunnel when the TAP gets connected, thinking that TAP is a 'cheaper' connection than the underlying link. It doesn't know that TAP is dependent on the underlying link, so I have to do some hackery to keep the underlying link open.
Regarding 'conventional' networking, this just means making connections not-through-connection-manager, and doesn't mean you need to do any special research. I just made that term up to distinguish from using connection manager to establish connections. You can just establish your wireless link in whatever way is normal, and carry on like you would in a desktop scenario. Winintet.dll is used for some of the httpproxy support, and you may be able to conditionally compile that support out to remove that dependency if you want. You should be on your way. -----Original Message----- From: jonathan openvpn [mailto:jonathan.open...@gmail.com] Sent: Thursday, May 28, 2009 9:30 AM To: dave Cc: openvpn-devel@lists.sourceforge.net Subject: Re: [Openvpn-devel] CE port needed DLLs Hi Dave. This morning I've been able to solve the error and began to debug the application. There were two reasons for my problem: - the wininet.dll file i had was compiled for x86 platform. I've found a thumb file version in internet. - I have removed the code related to the connection manager (files openvpn.c and wince_portstuff.c) and the cellcore.lib link reference. Also, in internet i have found that cellcore.dll is available in Windows Mobile and Windows Embedded CE 6.0 but not in Windows CE 5.0 At this point, as you have said, i will need to do networking "in the more conventional way", in spite of i don't know what it means yet, and how to do it... To sum up, my problem was i didn't have the correct platform libraries, plus a big piece of ignorance... Can you give me a link or reference to somewhere I could get information about possibilities to solve my networking needs without the connection manager? Thank you very much for your help. It has been very useful. Probably i'll come back soon with some new questions and doubts. I hope some day i'll be able to solve someone questions too... Best regards, Jonathan. 2009/5/28 dave <d...@ziggurat29.com> Sure, you're welcome. Thumb should not fundamentally be a problem provided the platform and tools support it, and it sounds like in your case it does. Your assumptions about what you need are correct, I believe (i.e., you don't need the gui). You may want to inspect the code, however, because there are routines for installing and loading the TAP driver that may be of interest. They are in taputil.h,.c cellcore.dll is used to provide the Windows Connection Manager stuff, and in openvpn.exe this in openvpn.c, around line 203, and around line 284. I should have conditional-compiled that as an option, but I didn't. Similarly the support routines are in wince_portstuff.c at line 1631 through the end, and they can go, too (actually if you remove those first and compile, the compile should fail and you can find if there was anything I missed, but that should be it). Generic CE platforms don't use the Windows Connection Manager and do networking in the more conventional way, so you can probable do without it, and remove the cellcore.lib from your link step. Assuming your error message really means 'missing dlls' instead of 'invalid binary' then you should be better off. Again, if you want to send me your compiled binary, I can inspect it more closely if that is useful. -Dave -----Original Message----- From: jonathan openvpn [mailto:jonathan.open...@gmail.com] Sent: Thursday, May 28, 2009 1:56 AM To: dave Cc: openvpn-devel@lists.sourceforge.net Subject: Re: [Openvpn-devel] CE port needed DLLs Hello. First of all, thank you for the quick response. We have other applications running on the Windows CE distribution and the linker option "MACHINE" is set to "THUMB". We are using a custom developed board, and we develop our applications through Visual Studio 2005. We only need to stablish a connection to a VPN server without need of a GUI, all configuration must be transparent to the user. Therefore I think we only need the openvpn executable and TAP_CE driver. If i'm not wrong, the ovpncmgr module is to provide a GUI for the openVPN client. Is that correct? When no dll is provided, and I try to debug the application from Visual Studio connected to the device, i get the message: "An error occurred that usually indicates a corrupt installation (code 0x8007007e). If the problem persists, repair your Visual Studio installation via 'Add or Remove Programs' in control Panel" Some webs refer to that error like some archives are missing. When I put the dlls you have listed below, the error changes to: "openvpn is not a valid WindowsCE application". I suspect that some of the dll may not be correct for my platform. Could it be the source of my problem? I have not been able to find the cellcore.dll for our platform. Does it mean we cannot use the connection manager functionality? I have read in some forums that this functionality is not present on Windows CE... Sorry for my ignorance, I am pretty new on Windows CE. Your help is so much appreciated. Thank you very much. Jonathan. 2009/5/27 dave <d...@ziggurat29.com> That message usually means the binary is hosed, and I believe missing dlls give a different message. Are you sure Thumb is correct for your platform? Are you using a consumer device like a pocket pc phone, etc, or is it a custom board? I ask that because the existing code does use some functionality peculiar to the pocket pc (phone) that is not generally available on other platforms, yet the SDKs ofen include the headers and import libs, allowing you to successfully compile, but then you can't run it on the target device. When you say 'client application' are you meaning just the gui, or the whole entire set of programs (i.e., the TAP driver, the openvpn executable, and the gui). You can use DUMPBIN to find the dlls from the exe, and also inspect the header to see the cpu configuration. Here is a short list, if it helps: openvpn: * coredll.dll * w2s.dll * iphlpapi.dll * wininet.dll * ole32.dll * cellcore.dll tap-ce: * ndis.dll * coredll.dll ovpncmgr: * iphlpapi.dll * toolhelp.dll * cellcore.dll * ole32.dll * mfcce300.dll * coredll.dll * winsock.dll Your build may (will) differ depending on your platform, because your platform builder may have put some of these features in different dlls. That list was for PocketPC. Now, the cellcore.dll, you may not have on other platforms. It is needed for supporting Windows Connectin Manager, and you can surgically cut out that functionality if your platform doesn't have it. Most of the rest is fairly standard. Before doing surgery, you may wish to re-check your assumptions. Also, if you wish to zip up your problem binaries and send them to me directly, I will do a quick inspection for you. -dave -----Original Message----- From: jonathan openvpn [mailto:jonathan.open...@gmail.com] Sent: Wednesday, May 27, 2009 5:36 AM To: openvpn-devel@lists.sourceforge.net Subject: [Openvpn-devel] CE port needed DLLs Hello. I'm triying to execute a Windows CE 5.0 porting of openvpn client application. I've been successful on compiling it but when i try to execute i receive the message: "openvpn is not a valid WindowsCE application". I am compiling to ARM-Thumb architecture. I suspect there is a problem with needed DLLs. Could anyone tell me wich DLLs are needed and where could i get them? Thank you very much.