Hi,
In Windows 98, the PE Loader Services provide some APIs, to communicate
between two drivers. Is there something similar in Windows NT/2000?
Thanks
Pamitha
S/W Engineer
www.nesttech.net
Hi,
In Windows 98, the PE Loader Services provide some APIs, to communicate
between two drivers. Is there something similar in Windows NT/2000?
Thanks
Pamitha
S/W Engineer
www.nesttech.net
Pamitha,
You can use IoCallDriver to communicate with any driver, not
just one in the same device stack. Use IoGetDeviceObjectPointer
to get a pointer to the device object, then call the driver as needed.
Note, if you are looking to do a lot of communication with specialized
interfaces you may wish to setup an IOCTL in the driver called to
allow passing a block of procedure pointers, so that one driver may
directly call the code in another.
Don Burn
NT Driver and Filesystem consulting
----- Original Message -----
From: “PAMITHA”
To: “NT Developers Interest List”
Sent: Saturday, September 23, 2000 8:02 AM
Subject: [ntdev] Talking to driver not in the same device stack
> Hi,
>
> In Windows 98, the PE Loader Services provide some APIs, to communicate
> between two drivers. Is there something similar in Windows NT/2000?
>
> Thanks
> Pamitha
> S/W Engineer
> www.nesttech.net
>
>
> —
> You are currently subscribed to ntdev as: xxxxx@acm.org
> To unsubscribe send a blank email to $subst(‘Email.Unsub’)
>
Look into the Window NT/2000 DDK about making a kernel mode DLL. It is
really a driver that can be linked to by another driver. Examples are
SMCLIB.SYS for SmartCards and CLASSPNP.SYS which is a support driver for
DISK.SYS. The source code for DISK.SYS and CLASSPNP.SYS are available in
the Windows 2000 DDK. You can open any device object you can find and send
requests to it too.
----- Original Message -----
From: “PAMITHA”
To: “NT Developers Interest List”
Sent: Saturday, September 23, 2000 8:02 AM
Subject: [ntdev] Talking to driver not in the same device stack
> Hi,
>
> In Windows 98, the PE Loader Services provide some APIs, to communicate
> between two drivers. Is there something similar in Windows NT/2000?
>
> Thanks
> Pamitha
> S/W Engineer
> www.nesttech.net
>
>
> —
> You are currently subscribed to ntdev as: xxxxx@mindspring.com
> To unsubscribe send a blank email to $subst(‘Email.Unsub’)
>
Look into the Window NT/2000 DDK about making a kernel mode DLL. It is
really a driver that can be linked to by another driver. Examples are
SMCLIB.SYS for SmartCards and CLASSPNP.SYS which is a support
SCSIPORT in NT4 (and maybe in w2k too) is a kernel-mode DLL.
Kernel-mode DLL is a .SYS file which has no CurrentControlSet\Services entry
for it.
If can be loaded only by ZwSetSystemInformation or (usual way) by import
resolution in some other .SYS binary.
There is no driver object for a kernel-mode DLL. Its DriverEntry routine is
never called.
I have strong doubts whether this is possible to unload the kernel-mode DLL
in NT4.
If you want the LoadLibrary/GetProcAddress functionality in the kernel - use
the full driver with the service database entry, use ZwLoadDriver +
ObReferenceObjectByName to open it, then locate the image start in the
driver object and parse the PE headers manually to implement GetProcAddress.
Max
If you are talking to a PNP driver, then your driver must register for
appropriate PnP notification and handle messages. Otherwise, you will
prevent the other driver from being disabled or uninstalled. The Toastmon on
sample (src\general\toaster\toastmon) in the Win2K SP1 DDK shows how to
interact with another driver in a PNP friendly way.
-Eliyas
-----Original Message-----
From: Don Burn [mailto:xxxxx@acm.org]
Sent: Saturday, September 23, 2000 6:19 AM
To: NT Developers Interest List
Subject: [ntdev] Re: Talking to driver not in the same device stack
Pamitha,
You can use IoCallDriver to communicate with any driver, not
just one in the same device stack. Use IoGetDeviceObjectPointer
to get a pointer to the device object, then call the driver as needed.
Note, if you are looking to do a lot of communication with specialized
interfaces you may wish to setup an IOCTL in the driver called to
allow passing a block of procedure pointers, so that one driver may
directly call the code in another.
Don Burn
NT Driver and Filesystem consulting
----- Original Message -----
From: “PAMITHA”
To: “NT Developers Interest List”
Sent: Saturday, September 23, 2000 8:02 AM
Subject: [ntdev] Talking to driver not in the same device stack
> Hi,
>
> In Windows 98, the PE Loader Services provide some APIs, to communicate
> between two drivers. Is there something similar in Windows NT/2000?
>
> Thanks
> Pamitha
> S/W Engineer
> www.nesttech.net
>
>
> —
> You are currently subscribed to ntdev as: xxxxx@acm.org
> To unsubscribe send a blank email to $subst(‘Email.Unsub’)
>
—
You are currently subscribed to ntdev as: xxxxx@microsoft.com
To unsubscribe send a blank email to $subst(‘Email.Unsub’)