Problems with MSMQ, WM5 and (possibly) PXA270

G

Guest

I've been using MSMQ on Windows Mobile 2003 (version 4.20.0) for 15 months
with 13 PDAs, 5000+ messages per day, and it's been absolutely rock solid.
I now have to port the app to WM5 and can't get past first base.
Installing MSMQ on both an iPAQ hx2490 and an Xda Exec (both PXA270
processors) fails every time.
Using VISADM, I can Install and Register ok, registering generates a local
GUID, but when verifying the install, the requisite local files are *not*
created: -
$localhost$ - GUID.iq
$localhost$ - GUID.jq
MQLOGFILE.TXT
sequence.dat
hence I cannot create a new queue and the Status option in VISADM returns
Operation failed. Error code c00e000b

Installing the same MSMQ cab file in the VS2005 Pocket PC WM5.0 emulator
works fine.

Similar threads appear in this and other forums, eg
http://msdn.microsoft.com/newsgroup...mobile-wince&lang=en&cr=US&sloc=en-us&m=1&p=1
....but no solutions.
Is it WM5, CF2 or the PXA270?

Martin
 
P

Paul G. Tobey [eMVP]

It's probably safe to assume that it's not the processor. Make sure that
you are installing the right build of the MSMQ stuff. There could easily be
problems with installing a distribution designed for 2003 on a WM5 device.
What was your source for the MSMQ components?

Paul T.
 
P

Paul G. Tobey [eMVP]

If you can tell me, specifically, what operations you're performing, I'll
try to duplicate the problem.

Paul T.
 
G

Guest

Many thanks for your replies, Peter and Paul.
The steps I've followed thus far are: -
Copy NETCFv2.wm.armv4i.cab and msmq.ARM.cab to the WM5 device
1. InstallNETCF2 by clicking on the cab file. Soft reset
2. Install msmq by clicking on the cab file. Soft reset
4. Launch VISADM from \Windows.
6. Click Install (returns no output), then register (returns GUID). Soft
reset
7. Launch VISADM
8. Status returns Operation Failed. Error code c00e000b
Doing exactly the same on the WM5 emulator Status returns 'Windows
CE5.01(Build1700,3) - MSMQ 4.2002 (Build 0) , MSMQ_CE DISCONNECTED'

On the emulator, I can now create queues, on the device I get an error when
trying to create a queue.

Martin
 
P

Paul G. Tobey [eMVP]

Well, a search of the header files in the CE5 source code says:

MQ_ERROR_SERVICE_NOT_AVAILABLE

Sounds like a) the registry has not been properly modified to add the
service entry, b) the service manager isn't built into the OS on the target
device, but is built into the emulator, or c) the service manager isn't
running on the target device, but is on the emulator. I'm guessing b, in
your case.

Paul T.
 
G

Guest

Thanks Paul,

If I understand correctly, b) would suggest that HP haven't included the
service manager in their build of WM5 (it's an iPAQ hx2490).
Is there a solution or do I have to find a PDA where the OS has the
requisite components built in?

Martin
 
P

Paul G. Tobey [eMVP]

Finding one where you can eliminate the OS itself as the source of the
problem would be the easiest way to localize the problem itself. You can
check the registry on the device and see whether services.exe is being
started with an Init key under HKEY_LOCAL_MACHINE/Init. If not, then, no,
services are not available. I'm not sure what you'd do in that case, other
than contact HP and complain.

Paul T.
 
P

Paul G. Tobey [eMVP]

OK, that's better than the opposite. We need to see if MSMQ is in the list
of services to be started. Look in HKLM/Services. There should be an item
for MSMQ there. If not, the installation has failed. If so, what are the
entries?

Paul T.
 
G

Guest

Paul, This from the DEVICE registry

[HKEY_LOCAL_MACHINE\Services\MSMQD]
"FriendlyName"="Microsoft Message Queueing"
"Keep"=dword:00000001
"Index"=dword:00000001
"Prefix"="MMQ"
"Order"=dword:00000009
"Dll"="MSMQD.dll"
"Context"=dword:00000000

[HKEY_LOCAL_MACHINE\Comm\HTTPD\VROOTS\/Msmq]
@="\\windows\\srmpIsapi.dll"

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\MSMQD]
"Index"=dword:00000001
"Prefix"="MMQ"
"Keep"=dword:00000001
"Order"=dword:00000009
"Dll"="MSMQD.Dll"

[HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ]

[HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\SimpleClient]
"CETrackNetwork"="Yes"
"BaseDir"="\\Application Data\\Volatile\\MSMQ"
"AllowResponse"="No"
"UntrustedNetwork"="Yes"
"BinaryEnabled"="No"
"SrmpEnabled"="No"
"CEStartAtBoot"=dword:00000001
"MachineQuota"=dword:00000800
"DefaultLocalQuota"=dword:00000400
"DefaultQuota"=dword:00000100
"PingPort"=dword:00000dc7
"Port"=dword:00000709
"QueueManagerGUID"=hex:\
b4,d2,ae,e5,c0,e7,22,4a,ab,a6,e1,75,af,a2,ce,af

All the above appear in the Emulator Registry except for the following: -
[HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\SimpleClient]
contains additionally
"MessageID"=dword:00001001

[HKEY_LOCAL_MACHINE\Drivers\Active\43]
"Hnd"=dword:00475980
"Name"="MMQ1:"
"Key"="Drivers\\BuiltIn\\MSMQD"
"BusParent"=dword:00032160
"InterfaceType"=dword:00000000
"BusName"="BuiltInPhase1_0_1_0"

does *not* appear in the device registry

Any clues?

Martin
 
P

Paul G. Tobey [eMVP]

No, the only things that look strange to me are the Binary setting not being
on and the \/ thing in the HTTPD entry...

Paul T.

Martin Slater said:
Paul, This from the DEVICE registry

[HKEY_LOCAL_MACHINE\Services\MSMQD]
"FriendlyName"="Microsoft Message Queueing"
"Keep"=dword:00000001
"Index"=dword:00000001
"Prefix"="MMQ"
"Order"=dword:00000009
"Dll"="MSMQD.dll"
"Context"=dword:00000000

[HKEY_LOCAL_MACHINE\Comm\HTTPD\VROOTS\/Msmq]
@="\\windows\\srmpIsapi.dll"

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\MSMQD]
"Index"=dword:00000001
"Prefix"="MMQ"
"Keep"=dword:00000001
"Order"=dword:00000009
"Dll"="MSMQD.Dll"

[HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ]

[HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\SimpleClient]
"CETrackNetwork"="Yes"
"BaseDir"="\\Application Data\\Volatile\\MSMQ"
"AllowResponse"="No"
"UntrustedNetwork"="Yes"
"BinaryEnabled"="No"
"SrmpEnabled"="No"
"CEStartAtBoot"=dword:00000001
"MachineQuota"=dword:00000800
"DefaultLocalQuota"=dword:00000400
"DefaultQuota"=dword:00000100
"PingPort"=dword:00000dc7
"Port"=dword:00000709
"QueueManagerGUID"=hex:\
b4,d2,ae,e5,c0,e7,22,4a,ab,a6,e1,75,af,a2,ce,af

All the above appear in the Emulator Registry except for the following: -
[HKEY_LOCAL_MACHINE\Software\Microsoft\MSMQ\SimpleClient]
contains additionally
"MessageID"=dword:00001001

[HKEY_LOCAL_MACHINE\Drivers\Active\43]
"Hnd"=dword:00475980
"Name"="MMQ1:"
"Key"="Drivers\\BuiltIn\\MSMQD"
"BusParent"=dword:00032160
"InterfaceType"=dword:00000000
"BusName"="BuiltInPhase1_0_1_0"

does *not* appear in the device registry

Any clues?

Martin


Paul G. Tobey said:
OK, that's better than the opposite. We need to see if MSMQ is in the
list
of services to be started. Look in HKLM/Services. There should be an
item
for MSMQ there. If not, the installation has failed. If so, what are
the
entries?

Paul T.
 
A

Alex Blankendaal

Martin,

Had the same problems when porting from EVC4 to VS2005
on IPAQ with PXA270.

Solution for me:

Download MSMQ via following link:
http://www.microsoft.com/downloads/...b2-fa13-4062-b8d1-4406ccddb5fd&DisplayLang=en.

This will install, but after running visadmin.exe, the needed reg settings
are not set, you have to do it your self.

Then the next problem is, that the first time you try to use MSMQ, the
driver is not loaded,
same happens after a warm reset, to solve this you have to activate the
driver:

HANDLE handle = ActivateDevice(L"Drivers\\BuiltIn\\MSMQD",0)
if (handle!=NULL)
{
CloseHandle(handle)
}

After that you are ready to go.

Regards,

Alex Blankendaal
 
Top