Poor WDM implementation under 9x

Hello everybody

I’ve found out that WDM on Lite platform (9x) doesn’t export (nor implement)
I/O Manager’s routines for work queues:
IoAllocateWorkItem()
IoQueueWorkItem()
IoFreeWorkItem()
Even if those routines are documented as being WDM.
How is it possible ?
Is this another Microsoft’s mistake ?
Or was it planned carefully ?
I’m a little bit frustrated…again and again the kernel mode developer is
forced
to do things in less correct way because the correct one isn’t supported
properly.

Also I’ve found out that 9x ntkern.vxd calls driver entry routine of my
driver
prior to initializing some of its internal data structures. Then if I call
some
routines (like IoRegisterPlugPlayNotification) the system crashes.
I can only say : stupid stupid stupid …

The only thing I can laud is that 9x WDM platform is able to load even
legacy
NT driver (after setting the appropriate registry key and its values - like
in NT).

Maybe this can help to someone (to identify his toruble more quickly than
I’ve done :-)))

Paul


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Hello Pavel,

Thursday, October 18, 2001, 12:31:32 PM, you wrote:

PH> Hello everybody

PH> I’ve found out that WDM on Lite platform (9x) doesn’t export (nor implement)
PH> I/O Manager’s routines for work queues:
PH> IoAllocateWorkItem()
PH> IoQueueWorkItem()
PH> IoFreeWorkItem()
PH> Even if those routines are documented as being WDM.
PH> How is it possible ?
PH> Is this another Microsoft’s mistake ?
PH> Or was it planned carefully ?
PH> I’m a little bit frustrated…again and again the kernel mode developer is
PH> forced
PH> to do things in less correct way because the correct one isn’t supported
PH> properly.

PH> Also I’ve found out that 9x ntkern.vxd calls driver entry routine of my
PH> driver
PH> prior to initializing some of its internal data structures. Then if I call
PH> some
PH> routines (like IoRegisterPlugPlayNotification) the system crashes.
PH> I can only say : stupid stupid stupid …

PH> The only thing I can laud is that 9x WDM platform is able to load even
PH> legacy
PH> NT driver (after setting the appropriate registry key and its values - like
PH> in NT).

PH> Maybe this can help to someone (to identify his toruble more quickly than
PH> I’ve done :-)))

PH> Paul

PH> —
PH> You are currently subscribed to ntdev as: xxxxx@infpres.com
PH> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Yeah, you’re absolutely right. NTKERN.VXD is a very intricate thing.
For example, IoReleaseRemoveLockAndWaitEx() function is not exported
from NTKERN.VXD even in Windows ME though it is present in the module.
It simply was not included into the export table for
_PELDR_AddExportTable() call. As for IoQueueWorkItem() yes, NTKERN.VXD
from Windows 98 doesn’t export this function, but you can use
ExQueueWorkItem() instead.

And of course, using of some functions strongly depends on loading and
call time (for instance, ZwCreateFile() and alike functions call
WDMFS.SYS driver which in turn depends on IFSMGR.VXD services, but
IFSMGR are initialized after CONFIGMG and NTKERN modules).


Best regards,
Konstantin Manurin (aka NizeG) mailto:xxxxx@infpres.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com